From: Julia Lawall <julia.lawall@inria.fr>
To: Comfort Oyewole <coyewole7@gmail.com>
Cc: gregkh@linuxfoundation.org, andy@kernel.org,
oe-kbuild-all@lists.linux.dev, outreachy@lists.linux.dev,
linux-staging@lists.linux.dev, linux-fbdev@vger.kernel.org,
Julia.Lawall@inria.fr
Subject: Re: [PATCH v2] staging: fbtft: remove trailing semicolons from macro definitionsandy@kernel.org
Date: Mon, 19 Oct 2026 07:08:00 -0400 (EDT) [thread overview]
Message-ID: <f647826f-2686-dc67-cff6-9e8810aa565@inria.fr> (raw)
In-Reply-To: <202610191356.9yPxs182-lkp@intel.com>
On Mon, 19 Oct 2026, kernel test robot wrote:
> Hi Comfort,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on staging/staging-testing]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Comfort-Oyewole/staging-fbtft-remove-trailing-semicolons-from-macro-definitionsandy-kernel-org/20261018-185028
> base: staging/staging-testing
> patch link: https://lore.kernel.org/r/atUG5LbCbePRNn5M%40ubuntu
> patch subject: [PATCH v2] staging: fbtft: remove trailing semicolons from macro definitionsandy@kernel.org
> config: sh-randconfig-1001-20261019 (https://download.01.org/0day-ci/archive/20261019/202610191356.9yPxs182-lkp@intel.com/config)
> compiler: sh4-linux-gcc (GCC) 16.2.0
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261019/202610191356.9yPxs182-lkp@intel.com/reproduce)
Comfort,
Did you compile your kernel? You need to check that you get a .o file for
every files that you modify. But that is not a 100% guarantee, when the
change you make are under an #ifdef. In that case, you have to check that
the containing #ifdefs resolve to true so the code is compiled. If it
seems complex, you can try adding an error at the point of the code you
modified to be sure that compiling gives the corresponding error message.
julia
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202610191356.9yPxs182-lkp@intel.com/
>
> All error/warnings (new ones prefixed by >>):
>
> 284 | static int fbtft_driver_probe_spi(struct spi_device *spi) \
> | ^~~~~~
> drivers/staging/fbtft/fbtft.h:366:1: note: in expansion of macro 'FBTFT_SPI_DRIVER'
> 366 | FBTFT_SPI_DRIVER(_name, _comp_vend "," _comp_dev, _display, spi_ids) \
> | ^~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:302:18: error: 'fbtft_driver_probe_spi' undeclared here (not in a function); did you mean 'fbtft_driver_remove_spi'?
> 302 | .probe = fbtft_driver_probe_spi, \
> | ^~~~~~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:366:1: note: in expansion of macro 'FBTFT_SPI_DRIVER'
> 366 | FBTFT_SPI_DRIVER(_name, _comp_vend "," _comp_dev, _display, spi_ids) \
> | ^~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/linux/device.h:32,
> from include/linux/acpi.h:15,
> from include/linux/i2c.h:13,
> from include/uapi/linux/fb.h:6,
> from include/linux/fb.h:5,
> from drivers/staging/fbtft/fbtft.h:7:
> include/linux/device/driver.h:267:1: error: expected ',' or ';' before 'static'
> 267 | static int __init __driver##_init(void) \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c: In function '__inittest':
> drivers/staging/fbtft/fbtft.h:368:19: error: 'fbtft_driver_spi_driver_init' undeclared (first use in this function); did you mean 'fbtft_driver_spi_driver'?
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> include/linux/module.h:133:18: note: in definition of macro 'module_init'
> 133 | { return initfn; } \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:19: note: each undeclared identifier is reported only once for each function it appears in
> include/linux/module.h:133:18: note: in definition of macro 'module_init'
> 133 | { return initfn; } \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/linux/compiler_types.h:88,
> from <command-line>:
> drivers/staging/fbtft/fb_sh1106.c: At top level:
> drivers/staging/fbtft/fbtft.h:368:19: error: 'fbtft_driver_spi_driver_init' undeclared here (not in a function); did you mean 'fbtft_driver_spi_driver'?
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> include/linux/compiler_attributes.h:92:65: note: in definition of macro '__copy'
> 92 | # define __copy(symbol) __attribute__((__copy__(symbol)))
> | ^~~~~~
> include/linux/device/driver.h:271:1: note: in expansion of macro 'module_init'
> 271 | module_init(__driver##_init); \
> | ^~~~~~~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/module.h:134:13: error: 'init_module' aliased to undefined symbol 'fbtft_driver_spi_driver_init'
> 134 | int init_module(void) __copy(initfn) \
> | ^~~~~~~~~~~
> include/linux/device/driver.h:271:1: note: in expansion of macro 'module_init'
> 271 | module_init(__driver##_init); \
> | ^~~~~~~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> >> include/linux/module.h:247:17: error: '__mod_device_table__kmod_fb_sh1106__spi__spi_ids' aliased to undefined symbol 'spi_ids'
> 247 | __PASTE(__mod_device_table__, \
> | ^~~~~~~~~~~~~~~~~~~~
> include/linux/compiler_types.h:15:24: note: in definition of macro '___PASTE'
> 15 | #define ___PASTE(a, b) a##b
> | ^
> include/linux/module.h:247:9: note: in expansion of macro '__PASTE'
> 247 | __PASTE(__mod_device_table__, \
> | ^~~~~~~
> include/linux/module.h:256:21: note: in expansion of macro '__mod_device_table'
> 256 | static typeof(name) __mod_device_table(type, name) \
> | ^~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fbtft.h:364:1: note: in expansion of macro 'MODULE_DEVICE_TABLE'
> 364 | MODULE_DEVICE_TABLE(spi, spi_ids) \
> | ^~~~~~~~~~~~~~~~~~~
> drivers/staging/fbtft/fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> >> drivers/staging/fbtft/fb_sh1106.c:154:29: warning: 'display' defined but not used [-Wunused-variable]
> 154 | static struct fbtft_display display = {
> | ^~~~~~~
> --
> 284 | static int fbtft_driver_probe_spi(struct spi_device *spi) \
> | ^~~~~~
> fbtft.h:366:1: note: in expansion of macro 'FBTFT_SPI_DRIVER'
> 366 | FBTFT_SPI_DRIVER(_name, _comp_vend "," _comp_dev, _display, spi_ids) \
> | ^~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> fbtft.h:302:18: error: 'fbtft_driver_probe_spi' undeclared here (not in a function); did you mean 'fbtft_driver_remove_spi'?
> 302 | .probe = fbtft_driver_probe_spi, \
> | ^~~~~~~~~~~~~~~~~~~~~~
> fbtft.h:366:1: note: in expansion of macro 'FBTFT_SPI_DRIVER'
> 366 | FBTFT_SPI_DRIVER(_name, _comp_vend "," _comp_dev, _display, spi_ids) \
> | ^~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/linux/device.h:32,
> from include/linux/acpi.h:15,
> from include/linux/i2c.h:13,
> from include/uapi/linux/fb.h:6,
> from include/linux/fb.h:5,
> from fbtft.h:7:
> include/linux/device/driver.h:267:1: error: expected ',' or ';' before 'static'
> 267 | static int __init __driver##_init(void) \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> fb_sh1106.c: In function '__inittest':
> fbtft.h:368:19: error: 'fbtft_driver_spi_driver_init' undeclared (first use in this function); did you mean 'fbtft_driver_spi_driver'?
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> include/linux/module.h:133:18: note: in definition of macro 'module_init'
> 133 | { return initfn; } \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> fbtft.h:368:19: note: each undeclared identifier is reported only once for each function it appears in
> include/linux/module.h:133:18: note: in definition of macro 'module_init'
> 133 | { return initfn; } \
> | ^~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> In file included from include/linux/compiler_types.h:88,
> from <command-line>:
> fb_sh1106.c: At top level:
> fbtft.h:368:19: error: 'fbtft_driver_spi_driver_init' undeclared here (not in a function); did you mean 'fbtft_driver_spi_driver'?
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~~~~~~~
> include/linux/compiler_attributes.h:92:65: note: in definition of macro '__copy'
> 92 | # define __copy(symbol) __attribute__((__copy__(symbol)))
> | ^~~~~~
> include/linux/device/driver.h:271:1: note: in expansion of macro 'module_init'
> 271 | module_init(__driver##_init); \
> | ^~~~~~~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/module.h:134:13: error: 'init_module' aliased to undefined symbol 'fbtft_driver_spi_driver_init'
> 134 | int init_module(void) __copy(initfn) \
> | ^~~~~~~~~~~
> include/linux/device/driver.h:271:1: note: in expansion of macro 'module_init'
> 271 | module_init(__driver##_init); \
> | ^~~~~~~~~~~
> include/linux/spi/spi.h:408:9: note: in expansion of macro 'module_driver'
> 408 | module_driver(__spi_driver, spi_register_driver, \
> | ^~~~~~~~~~~~~
> fbtft.h:368:1: note: in expansion of macro 'module_spi_driver'
> 368 | module_spi_driver(fbtft_driver_spi_driver)
> | ^~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> >> include/linux/module.h:247:17: error: '__mod_device_table__kmod_fb_sh1106__spi__spi_ids' aliased to undefined symbol 'spi_ids'
> 247 | __PASTE(__mod_device_table__, \
> | ^~~~~~~~~~~~~~~~~~~~
> include/linux/compiler_types.h:15:24: note: in definition of macro '___PASTE'
> 15 | #define ___PASTE(a, b) a##b
> | ^
> include/linux/module.h:247:9: note: in expansion of macro '__PASTE'
> 247 | __PASTE(__mod_device_table__, \
> | ^~~~~~~
> include/linux/module.h:256:21: note: in expansion of macro '__mod_device_table'
> 256 | static typeof(name) __mod_device_table(type, name) \
> | ^~~~~~~~~~~~~~~~~~
> fbtft.h:364:1: note: in expansion of macro 'MODULE_DEVICE_TABLE'
> 364 | MODULE_DEVICE_TABLE(spi, spi_ids) \
> | ^~~~~~~~~~~~~~~~~~~
> fb_sh1106.c:173:1: note: in expansion of macro 'FBTFT_REGISTER_SPI_DRIVER'
> 173 | FBTFT_REGISTER_SPI_DRIVER(DRVNAME, "sinowealth", "sh1106", &display);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~
> fb_sh1106.c:154:29: warning: 'display' defined but not used [-Wunused-variable]
> 154 | static struct fbtft_display display = {
> | ^~~~~~~
>
>
> vim +247 include/linux/module.h
>
> ^1da177e4c3f415 Linus Torvalds 2005-04-16 240
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 241 /*
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 242 * Format: __mod_device_table__kmod_<modname>__<type>__<name>
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 243 * Parts of the string `__kmod_` and `__` are used as delimiters when parsing
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 244 * a symbol in file2alias.c
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 245 */
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 246 #define __mod_device_table(type, name) \
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 @247 __PASTE(__mod_device_table__, \
> 9025688bf6d427e Josh Poimboeuf 2025-10-20 248 __PASTE(kmod_, \
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 249 __PASTE(__KBUILD_MODNAME, \
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 250 __PASTE(__, \
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 251 __PASTE(type, \
> 9025688bf6d427e Josh Poimboeuf 2025-10-20 252 __PASTE(__, name))))))
> 83fb49389bbe07d Alexey Gladkov 2025-09-18 253
>
> --
> 0-DAY CI Kernel Test Service
> https://github.com/intel/lkp-tests/wiki
>
next prev parent reply other threads:[~2026-10-19 11:08 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-18 17:50 [PATCH v2] staging: fbtft: remove trailing semicolons from macro definitionsandy@kernel.org Comfort Oyewole
2026-10-19 3:44 ` kernel test robot
2026-10-19 11:08 ` Julia Lawall [this message]
2026-10-19 4:05 ` kernel test robot
2026-10-19 9:32 ` Andy Shevchenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f647826f-2686-dc67-cff6-9e8810aa565@inria.fr \
--to=julia.lawall@inria.fr \
--cc=andy@kernel.org \
--cc=coyewole7@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-fbdev@vger.kernel.org \
--cc=linux-staging@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=outreachy@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox