]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/boot: Fix build failure since GCC 4.9 removal
authorMichael Ellerman <mpe@ellerman.id.au>
Tue, 14 Sep 2021 12:17:23 +0000 (22:17 +1000)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Sep 2021 15:33:32 +0000 (08:33 -0700)
commit0c8600bbb2ee8bdbb89edaeebecc533c2cdb9a11
treeb7664e35ee8c12a085144767f43ac40823a2aecf
parente91bf87c9078609d2570580dcb871dcb891ef6e0
powerpc/boot: Fix build failure since GCC 4.9 removal

Stephen reported that the build was broken since commit
de94ab4a795d ("compiler_attributes.h: drop __has_attribute() support for
gcc4"), with errors such as:

  include/linux/compiler_attributes.h:296:5: warning: "__has_attribute" is not defined, evaluates to 0 [-Wundef]
    296 | #if __has_attribute(__warning__)
        |     ^~~~~~~~~~~~~~~
  make[2]: *** [arch/powerpc/boot/Makefile:225: arch/powerpc/boot/crt0.o] Error 1

But we expect __has_attribute() to always be defined now that we've
stopped using GCC 4.

Linus debugged it to the point of reading the GCC sources, and noticing
that the problem is that __has_attribute() is not defined when
preprocessing assembly files, which is what we're doing here.

Our assembly files don't include, or need, compiler_attributes.h, but
they are getting it unconditionally from the -include in BOOT_CFLAGS,
which is then added in its entirety to BOOT_AFLAGS.

That -include was added in commit 575d553a25f3 ("powerpc: boot: include
compiler_attributes.h") so that we'd have "fallthrough" and other
attributes defined for the C files in arch/powerpc/boot. But it's not
needed for assembly files.

The minimal fix is to move the addition to BOOT_CFLAGS of -include
compiler_attributes.h until after we've copied BOOT_CFLAGS into
BOOT_AFLAGS. That avoids including compiler_attributes.h for asm files,
but makes no other change to BOOT_CFLAGS or BOOT_AFLAGS.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Debugged-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Tested-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/powerpc/boot/Makefile