On Fri, Feb 11, 2022 at 9:43 PM Hongtao Liu <crazy...@gmail.com> wrote:
>
> On Thu, Feb 10, 2022 at 9:58 PM H.J. Lu via Gcc-patches
> <gcc-patches@gcc.gnu.org> 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 <iostream>
> > 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.

Reply via email to