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

Attachment: signature.asc
Description: PGP signature

Reply via email to