From eab996435fe65a421541f59557c5f1fd427573a3 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Tue, 7 Nov 2023 13:58:32 +0100 Subject: [PATCH] ld/x86: reduce testsuite dependency on system object files PR ld/30722 Tests looking for certain .note-section recorded properties may not involve object files from the underlying platform (e.g. via using the C compiler for linking): Such object files may themselves have similar note sections, and hence they may influence the overall outcome. For now convert just the tests known to be affected by crt*.o coming with "ISA v3 needed" notes. Eventually other tests ought to be converted, too. --- ld/testsuite/ld-x86-64/property-stk.s | 25 +++ .../{property-x86-1.S => property-x86-1.s} | 15 +- .../{property-x86-2.S => property-x86-2.s} | 15 +- ld/testsuite/ld-x86-64/x86-64.exp | 170 +++++++++--------- 4 files changed, 131 insertions(+), 94 deletions(-) create mode 100644 ld/testsuite/ld-x86-64/property-stk.s rename ld/testsuite/ld-x86-64/{property-x86-1.S => property-x86-1.s} (75%) rename ld/testsuite/ld-x86-64/{property-x86-2.S => property-x86-2.s} (70%) diff --git a/ld/testsuite/ld-x86-64/property-stk.s b/ld/testsuite/ld-x86-64/property-stk.s new file mode 100644 index 00000000000..b3c7c4ee7af --- /dev/null +++ b/ld/testsuite/ld-x86-64/property-stk.s @@ -0,0 +1,25 @@ + .ifdef __64_bit__ + .equ ALIGN, 3 + .else + .equ ALIGN, 2 + .endif + + .section ".note.gnu.property", "a" + .p2align ALIGN + .long 1f - 0f /* name length. */ + .long 3f - 1f /* data length. */ + /* NT_GNU_PROPERTY_TYPE_0 */ + .long 5 /* note type. */ +0: + .asciz "GNU" /* vendor name. */ +1: + .p2align ALIGN + /* GNU_PROPERTY_STACK_SIZE */ + .long 1 /* pr_type. */ + .long 5f - 4f /* pr_datasz. */ +4: + .dc.a 0x800000 /* Stack size. */ +5: + .p2align ALIGN +3: + .section .note.GNU-stack diff --git a/ld/testsuite/ld-x86-64/property-x86-1.S b/ld/testsuite/ld-x86-64/property-x86-1.s similarity index 75% rename from ld/testsuite/ld-x86-64/property-x86-1.S rename to ld/testsuite/ld-x86-64/property-x86-1.s index 6d1d8fbaef5..3e3f707bacc 100644 --- a/ld/testsuite/ld-x86-64/property-x86-1.S +++ b/ld/testsuite/ld-x86-64/property-x86-1.s @@ -1,8 +1,9 @@ -#ifdef __LP64__ -# define ALIGN 3 -#else -# define ALIGN 2 -#endif + .ifdef __64_bit__ + .equ ALIGN, 3 + .else + .equ ALIGN, 2 + .endif + .section ".note.gnu.property", "a" .p2align ALIGN .long 1f - 0f /* name length. */ @@ -24,14 +25,14 @@ .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: - .long 0xa + .long 0xa /* GNU_PROPERTY_X86_ISA_1_V2 | GNU_PROPERTY_X86_ISA_1_V4 */ 5: .p2align ALIGN /* GNU_PROPERTY_X86_ISA_1_NEEDED */ .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: - .long 0x3 + .long 0x3 /* GNU_PROPERTY_X86_ISA_1_BASELINE | GNU_PROPERTY_X86_ISA_1_V2 */ 5: .p2align ALIGN 3: diff --git a/ld/testsuite/ld-x86-64/property-x86-2.S b/ld/testsuite/ld-x86-64/property-x86-2.s similarity index 70% rename from ld/testsuite/ld-x86-64/property-x86-2.S rename to ld/testsuite/ld-x86-64/property-x86-2.s index 613d5b21ce7..2c3b303f7ee 100644 --- a/ld/testsuite/ld-x86-64/property-x86-2.S +++ b/ld/testsuite/ld-x86-64/property-x86-2.s @@ -1,8 +1,9 @@ -#ifdef __LP64__ -# define ALIGN 3 -#else -# define ALIGN 2 -#endif + .ifdef __64_bit__ + .equ ALIGN, 3 + .else + .equ ALIGN, 2 + .endif + .section ".note.gnu.property", "a" .p2align ALIGN .long 1f - 0f /* name length. */ @@ -17,14 +18,14 @@ .long 0xc0010002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: - .long 0x3 + .long 0x3 /* GNU_PROPERTY_X86_ISA_1_BASELINE | GNU_PROPERTY_X86_ISA_1_V2 */ 5: .p2align ALIGN /* GNU_PROPERTY_X86_ISA_1_NEEDED */ .long 0xc0008002 /* pr_type. */ .long 5f - 4f /* pr_datasz. */ 4: - .long 0xa + .long 0xa /* GNU_PROPERTY_X86_ISA_1_V2 | GNU_PROPERTY_X86_ISA_1_V4 */ 5: .p2align ALIGN 3: diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp index 3dc8cb47192..71ecc92f081 100644 --- a/ld/testsuite/ld-x86-64/x86-64.exp +++ b/ld/testsuite/ld-x86-64/x86-64.exp @@ -1092,86 +1092,6 @@ if { [isnative] && [check_compiler_available] } { {{readelf {-n} property-2.r}} \ "property-2.so" \ ] \ - [list \ - "Build property 3" \ - "" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-stack.S property-x86-1.S} \ - {{readelf {-n} property-3.r}} \ - "property-3" \ - ] \ - [list \ - "Build property 3 (.o)" \ - "-r -nostdlib" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-x86-1.S property-stack.S} \ - {{readelf {-n} property-3a.r}} \ - "property-3.o" \ - ] \ - [list \ - "Build property 3 (.so)" \ - "-shared" \ - "-fPIC -Wa,-mx86-used-note=yes" \ - {property-x86-1.S pass.c property-stack.S} \ - {{readelf {-n} property-3.r}} \ - "property-3.so" \ - ] \ - [list \ - "Build property 4" \ - "" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-stack.S property-x86-1.S property-x86-2.S} \ - {{readelf {-n} property-4.r}} \ - "property-4" \ - ] \ - [list \ - "Build property 4 (.o)" \ - "-r -nostdlib" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-x86-2.S property-x86-1.S property-stack.S} \ - {{readelf {-n} property-4a.r}} \ - "property-4.o" \ - ] \ - [list \ - "Build property 4 (.so)" \ - "-shared" \ - "-fPIC -Wa,-mx86-used-note=yes" \ - {property-x86-2.S property-x86-1.S pass.c property-stack.S} \ - {{readelf {-n} property-4.r}} \ - "property-4.so" \ - ] \ - [list \ - "Build property 4 (-Wl,-z,stack-size=0)" \ - "-Wl,-z,stack-size=0" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-stack.S property-x86-1.S property-x86-2.S} \ - {{readelf {-n} property-4.r}} \ - "property-4" \ - ] \ - [list \ - "Build property 5" \ - "-Wl,-z,stack-size=0x900000" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-stack.S property-x86-1.S property-x86-2.S} \ - {{readelf {-n} property-5.r}} \ - "property-5" \ - ] \ - [list \ - "Build property 5 (.o)" \ - "-r -nostdlib -Wl,-z,stack-size=0x900000" \ - "-Wa,-mx86-used-note=yes" \ - {pass.c property-x86-2.S property-x86-1.S property-stack.S} \ - {{readelf {-n} property-5a.r}} \ - "property-5.o" \ - ] \ - [list \ - "Build property 5 (.so)" \ - "-shared -Wl,-z,stack-size=0x900000" \ - "-fPIC -Wa,-mx86-used-note=yes" \ - {property-x86-2.S property-x86-1.S pass.c property-stack.S} \ - {{readelf {-n} property-5.r}} \ - "property-5.so" \ - ] \ [list \ "Build property-6.so" \ "-shared" \ @@ -2179,6 +2099,96 @@ run_ld_link_tests [list \ {{readelf -SW plt2.rd} {objdump -dwr plt2.dd}} \ "plt2" \ ] \ + [list \ + "Build property 3" \ + "" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-stk.s property-x86-1.s} \ + {{readelf -n property-3.r}} \ + "property-3" \ + ] \ + [list \ + "Build property 3 (.o)" \ + "-r -nostdlib" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-1.s property-stk.s} \ + {{readelf -n property-3a.r}} \ + "property-3.o" \ + ] \ + [list \ + "Build property 3 (.so)" \ + "-shared" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-1.s property-stk.s} \ + {{readelf -n property-3.r}} \ + "property-3.so" \ + ] \ + [list \ + "Build property 4" \ + "" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-stk.s property-x86-1.s property-x86-2.s} \ + {{readelf -n property-4.r}} \ + "property-4" \ + ] \ + [list \ + "Build property 4 (.o)" \ + "-r -nostdlib" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-2.s property-x86-1.s property-stk.s} \ + {{readelf {-n} property-4a.r}} \ + "property-4.o" \ + ] \ + [list \ + "Build property 4 (.so)" \ + "-shared" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-2.s property-x86-1.s property-stk.s} \ + {{readelf -n property-4.r}} \ + "property-4.so" \ + ] \ + [list \ + "Build property 4 (-z stack-size=0)" \ + "-z stack-size=0" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-stk.s property-x86-1.s property-x86-2.s} \ + {{readelf -n property-4.r}} \ + "property-4" \ + ] \ + [list \ + "Build property 5" \ + "-z stack-size=0x900000" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-stk.s property-x86-1.s property-x86-2.s} \ + {{readelf -n property-5.r}} \ + "property-5" \ + ] \ + [list \ + "Build property 5 (.o)" \ + "-r -nostdlib -z stack-size=0x900000" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-2.s property-x86-1.s property-stk.s} \ + {{readelf {-n} property-5a.r}} \ + "property-5.o" \ + ] \ + [list \ + "Build property 5 (.so)" \ + "-shared -z stack-size=0x900000" \ + "" \ + "--64 -defsym __64_bit__=1 -mx86-used-note=yes" \ + {property-x86-2.s property-x86-1.s property-stk.s} \ + {{readelf -n property-5.r}} \ + "property-5.so" \ + ] \ [list \ "Build pr21626.so" \ "-shared -melf_x86_64" \ -- 2.30.2