Re: [PATCH] x86: Update PR 35513 tests
On Wed, Jan 24, 2024 at 4:23 AM Thomas Schwinge wrote: > > Hi! > > On 2022-02-10T05:55:15-0800, "H.J. Lu via Gcc-patches" > wrote: > > 1. Require linker with GNU_PROPERTY_1_NEEDED support for PR 35513 > > run-time tests. > > Moving my x86_64-pc-linux-gnu testing from an old to a newish system > (Ubuntu 20.04), I notice: > > [-PASS: g++.target/i386/pr35513-1.C -std=gnu++98 (test for excess > errors)-] > [-PASS:-]{+UNSUPPORTED:+} g++.target/i386/pr35513-1.C > -std=gnu++98[-execution test-] > > Etc. > > [-PASS: g++.target/i386/pr35513-2.C -std=gnu++98 (test for excess > errors)-] > [-PASS:-]{+UNSUPPORTED:+} g++.target/i386/pr35513-2.C > -std=gnu++98[-execution test-] > > Etc. > > ..., due to the 'property_1_needed' effective-target check now > diagnosing: > > /usr/bin/ld: warning: /tmp/ccFNkvfI.o: unsupported GNU_PROPERTY_TYPE (5) > type: 0xb0008000 > > ..., with: > > $ /usr/bin/ld --version | head -n 1 > GNU ld (GNU Binutils for Ubuntu) 2.34 > > I'm not familiar with these properties, but I wonder if really some > support has been removed (so that this indeed is now UNSUPPORTED), or if Only for linkers which support GNU_PROPERTY, but the current GNU_PROPERTY. > something's wrong somewhere (so that this should still PASS). > > For reference: > > > --- a/gcc/testsuite/lib/target-supports.exp > > +++ b/gcc/testsuite/lib/target-supports.exp > > > +proc check_effective_target_property_1_needed { } { > > + return [check_no_compiler_messages_nocache property_1_needed executable { > > +/* Assembly code */ > > +#ifdef __LP64__ > > +# define __PROPERTY_ALIGN 3 > > +#else > > +# define __PROPERTY_ALIGN 2 > > +#endif > > + > > + .section ".note.gnu.property", "a" > > + .p2align __PROPERTY_ALIGN > > + .long 1f - 0f /* name length. */ > > + .long 4f - 1f /* data length. */ > > + /* NT_GNU_PROPERTY_TYPE_0. */ > > + .long 5 /* note type. */ > > +0: > > + .asciz "GNU"/* vendor name. */ > > +1: > > + .p2align __PROPERTY_ALIGN > > + /* GNU_PROPERTY_1_NEEDED. */ > > + .long 0xb0008000/* pr_type. */ > > + .long 3f - 2f /* pr_datasz. */ > > +2: > > + /* GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS. */ > > + .long 1 > > +3: > > + .p2align __PROPERTY_ALIGN > > +4: > > + .text > > + .globl main > > +main: > > + .byte 0 > > + } ""] > > +} > > > Grüße > Thomas -- H.J.
Re: [PATCH] x86: Update PR 35513 tests
Hi! On 2022-02-10T05:55:15-0800, "H.J. Lu via Gcc-patches" wrote: > 1. Require linker with GNU_PROPERTY_1_NEEDED support for PR 35513 > run-time tests. Moving my x86_64-pc-linux-gnu testing from an old to a newish system (Ubuntu 20.04), I notice: [-PASS: g++.target/i386/pr35513-1.C -std=gnu++98 (test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} g++.target/i386/pr35513-1.C -std=gnu++98[-execution test-] Etc. [-PASS: g++.target/i386/pr35513-2.C -std=gnu++98 (test for excess errors)-] [-PASS:-]{+UNSUPPORTED:+} g++.target/i386/pr35513-2.C -std=gnu++98[-execution test-] Etc. ..., due to the 'property_1_needed' effective-target check now diagnosing: /usr/bin/ld: warning: /tmp/ccFNkvfI.o: unsupported GNU_PROPERTY_TYPE (5) type: 0xb0008000 ..., with: $ /usr/bin/ld --version | head -n 1 GNU ld (GNU Binutils for Ubuntu) 2.34 I'm not familiar with these properties, but I wonder if really some support has been removed (so that this indeed is now UNSUPPORTED), or if something's wrong somewhere (so that this should still PASS). For reference: > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > +proc check_effective_target_property_1_needed { } { > + return [check_no_compiler_messages_nocache property_1_needed executable { > +/* Assembly code */ > +#ifdef __LP64__ > +# define __PROPERTY_ALIGN 3 > +#else > +# define __PROPERTY_ALIGN 2 > +#endif > + > + .section ".note.gnu.property", "a" > + .p2align __PROPERTY_ALIGN > + .long 1f - 0f /* name length. */ > + .long 4f - 1f /* data length. */ > + /* NT_GNU_PROPERTY_TYPE_0. */ > + .long 5 /* note type. */ > +0: > + .asciz "GNU"/* vendor name. */ > +1: > + .p2align __PROPERTY_ALIGN > + /* GNU_PROPERTY_1_NEEDED. */ > + .long 0xb0008000/* pr_type. */ > + .long 3f - 2f /* pr_datasz. */ > +2: > + /* GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS. */ > + .long 1 > +3: > + .p2align __PROPERTY_ALIGN > +4: > + .text > + .globl main > +main: > + .byte 0 > + } ""] > +} Grüße Thomas
Re: [PATCH] x86: Update PR 35513 tests
On Fri, Feb 11, 2022 at 9:43 PM Hongtao Liu wrote: > > On Thu, Feb 10, 2022 at 9:58 PM H.J. Lu via Gcc-patches > wrote: > > > > 1. Require linker with GNU_PROPERTY_1_NEEDED support for PR 35513 > > run-time tests. > > 2. Compile pr35513-8.c to scan assembly code. > > > > PR testsuite/104481 > > * g++.target/i386/pr35513-1.C: Require property_1_needed target. > > * g++.target/i386/pr35513-2.C: Likewise. > > * gcc.target/i386/pr35513-8.c: Change to compile. > > * lib/target-supports.exp (check_compile): Support assembly code. > > (check_effective_target_property_1_needed): New proc. > This is for testcase fixup, and i think it should be ok. I am checking it in. Thanks. > > --- > > gcc/testsuite/g++.target/i386/pr35513-1.C | 2 +- > > gcc/testsuite/g++.target/i386/pr35513-2.C | 2 +- > > gcc/testsuite/gcc.target/i386/pr35513-8.c | 2 +- > > gcc/testsuite/lib/target-supports.exp | 37 +++ > > 4 files changed, 40 insertions(+), 3 deletions(-) > > > > diff --git a/gcc/testsuite/g++.target/i386/pr35513-1.C > > b/gcc/testsuite/g++.target/i386/pr35513-1.C > > index 6f8db37fb7c..daa615662c5 100644 > > --- a/gcc/testsuite/g++.target/i386/pr35513-1.C > > +++ b/gcc/testsuite/g++.target/i386/pr35513-1.C > > @@ -1,4 +1,4 @@ > > -// { dg-do run } > > +// { dg-do run { target property_1_needed } } > > // { dg-options "-O2 -mno-direct-extern-access" } > > > > #include > > diff --git a/gcc/testsuite/g++.target/i386/pr35513-2.C > > b/gcc/testsuite/g++.target/i386/pr35513-2.C > > index 9143ff3f0a5..ecccdaeb666 100644 > > --- a/gcc/testsuite/g++.target/i386/pr35513-2.C > > +++ b/gcc/testsuite/g++.target/i386/pr35513-2.C > > @@ -1,4 +1,4 @@ > > -// { dg-do run } > > +// { dg-do run { target property_1_needed } } > > // { dg-options "-O2 -mno-direct-extern-access" } > > > > class Foo > > diff --git a/gcc/testsuite/gcc.target/i386/pr35513-8.c > > b/gcc/testsuite/gcc.target/i386/pr35513-8.c > > index 7ba67de2156..d51f7efb353 100644 > > --- a/gcc/testsuite/gcc.target/i386/pr35513-8.c > > +++ b/gcc/testsuite/gcc.target/i386/pr35513-8.c > > @@ -1,4 +1,4 @@ > > -/* { dg-do assemble { target { *-*-linux* && { ! ia32 } } } } */ > > +/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ > > /* { dg-require-effective-target maybe_x32 } */ > > /* { dg-options "-mx32 -O2 -fno-pic -fexceptions > > -fasynchronous-unwind-tables -mno-direct-extern-access" } */ > > > > diff --git a/gcc/testsuite/lib/target-supports.exp > > b/gcc/testsuite/lib/target-supports.exp > > index 4463cc8d7ed..0d8a7df5026 100644 > > --- a/gcc/testsuite/lib/target-supports.exp > > +++ b/gcc/testsuite/lib/target-supports.exp > > @@ -30,6 +30,7 @@ > > # > > # Assume by default that CONTENTS is C code. > > # Otherwise, code should contain: > > +# "/* Assembly" for assembly code, > > # "// C++" for c++, > > # "// D" for D, > > # "! Fortran" for Fortran code, > > @@ -57,6 +58,7 @@ proc check_compile {basename type contents args} { > > set options "" > > } > > switch -glob -- $contents { > > + "*/* Assembly*" { set src ${basename}[pid].S } > > "*! Fortran*" { set src ${basename}[pid].f90 } > > "*// C++*" { set src ${basename}[pid].cc } > > "*// D*" { set src ${basename}[pid].d } > > @@ -11758,3 +11760,38 @@ proc check_effective_target_pytest3 { } { > > return 0; > > } > > } > > + > > +proc check_effective_target_property_1_needed { } { > > + return [check_no_compiler_messages_nocache property_1_needed executable { > > +/* Assembly code */ > > +#ifdef __LP64__ > > +# define __PROPERTY_ALIGN 3 > > +#else > > +# define __PROPERTY_ALIGN 2 > > +#endif > > + > > + .section ".note.gnu.property", "a" > > + .p2align __PROPERTY_ALIGN > > + .long 1f - 0f /* name length. */ > > + .long 4f - 1f /* data length. */ > > + /* NT_GNU_PROPERTY_TYPE_0. */ > > + .long 5 /* note type. */ > > +0: > > + .asciz "GNU"/* vendor name. */ > > +1: > > + .p2align __PROPERTY_ALIGN > > + /* GNU_PROPERTY_1_NEEDED. */ > > + .long 0xb0008000/* pr_type. */ > > + .long 3f - 2f /* pr_datasz. */ > > +2: > > + /* GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS. */ > > + .long 1 > > +3: > > + .p2align __PROPERTY_ALIGN > > +4: > > + .text > > + .globl main > > +main: > > + .byte 0 > > + } ""] > > +} > > -- > > 2.34.1 > > > > > -- > BR, > Hongtao -- H.J.
Re: [PATCH] x86: Update PR 35513 tests
On Thu, Feb 10, 2022 at 9:58 PM H.J. Lu via Gcc-patches wrote: > > 1. Require linker with GNU_PROPERTY_1_NEEDED support for PR 35513 > run-time tests. > 2. Compile pr35513-8.c to scan assembly code. > > PR testsuite/104481 > * g++.target/i386/pr35513-1.C: Require property_1_needed target. > * g++.target/i386/pr35513-2.C: Likewise. > * gcc.target/i386/pr35513-8.c: Change to compile. > * lib/target-supports.exp (check_compile): Support assembly code. > (check_effective_target_property_1_needed): New proc. This is for testcase fixup, and i think it should be ok. > --- > gcc/testsuite/g++.target/i386/pr35513-1.C | 2 +- > gcc/testsuite/g++.target/i386/pr35513-2.C | 2 +- > gcc/testsuite/gcc.target/i386/pr35513-8.c | 2 +- > gcc/testsuite/lib/target-supports.exp | 37 +++ > 4 files changed, 40 insertions(+), 3 deletions(-) > > diff --git a/gcc/testsuite/g++.target/i386/pr35513-1.C > b/gcc/testsuite/g++.target/i386/pr35513-1.C > index 6f8db37fb7c..daa615662c5 100644 > --- a/gcc/testsuite/g++.target/i386/pr35513-1.C > +++ b/gcc/testsuite/g++.target/i386/pr35513-1.C > @@ -1,4 +1,4 @@ > -// { dg-do run } > +// { dg-do run { target property_1_needed } } > // { dg-options "-O2 -mno-direct-extern-access" } > > #include > diff --git a/gcc/testsuite/g++.target/i386/pr35513-2.C > b/gcc/testsuite/g++.target/i386/pr35513-2.C > index 9143ff3f0a5..ecccdaeb666 100644 > --- a/gcc/testsuite/g++.target/i386/pr35513-2.C > +++ b/gcc/testsuite/g++.target/i386/pr35513-2.C > @@ -1,4 +1,4 @@ > -// { dg-do run } > +// { dg-do run { target property_1_needed } } > // { dg-options "-O2 -mno-direct-extern-access" } > > class Foo > diff --git a/gcc/testsuite/gcc.target/i386/pr35513-8.c > b/gcc/testsuite/gcc.target/i386/pr35513-8.c > index 7ba67de2156..d51f7efb353 100644 > --- a/gcc/testsuite/gcc.target/i386/pr35513-8.c > +++ b/gcc/testsuite/gcc.target/i386/pr35513-8.c > @@ -1,4 +1,4 @@ > -/* { dg-do assemble { target { *-*-linux* && { ! ia32 } } } } */ > +/* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */ > /* { dg-require-effective-target maybe_x32 } */ > /* { dg-options "-mx32 -O2 -fno-pic -fexceptions > -fasynchronous-unwind-tables -mno-direct-extern-access" } */ > > diff --git a/gcc/testsuite/lib/target-supports.exp > b/gcc/testsuite/lib/target-supports.exp > index 4463cc8d7ed..0d8a7df5026 100644 > --- a/gcc/testsuite/lib/target-supports.exp > +++ b/gcc/testsuite/lib/target-supports.exp > @@ -30,6 +30,7 @@ > # > # Assume by default that CONTENTS is C code. > # Otherwise, code should contain: > +# "/* Assembly" for assembly code, > # "// C++" for c++, > # "// D" for D, > # "! Fortran" for Fortran code, > @@ -57,6 +58,7 @@ proc check_compile {basename type contents args} { > set options "" > } > switch -glob -- $contents { > + "*/* Assembly*" { set src ${basename}[pid].S } > "*! Fortran*" { set src ${basename}[pid].f90 } > "*// C++*" { set src ${basename}[pid].cc } > "*// D*" { set src ${basename}[pid].d } > @@ -11758,3 +11760,38 @@ proc check_effective_target_pytest3 { } { > return 0; > } > } > + > +proc check_effective_target_property_1_needed { } { > + return [check_no_compiler_messages_nocache property_1_needed executable { > +/* Assembly code */ > +#ifdef __LP64__ > +# define __PROPERTY_ALIGN 3 > +#else > +# define __PROPERTY_ALIGN 2 > +#endif > + > + .section ".note.gnu.property", "a" > + .p2align __PROPERTY_ALIGN > + .long 1f - 0f /* name length. */ > + .long 4f - 1f /* data length. */ > + /* NT_GNU_PROPERTY_TYPE_0. */ > + .long 5 /* note type. */ > +0: > + .asciz "GNU"/* vendor name. */ > +1: > + .p2align __PROPERTY_ALIGN > + /* GNU_PROPERTY_1_NEEDED. */ > + .long 0xb0008000/* pr_type. */ > + .long 3f - 2f /* pr_datasz. */ > +2: > + /* GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS. */ > + .long 1 > +3: > + .p2align __PROPERTY_ALIGN > +4: > + .text > + .globl main > +main: > + .byte 0 > + } ""] > +} > -- > 2.34.1 > -- BR, Hongtao