On Thu, Aug 18, 2022 at 04:19:52PM +0000, Marcel Ziswiler wrote: > Hi there > > If one enables both CONFIG_IMX_BOOTAUX and CONFIG_LTO (e.g. just adding the > later to the verdin- > imx8mp_defconfig) one gets the following build failure: > > arch/arm/mach-imx/imx_bootaux.c:24:31: warning: type of ‘hostmap’ does not > match original declaration [-Wlto- > type-mismatch] > 24 | const __weak struct rproc_att hostmap[] = { }; > | ^ > arch/arm/mach-imx/imx8m/soc.c:1578:24: note: array types have different bounds > 1578 | const struct rproc_att hostmap[] = { > | ^ > arch/arm/mach-imx/imx8m/soc.c:1578:24: note: ‘hostmap’ was previously > declared here > > This is with Arm's gcc 10.3-2021.07 (arm-10.29). > > I tried the approach with adding pragmas around it e.g. as follows: > > #pragma GCC diagnostic push > #pragma GCC diagnostic ignored "-Wlto-type-mismatch" > const __weak struct rproc_att hostmap[] = { }; > #pragma GCC diagnostic pop > > But that does not seem to improve the situation. Is anybody more familiar > with this stuff and what exactly > needs to be done to fix this?
So it looks like LTO and weak const structures don't get along? I would file a gcc bug to see if it'll get fixed, or if we'll be told to stop doing that as it's a bad idea. That said, maybe we should rework the code in question? Is there a valid case to be building arch/arm/mach-imx/imx_bootaux.c and not have a non-empty hostmap defined? -- Tom
signature.asc
Description: PGP signature