From e922d1eaa3774a68c96eae01e0fd08f8a30cda8c Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 10 Nov 2023 11:37:27 +0000 Subject: Add ability to change linker warning messages into errors when reporting executable stacks and/or executable segments. include * bfdlink.h (struct bfd_link_info): Update descriptions of the 'execstack', 'noexecstack' and 'warn_execstack' fields. Add 'error_exectack' and 'warn_is_error_for_rwx_segments' fields. bfd * elf.c (assign_file_positions_except_relocs): Turn warnings about executable segments into errors if so requested. * elflink.c (bfd_elf_size_dynamic_sections): Turn warnings about executable stacks into errors if so requested. ld * ldlex.h (enum option_values): Add OPTION_ERROR_EXECSTACK, OPTION_NO_ERROR_EXECSTACK, OPTION_WARN_EXECSTACK_OBJECTS, OPTION_ERROR_RWX_SEGMENTS and OPTION_NO_ERROR_RWX_SEGMENTS. (struct ld_option): Add new long options. (parse_args): Parse new long options. (elf_static_list_options): Display the new options. * ld.texi: Document the new command line options. * configure.ac (error-execstack): New configuration option. (error-rwx-segments): New configuration option. * emultempl/elf.em (_before_parse): Initialse the new linkinfo fields. * NEWS: Mention the new features. * config.in: Regenerate. * configure: Regenerate. * testsuite/ld-elf/commonpage2.d: Disable errors for RWX segments and/or executable stacks. * testsuite/ld-elf/elf.exp: Likewise. * testsuite/ld-elf/header.d: Likewise. * testsuite/ld-elf/loadaddr1.d: Likewise. * testsuite/ld-elf/loadaddr2.d: Likewise. * testsuite/ld-elf/maxpage4.d: Likewise. * testsuite/ld-elf/nobits-1.d: Likewise. * testsuite/ld-elf/note-1.d: Likewise. * testsuite/ld-elf/orphan-10.d: Likewise. * testsuite/ld-elf/orphan-11.d: Likewise. * testsuite/ld-elf/orphan-12.d: Likewise. * testsuite/ld-elf/orphan-5.d: Likewise. * testsuite/ld-elf/orphan-7.d: Likewise. * testsuite/ld-elf/orphan-8.d: Likewise. * testsuite/ld-elf/orphan-9.d: Likewise. * testsuite/ld-elf/orphan-region.d: Likewise. * testsuite/ld-elf/orphan.d: Likewise. * testsuite/ld-elf/pr19539.d: Likewise. * testsuite/ld-elf/pr26256-1a.d: Likewise. * testsuite/ld-elf/pr26907.d: Likewise. * testsuite/ld-elf/pr28597.d: Likewise. * testsuite/ld-elf/retain2.d: Likewise. * testsuite/ld-elf/shared.exp: Likewise. * testsuite/ld-elf/size-1.d: Likewise. * testsuite/ld-elf/textaddr7.d: Likewise. * testsuite/ld-elf/warn1.d: Likewise. * testsuite/ld-elf/warn2.d: Likewise. * testsuite/ld-i386/discarded1.d: Likewise. * testsuite/ld-i386/pr19175.d: Likewise. * testsuite/ld-i386/pr19539.d: Likewise. * testsuite/ld-i386/pr23189.d: Likewise. * testsuite/ld-plugin/lto-3r.d: Likewise. * testsuite/ld-plugin/lto-5r.d: Likewise. * testsuite/ld-plugin/lto.exp: Likewise. * testsuite/ld-powerpc/ppc476-shared.d: Likewise. * testsuite/ld-powerpc/ppc476-shared2.d: Likewise. * testsuite/ld-powerpc/pr28827-2.d: Likewise. * testsuite/ld-s390/s390.exp: Likewise. * testsuite/ld-scripts/align2a.d: Likewise. * testsuite/ld-scripts/align2b.d: Likewise. * testsuite/ld-scripts/align5.d: Likewise. * testsuite/ld-scripts/alignof.exp: Likewise. * testsuite/ld-scripts/crossref.exp: Likewise. * testsuite/ld-scripts/defined2.d: Likewise. * testsuite/ld-scripts/defined3.d: Likewise. * testsuite/ld-scripts/defined5.d: Likewise. * testsuite/ld-scripts/pr14962.d: Likewise. * testsuite/ld-scripts/pr18963.d: Likewise. * testsuite/ld-scripts/pr20302.d: Likewise. * testsuite/ld-scripts/print-memory-usage.exp: Likewise. * testsuite/ld-scripts/rgn-at1.d: Likewise. * testsuite/ld-scripts/rgn-at10.d: Likewise. * testsuite/ld-scripts/rgn-at4.d: Likewise. * testsuite/ld-scripts/rgn-at6.d: Likewise. * testsuite/ld-scripts/rgn-at8.d: Likewise. * testsuite/ld-scripts/rgn-at9.d: Likewise. * testsuite/ld-scripts/rgn-over1.d: Likewise. * testsuite/ld-scripts/rgn-over2.d: Likewise. * testsuite/ld-scripts/rgn-over4.d: Likewise. * testsuite/ld-scripts/rgn-over5.d: Likewise. * testsuite/ld-scripts/rgn-over6.d: Likewise. * testsuite/ld-scripts/script.exp: Likewise. * testsuite/ld-scripts/sizeof.exp: Likewise. * testsuite/ld-scripts/sort-file.d: Likewise. * testsuite/ld-x86-64/discarded1.d: Likewise. * testsuite/ld-x86-64/pr19175.d: Likewise. * testsuite/ld-x86-64/pr19539a.d: Likewise. * testsuite/ld-x86-64/pr19539b.d: Likewise. * testsuite/ld-x86-64/pr23189.d: Likewise. --- ld/testsuite/ld-elf/shared.exp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'ld/testsuite/ld-elf/shared.exp') diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 1e7b7f1..a2b27f38 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -259,13 +259,13 @@ if { [check_gc_sections_available] } { "pr20828-v.so"] \ [list \ "PR ld/20828 forcibly exported symbol version without section GC" \ - "$LFLAGS --no-dynamic-linker -e foo -E -T pr20828-v.ld" "" "" \ + "$LFLAGS --no-dynamic-linker -e foo -E -T pr20828-v.ld --no-error-rwx-segments" "" "" \ {pr20828-v.s} \ {{objdump -p pr20828-v.od}} \ "pr20828-v-1"] \ [list \ "PR ld/20828 forcibly exported symbol version with section GC" \ - "$LFLAGS --no-dynamic-linker -e foo --gc-sections -E -T pr20828-v.ld" "" "" \ + "$LFLAGS --no-dynamic-linker -e foo --gc-sections -E -T pr20828-v.ld --no-error-rwx-segments" "" "" \ {pr20828-v.s} \ {{objdump -p pr20828-v.od}} \ "pr20828-v-2"]] @@ -282,7 +282,7 @@ if { [check_gc_sections_available] } { [list \ "PR ld/21233 dynamic symbols with section GC\ (auxiliary shared library)" \ - "$LFLAGS -shared -T pr21233.ld" "" "$AFLAGS_PIC" \ + "$LFLAGS -shared -T pr21233.ld --no-error-rwx-segments" "" "$AFLAGS_PIC" \ {pr21233-l.s} \ {{readelf --dyn-syms pr21233-l.sd}} \ "libpr21233.so"]] @@ -290,7 +290,7 @@ if { [check_gc_sections_available] } { run_ld_link_tests [list \ [list \ "PR ld/21233 dynamic symbols with section GC (--undefined)" \ - "$LFLAGS --gc-sections -e foo --undefined=bar -T pr21233.ld" \ + "$LFLAGS --gc-sections -e foo --undefined=bar -T pr21233.ld --no-error-rwx-segments" \ "tmpdir/libpr21233.so" "" \ {pr21233.s} \ {{readelf --dyn-syms pr21233.sd}} \ @@ -300,7 +300,7 @@ if { [check_gc_sections_available] } { [list \ "PR ld/21233 dynamic symbols with section GC (--require-defined)" \ "$LFLAGS --gc-sections -e foo --require-defined=bar\ - -T pr21233.ld" \ + -T pr21233.ld --no-error-rwx-segments" \ "tmpdir/libpr21233.so" "" \ {pr21233.s} \ {{readelf --dyn-syms pr21233.sd}} \ @@ -309,7 +309,7 @@ if { [check_gc_sections_available] } { run_ld_link_tests [list \ [list \ "PR ld/21233 dynamic symbols with section GC (EXTERN)" \ - "$LFLAGS --gc-sections -e foo -T pr21233-e.ld" \ + "$LFLAGS --gc-sections -e foo -T pr21233-e.ld --no-error-rwx-segments" \ "tmpdir/libpr21233.so" "" \ {pr21233.s} \ {{readelf --dyn-syms pr21233.sd}} \ -- cgit v1.1