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