Hi Daniel,
[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on 10b82d5176488acee2820e5a2cf0f2ec5c3488b6]
url:
https://github.com/0day-ci/linux/commits/Daniel-Latypov/kunit-introduce-c...
base: 10b82d5176488acee2820e5a2cf0f2ec5c3488b6
config: powerpc64-randconfig-r031-20201012 (attached as .config)
compiler: clang version 12.0.0 (
https://github.com/llvm/llvm-project
a324d8f964bf421fa7d8b882b0f64ead28c4149c)
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# install powerpc64 cross compiling tool for clang build
# apt-get install binutils-powerpc64-linux-gnu
#
https://github.com/0day-ci/linux/commit/6189c327549d0bbce5bb21f28fb607f7e...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Daniel-Latypov/kunit-introduce-class-mocking-support/20201013-062218
git checkout 6189c327549d0bbce5bb21f28fb607f7ea04976e
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
> lib/kunit/common-mocks.c:105:1: warning: no previous prototype
for function 'to_mock_u8_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(u8);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:55:1: note: expanded from here
to_mock_u8_matcher
^
lib/kunit/common-mocks.c:105:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:106:1: warning: no previous prototype
for function 'to_mock_u16_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(u16);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:168:1: note: expanded from here
to_mock_u16_matcher
^
lib/kunit/common-mocks.c:106:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:107:1: warning: no previous prototype
for function 'to_mock_u32_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(u32);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:281:1: note: expanded from here
to_mock_u32_matcher
^
lib/kunit/common-mocks.c:107:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:108:1: warning: no previous prototype
for function 'to_mock_u64_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(u64);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:89:1: note: expanded from here
to_mock_u64_matcher
^
lib/kunit/common-mocks.c:108:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:64:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:65:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:92:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ne, !=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:92:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ne, !=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
--
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:65:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:98:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ge, >=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:98:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ge, >=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:98:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ge, >=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:64:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:98:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ge, >=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:65:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:100:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, gt, >) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:100:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, gt, >) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:100:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, gt, >) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:64:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:108:1: warning: format specifies type 'int' but the
argument has type 'u64' (aka 'unsigned long long') [-Wformat]
DEFINE_MATCHER(u64);
^~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:100:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, gt, >) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:65:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
> lib/kunit/common-mocks.c:109:1: warning: no previous prototype
for function 'to_mock_char_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(char);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:202:1: note: expanded from here
to_mock_char_matcher
^
lib/kunit/common-mocks.c:109:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:110:1: warning: no previous prototype
for function 'to_mock_uchar_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER_WITH_TYPENAME(uchar, unsigned char);
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:6:1: note: expanded from here
to_mock_uchar_matcher
^
lib/kunit/common-mocks.c:110:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:111:1: warning: no previous prototype
for function 'to_mock_schar_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER_WITH_TYPENAME(schar, signed char);
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:119:1: note: expanded from here
to_mock_schar_matcher
^
lib/kunit/common-mocks.c:111:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:112:1: warning: no previous prototype
for function 'to_mock_short_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(short);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:232:1: note: expanded from here
to_mock_short_matcher
^
lib/kunit/common-mocks.c:112:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:113:1: warning: no previous prototype
for function 'to_mock_ushort_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER_WITH_TYPENAME(ushort, unsigned short);
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:67:1: note: expanded from here
to_mock_ushort_matcher
^
lib/kunit/common-mocks.c:113:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:114:1: warning: no previous prototype
for function 'to_mock_int_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(int);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:180:1: note: expanded from here
to_mock_int_matcher
^
lib/kunit/common-mocks.c:114:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:115:1: warning: no previous prototype
for function 'to_mock_uint_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER_WITH_TYPENAME(uint, unsigned int);
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:7:1: note: expanded from here
to_mock_uint_matcher
^
lib/kunit/common-mocks.c:115:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
> lib/kunit/common-mocks.c:116:1: warning: no previous prototype
for function 'to_mock_long_matcher' [-Wmissing-prototypes]
DEFINE_MATCHER(long);
^
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:37:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
to_mock_##type_name##_matcher( \
^
<scratch space>:120:1: note: expanded from here
to_mock_long_matcher
^
lib/kunit/common-mocks.c:116:1: note: declare 'static' if the function is not
intended to be used outside of this translation unit
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^
lib/kunit/common-mocks.c:89:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_TO_MATCHER_STRUCT(type_name) \
^
lib/kunit/common-mocks.c:36:3: note: expanded from macro
'DEFINE_TO_MATCHER_STRUCT'
struct mock_##type_name##_matcher * \
^
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:64:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:90:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, eq, ==) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:65:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:92:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ne, !=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:59:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
actual, \
^~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
#define DEFINE_MATCHER(type) DEFINE_MATCHER_WITH_TYPENAME(type, type)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:92:3: note: expanded from macro
'DEFINE_MATCHER_WITH_TYPENAME'
DEFINE_MATCH_FUNC(type_name, type, ne, !=) \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:60:8: note: expanded from macro 'DEFINE_MATCH_FUNC'
matcher->expected); \
^~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:116:1: warning: format specifies type 'int' but the
argument has type 'long' [-Wformat]
DEFINE_MATCHER(long);
^~~~~~~~~~~~~~~~~~~~
lib/kunit/common-mocks.c:103:30: note: expanded from macro 'DEFINE_MATCHER'
..
vim +/to_mock_u8_matcher +105 lib/kunit/common-mocks.c
104
105 DEFINE_MATCHER(u8);
106 DEFINE_MATCHER(u16);
107 DEFINE_MATCHER(u32);
108 DEFINE_MATCHER(u64);
109 DEFINE_MATCHER(char);
110 DEFINE_MATCHER_WITH_TYPENAME(uchar, unsigned char);
111 DEFINE_MATCHER_WITH_TYPENAME(schar, signed char);
112 DEFINE_MATCHER(short);
113 DEFINE_MATCHER_WITH_TYPENAME(ushort, unsigned short);
114 DEFINE_MATCHER(int);
115 DEFINE_MATCHER_WITH_TYPENAME(uint, unsigned int);
116 DEFINE_MATCHER(long);
117 DEFINE_MATCHER_WITH_TYPENAME(ulong, unsigned long);
118 DEFINE_MATCHER_WITH_TYPENAME(longlong, long long);
119 DEFINE_MATCHER_WITH_TYPENAME(ulonglong, unsigned long long);
120
121 DEFINE_MATCHER_WITH_TYPENAME(ptr, void *);
122
123 struct mock_memeq_matcher {
124 struct mock_param_matcher matcher;
125 const void *expected;
126 size_t size;
127 };
128
129 static bool match_memeq(struct mock_param_matcher *pmatcher,
130 struct kunit_stream *stream,
131 const void *pactual)
132 {
133 struct mock_memeq_matcher *matcher =
134 container_of(pmatcher,
135 struct mock_memeq_matcher,
136 matcher);
137 const void *actual = CONVERT_TO_ACTUAL_TYPE(const void *, pactual);
138 bool matches = !memcmp(actual, matcher->expected, matcher->size);
139 int i;
140
141 for (i = 0; i < matcher->size; i++)
142 kunit_stream_add(stream, "%02x, ", ((const char *) actual)[i]);
143 if (matches)
144 kunit_stream_add(stream, "== ");
145 else
146 kunit_stream_add(stream, "!= ");
147 for (i = 0; i < matcher->size; i++)
148 kunit_stream_add(stream,
149 "%02x, ",
150 ((const char *) matcher->expected)[i]);
151
152 return matches;
153 }
154
155 struct mock_param_matcher *kunit_memeq(struct kunit *test,
156 const void *buf,
157 size_t size)
158 {
159 struct mock_memeq_matcher *matcher;
160
161 matcher = kunit_kzalloc(test, sizeof(*matcher), GFP_KERNEL);
162 if (!matcher)
163 return NULL;
164
165 matcher->matcher.match = match_memeq;
166 matcher->expected = buf;
167 matcher->size = size;
168
169 return &matcher->matcher;
170 }
171
172 struct mock_streq_matcher {
173 struct mock_param_matcher matcher;
174 const char *expected;
175 };
176
177 static bool match_streq(struct mock_param_matcher *pmatcher,
178 struct kunit_stream *stream,
179 const void *pactual)
180 {
181 struct mock_streq_matcher *matcher =
182 container_of(pmatcher,
183 struct mock_streq_matcher,
184 matcher);
185 const char *actual = CONVERT_TO_ACTUAL_TYPE(const char *, pactual);
186 bool matches = !strcmp(actual, matcher->expected);
187
188 if (matches)
189 kunit_stream_add(stream, "%s == %s", actual, matcher->expected);
190 else
191 kunit_stream_add(stream, "%s != %s", actual, matcher->expected);
192
193 return matches;
194 }
195
196 struct mock_param_matcher *kunit_streq(struct kunit *test, const char *str)
197 {
198 struct mock_streq_matcher *matcher;
199
200 matcher = kunit_kzalloc(test, sizeof(*matcher), GFP_KERNEL);
201 if (!matcher)
202 return NULL;
203
204 matcher->matcher.match = match_streq;
205 matcher->expected = str;
206
207 return &matcher->matcher;
208 }
209
210 #define DEFINE_RETURN_ACTION_STRUCT(type_name, type) \
211 struct mock_##type_name##_action { \
212 struct mock_action action; \
213 type ret; \
214 }
215
216 #define DEFINE_RETURN_ACTION_FUNC(type_name, type) \
217 void *do_##type_name##_return(struct mock_action *paction, \
218 const void **params, \
219 int len) \
220 { \
221 struct mock_##type_name##_action *action = \
222 container_of(paction, \
223 struct mock_##type_name##_action,\
224 action); \
225 \
226 return (void *) &action->ret; \
227 }
228
229 #define DEFINE_RETURN_ACTION_FACTORY(type_name, type) \
230 struct mock_action *kunit_##type_name##_return( \
231 struct kunit *test, \
232 type ret) \
233 { \
234 struct mock_##type_name##_action *action; \
235 \
236 action = kunit_kmalloc(test, \
237 sizeof(*action), \
238 GFP_KERNEL); \
239 if (!action) \
240 return NULL; \
241 \
242 action->action.do_action = do_##type_name##_return; \
243 action->ret = ret; \
244 \
245 return &action->action; \
246 }
247
248 #define DEFINE_RETURN_ACTION_WITH_TYPENAME(type_name, type) \
249 DEFINE_RETURN_ACTION_STRUCT(type_name, type); \
250 DEFINE_RETURN_ACTION_FUNC(type_name, type); \
251 DEFINE_RETURN_ACTION_FACTORY(type_name, type)
252
253 #define DEFINE_RETURN_ACTION(type) \
254 DEFINE_RETURN_ACTION_WITH_TYPENAME(type, type)
255
256 DEFINE_RETURN_ACTION(u8);
257 DEFINE_RETURN_ACTION(u16);
258 DEFINE_RETURN_ACTION(u32);
259 DEFINE_RETURN_ACTION(u64);
260 DEFINE_RETURN_ACTION(char);
261 DEFINE_RETURN_ACTION_WITH_TYPENAME(uchar, unsigned char);
262 DEFINE_RETURN_ACTION_WITH_TYPENAME(schar, signed char);
263 DEFINE_RETURN_ACTION(short);
264 DEFINE_RETURN_ACTION_WITH_TYPENAME(ushort, unsigned short);
265 DEFINE_RETURN_ACTION(int);
266 DEFINE_RETURN_ACTION_WITH_TYPENAME(uint, unsigned int);
267 DEFINE_RETURN_ACTION(long);
268 DEFINE_RETURN_ACTION_WITH_TYPENAME(ulong, unsigned long);
269 DEFINE_RETURN_ACTION_WITH_TYPENAME(longlong, long long);
270 DEFINE_RETURN_ACTION_WITH_TYPENAME(ulonglong, unsigned long long);
271 DEFINE_RETURN_ACTION_WITH_TYPENAME(ptr, void *);
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org