Szabolcs Nagy <szabolcs.n...@arm.com> writes: > On 28/05/2019 16:01, Szabolcs Nagy wrote: >> 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. >> > > i'd like to backport this and follow up fixes to the gcc-9 branch, > see attached patch.
OK. I agree this makes sense since vector PCS functions were a new feature in GCC 9 and since not backporting it could lead to silent wrong code. Richard