On Mon, 3 Jun 2019 at 13:28, James Greenhalgh <james.greenha...@arm.com> wrote:
>
> On Wed, May 29, 2019 at 11:00:46AM +0100, Richard Sandiford wrote:
> > Szabolcs Nagy <szabolcs.n...@arm.com> writes:
> > > v2:
> > > - use aarch64_simd_decl_p to check for aarch64_vector_pcs.
> > > - emit the .variant_pcs directive even for local functions.
> > > - don't require .variant_pcs asm support in compile only tests.
> > > - add weakref tests.
> > >
> > > A dynamic linker with lazy binding support may need to handle vector PCS
> > > function symbols specially, so an ELF symbol table marking was
> > > introduced for such symbols.
> > >
> > > Function symbol references and definitions that follow the vector PCS
> > > are marked in the generated assembly with .variant_pcs and then the
> > > STO_AARCH64_VARIANT_PCS st_other flag is set on the symbol in the object
> > > file.  The marking is propagated to the dynamic symbol table by the
> > > static linker so a dynamic linker can handle such symbols specially.
> > >
> > > For this to work, the assembler, the static linker and the dynamic
> > > linker has to be updated on a system.  Old assembler does not support
> > > the new .variant_pcs directive, so a toolchain with old binutils won't
> > > be able to compile code that references vector PCS symbols.
> > >
> > > gcc/ChangeLog:
> > >
> > > 2019-05-28  Szabolcs Nagy  <szabolcs.n...@arm.com>
> > >
> > >     * config/aarch64/aarch64-protos.h (aarch64_asm_output_alias): Declare.
> > >     (aarch64_asm_output_external): Declare.
> > >     * config/aarch64/aarch64.c (aarch64_asm_output_variant_pcs): New.
> > >     (aarch64_declare_function_name): Call aarch64_asm_output_variant_pcs.
> > >     (aarch64_asm_output_alias): New.
> > >     (aarch64_asm_output_external): New.
> > >     * config/aarch64/aarch64.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
> > >     (ASM_OUTPUT_EXTERNAL): Define.
> > >
> > > gcc/testsuite/ChangeLog:
> > >
> > > 2019-05-28  Szabolcs Nagy  <szabolcs.n...@arm.com>
> > >
> > >     * gcc.target/aarch64/pcs_attribute-2.c: New test.
> > >     * gcc.target/aarch64/torture/simd-abi-4.c: Check .variant_pcs support.
> > >     * lib/target-supports.exp 
> > > (check_effective_target_aarch64_variant_pcs):
> > >     New.
> >
> > LGTM, but an AArch64 maintainer will need to approve.
>
> OK with Richard's change suggested below.
>

Hi,

Since this patch was committed (r271869), I've noticed regressions on aarch64:
FAIL:    gcc.dg/visibility-14.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-15.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-16.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-17.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-18.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-19.c scan-hidden hidden[ \t_]*foo
FAIL:    gcc.dg/visibility-23.c scan-hidden hidden[ \t_]*foo

Didn't you see them when you tested the patch?

Thanks,

Christophe


> Thanks,
> James
>
> >
> > > diff --git a/gcc/testsuite/gcc.target/aarch64/torture/simd-abi-4.c 
> > > b/gcc/testsuite/gcc.target/aarch64/torture/simd-abi-4.c
> > > index e399690f364..80ebd955e10 100644
> > > --- a/gcc/testsuite/gcc.target/aarch64/torture/simd-abi-4.c
> > > +++ b/gcc/testsuite/gcc.target/aarch64/torture/simd-abi-4.c
> > > @@ -1,4 +1,5 @@
> > >  /* dg-do run */
> > > +/* { dg-require-effective-target aarch64_variant_pcs } */
> > >  /* { dg-additional-options "-std=c99" }  */
> >
> > Not your problem of course, but mind fixing the dg-do markup while
> > you're there?  It should be
> >
> > /* { dg-do run } */
> >
> > instead.  As things stand, the test only gets compiled, not run.
> >
> > Thanks,
> > Richard

Reply via email to