[PATCH] Makefile: Silence new GNU linker warnings

The next version of the linker will complain about rwx segments with permissions and executable stacks:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a... https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4...
These warnings are relevant for ELF binaries loaded by an operating system linker, but do not make sense in the context of u-boot where the objects are loaded by other means.
Disable the warnings using the following options:
--no-warn-rwx-segments
warning: u-boot has a LOAD segment with RWX permissions warning: u-boot-spl has a LOAD segment with RWX permissions
--no-warn-execstack
warning: arch/arm/lib/setjmp.o: missing .note.GNU-stack section implies executable stack NOTE: This behaviour is deprecated and will be removed in a future version of the linker
Signed-off-by: Joel Stanley joel@jms.id.au --- This behaviour can be seen when building with binutils 2.38.90.20220713-2 from Debian testing.
Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile index ff25f9297486..32aac7493f8d 100644 --- a/Makefile +++ b/Makefile @@ -432,7 +432,8 @@ KBUILD_CFLAGS := -Wall -Wstrict-prototypes \ -fno-builtin -ffreestanding $(CSTD_FLAG) KBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing KBUILD_AFLAGS := -D__ASSEMBLY__ -KBUILD_LDFLAGS := +KBUILD_LDFLAGS := $(call ld-option, --no-warn-rwx-segments) \ + $(call ld-option, --no-warn-execstack)
ifeq ($(cc-name),clang) ifneq ($(CROSS_COMPILE),)

On 8/2/22 10:30, Joel Stanley wrote:
The next version of the linker will complain about rwx segments with permissions and executable stacks:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a... https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4...
These warnings are relevant for ELF binaries loaded by an operating system linker, but do not make sense in the context of u-boot where the objects are loaded by other means.
The ELF binary can be loaded by OpenSBI or QEMU. The information about rwx segments can be relevant for these. Only if a non-ELF form is used it is irrelevant.
You should instead fix the single file that has a problem:
test/overlay/test-fdt-overlay-stacked.dtb.S
Just add the missing section information or change the build flags for this single binary.
Best regards
Heinrich
Disable the warnings using the following options:
--no-warn-rwx-segments
warning: u-boot has a LOAD segment with RWX permissions warning: u-boot-spl has a LOAD segment with RWX permissions
--no-warn-execstack
warning: arch/arm/lib/setjmp.o: missing .note.GNU-stack section implies executable stack NOTE: This behaviour is deprecated and will be removed in a future version of the linker
Signed-off-by: Joel Stanley joel@jms.id.au
This behaviour can be seen when building with binutils 2.38.90.20220713-2 from Debian testing.
Makefile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile index ff25f9297486..32aac7493f8d 100644 --- a/Makefile +++ b/Makefile @@ -432,7 +432,8 @@ KBUILD_CFLAGS := -Wall -Wstrict-prototypes \ -fno-builtin -ffreestanding $(CSTD_FLAG) KBUILD_CFLAGS += -fshort-wchar -fno-strict-aliasing KBUILD_AFLAGS := -D__ASSEMBLY__ -KBUILD_LDFLAGS := +KBUILD_LDFLAGS := $(call ld-option, --no-warn-rwx-segments) \
$(call ld-option, --no-warn-execstack)
ifeq ($(cc-name),clang) ifneq ($(CROSS_COMPILE),)

On Tue, 2 Aug 2022 at 10:45, Heinrich Schuchardt xypron.glpk@gmx.de wrote:
On 8/2/22 10:30, Joel Stanley wrote:
The next version of the linker will complain about rwx segments with permissions and executable stacks:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ba951afb99912da01a... https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=0d38576a34ec64a1b4...
These warnings are relevant for ELF binaries loaded by an operating system linker, but do not make sense in the context of u-boot where the objects are loaded by other means.
The ELF binary can be loaded by OpenSBI or QEMU. The information about rwx segments can be relevant for these. Only if a non-ELF form is used it is irrelevant.
I couldn't see where it was used in the qemu elf loader.
I had assumed the system would need an operating system and/or to be running with a MMU turned on to do anything sensible with the information.
You should instead fix the single file that has a problem:
test/overlay/test-fdt-overlay-stacked.dtb.S
I saw it triggering on a different set of files:
$ make evb-ast2600_defconfig && make CROSS_COMPILE=arm-linux-gnueabihf- -s -j8 # # configuration written to .config # arm-linux-gnueabihf-ld.bfd: warning: arch/arm/lib/lib1funcs.o: missing .note.GNU-stack section implies executable stack arm-linux-gnueabihf-ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker arm-linux-gnueabihf-ld.bfd: warning: u-boot has a LOAD segment with RWX permissions arm-linux-gnueabihf-ld.bfd: warning: arch/arm/lib/lib1funcs.o: missing .note.GNU-stack section implies executable stack arm-linux-gnueabihf-ld.bfd: NOTE: This behaviour is deprecated and will be removed in a future version of the linker arm-linux-gnueabihf-ld.bfd: warning: u-boot-spl has a LOAD segment with RWX permissions
Cheers,
Joel
participants (2)
-
Heinrich Schuchardt
-
Joel Stanley