On 04/06/2019 13:21, Christophe Lyon wrote: > 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?
sorry i missed these. i broke asm visibility declarations for extern symbols, i will have a fix soon. > > 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