Commit: ld x86_64 tests: Accept x86-64-v3 as a needed ISA
Jan Beulich
jbeulich@suse.com
Mon Nov 6 10:46:10 GMT 2023
On 02.11.2023 14:06, Jan Beulich wrote:
> On 02.11.2023 14:00, Nick Clifton wrote:
>>> Oh, no, me being suspicious isn't because of the way you've expressed
>>> things. Instead you've broken the intended purpose of the test, I'm
>>> afraid: What this is about - iiuc - is to check that the linker
>>> correctly folds the respective notes from, in particular,
>>> property-x86-1.o and property-x86-2.o. Relaxing the expectations as you
>>> did means e.g. a bug in the linker wrongly folding v2+v4 into v2+v3+v4
>>> would now go unnoticed.
>>
>> Ah! I see now. Yes you are correct.
>>
>>> In any event I'm of the opinion that the change wants reverting.
>>
>> And the tests changed so that they do not involve any system object
>> files at all, right ?
>>
>> Are you volunteering ? :-) If not then I will have a go myself.
>
> Well, preferably I'd like to "volunteer" H.J., as he introduced all this
> machinery. Just that afaik he won't be around until the end of the month.
> I wouldn't be able to tell when I might get around to try dealing with
> this; not before end of next week for sure.
I thought I might as well try to get past this. Could you give the patch
below a try, with the other one reverted in addition? As said in the
description it deals with only the known problematic tests for now.
Jan
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.
--- /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
--- a/ld/testsuite/ld-x86-64/property-x86-1.S
+++ /dev/null
@@ -1,38 +0,0 @@
-#ifdef __LP64__
-# define ALIGN 3
-#else
-# define 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 0x600000 /* Stack size. */
-5:
- .p2align ALIGN
- /* GNU_PROPERTY_X86_ISA_1_USED */
- .long 0xc0010002 /* pr_type. */
- .long 5f - 4f /* pr_datasz. */
-4:
- .long 0xa
-5:
- .p2align ALIGN
- /* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0008002 /* pr_type. */
- .long 5f - 4f /* pr_datasz. */
-4:
- .long 0x3
-5:
- .p2align ALIGN
-3:
- .section .note.GNU-stack
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-1.s
@@ -0,0 +1,39 @@
+ .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 0x600000 /* Stack size. */
+5:
+ .p2align ALIGN
+ /* GNU_PROPERTY_X86_ISA_1_USED */
+ .long 0xc0010002 /* pr_type. */
+ .long 5f - 4f /* pr_datasz. */
+4:
+ .long 0xa
+5:
+ .p2align ALIGN
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ .long 0xc0008002 /* pr_type. */
+ .long 5f - 4f /* pr_datasz. */
+4:
+ .long 0x3
+5:
+ .p2align ALIGN
+3:
+ .section .note.GNU-stack
--- a/ld/testsuite/ld-x86-64/property-x86-2.S
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifdef __LP64__
-# define ALIGN 3
-#else
-# define 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_X86_ISA_1_USED */
- .long 0xc0010002 /* pr_type. */
- .long 5f - 4f /* pr_datasz. */
-4:
- .long 0x3
-5:
- .p2align ALIGN
- /* GNU_PROPERTY_X86_ISA_1_NEEDED */
- .long 0xc0008002 /* pr_type. */
- .long 5f - 4f /* pr_datasz. */
-4:
- .long 0xa
-5:
- .p2align ALIGN
-3:
- .section .note.GNU-stack
--- /dev/null
+++ b/ld/testsuite/ld-x86-64/property-x86-2.s
@@ -0,0 +1,32 @@
+ .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_X86_ISA_1_USED */
+ .long 0xc0010002 /* pr_type. */
+ .long 5f - 4f /* pr_datasz. */
+4:
+ .long 0x3
+5:
+ .p2align ALIGN
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
+ .long 0xc0008002 /* pr_type. */
+ .long 5f - 4f /* pr_datasz. */
+4:
+ .long 0xa
+5:
+ .p2align ALIGN
+3:
+ .section .note.GNU-stack
--- a/ld/testsuite/ld-x86-64/x86-64.exp
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
@@ -1093,86 +1093,6 @@ if { [isnative] && [check_compiler_avail
"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" \
"-fPIC -Wa,-mx86-used-note=yes" \
@@ -2180,6 +2100,96 @@ run_ld_link_tests [list \
"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" \
"" \
More information about the Binutils
mailing list