linux/arch/powerpc/boot
Michael Ellerman 1619b69edc powerpc/boot: Fix build failure since GCC 4.9 removal
Stephen reported that the build was broken since commit
6d2ef226f2 ("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 77433830ed ("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>
2021-09-14 08:33:32 -07:00
..
dts
.gitignore
4xx.c
4xx.h
44x.h
Makefile
README
addnote.c
bamboo.c
cpm-serial.c
crt0.S
crtsavres.S
cuboot-8xx.c
cuboot-52xx.c
cuboot-83xx.c
cuboot-85xx-cpm2.c
cuboot-85xx.c
cuboot-824x.c
cuboot-acadia.c
cuboot-amigaone.c
cuboot-bamboo.c
cuboot-ebony.c
cuboot-hotfoot.c
cuboot-katmai.c
cuboot-kilauea.c
cuboot-mpc7448hpc2.c
cuboot-pq2.c
cuboot-rainier.c
cuboot-sam440ep.c
cuboot-sequoia.c
cuboot-taishan.c
cuboot-warp.c
cuboot-yosemite.c
cuboot.c
cuboot.h
dcr.h
decompress.c
devtree.c
div64.S
dummy.c
ebony.c
elf.h
elf_util.c
ep88xc.c
ep8248e.c
epapr-wrapper.c
epapr.c
fixed-head.S
fixup-headers.sed
fsl-soc.c
fsl-soc.h
gamecube-head.S
gamecube.c
hack-coff.c
holly.c
install.sh
io.h
libfdt-wrapper.c
libfdt_env.h
main.c
microwatt.c
mktree.c
motload-head.S
mpc8xx.c
mpc8xx.h
mpc52xx-psc.c
mvme5100.c
mvme7100.c
ns16550.c
of.c
of.h
ofconsole.c
oflib.c
opal-calls.S
opal.c
ops.h
page.h
planetcore.c
planetcore.h
ppc_asm.h
ppcboot-hotfoot.h
ppcboot.h
pq2.c
pq2.h
ps3-head.S
ps3-hvcall.S
ps3.c
pseries-head.S
redboot-8xx.c
redboot-83xx.c
redboot.h
reg.h
rs6000.h
serial.c
simple_alloc.c
simpleboot.c
stdbool.h
stdint.h
stdio.c
stdio.h
stdlib.c
stdlib.h
string.S
string.h
swab.h
treeboot-akebono.c
treeboot-bamboo.c
treeboot-currituck.c
treeboot-ebony.c
treeboot-iss4xx.c
types.h
ugecon.c
ugecon.h
util.S
wii-head.S
wii.c
wrapper
xz_config.h
zImage.coff.lds.S
zImage.lds.S
zImage.ps3.lds.S

README

To extract the kernel vmlinux, System.map, .config or initrd from the zImage binary:

objcopy -j .kernel:vmlinux -O binary zImage vmlinux.gz
objcopy -j .kernel:System.map -O binary zImage System.map.gz
objcopy -j .kernel:.config -O binary zImage config.gz
objcopy -j .kernel:initrd -O binary zImage.initrd initrd.gz


	Peter