aboutsummaryrefslogtreecommitdiff
path: root/libcc1/libcp1.cc
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2019-06-03 13:50:53 +0000
committerSzabolcs Nagy <nsz@gcc.gnu.org>2019-06-03 13:50:53 +0000
commitb07fc91cc47769f1fdabf31a3c8f942caf49d873 (patch)
treed2e8c1b20e35eb49d15f47cbea6df83c80483f66 /libcc1/libcp1.cc
parentbf5824f9282b88c2f94d76b2999a790252d0df9d (diff)
downloadgcc-b07fc91cc47769f1fdabf31a3c8f942caf49d873.zip
gcc-b07fc91cc47769f1fdabf31a3c8f942caf49d873.tar.gz
gcc-b07fc91cc47769f1fdabf31a3c8f942caf49d873.tar.bz2
aarch64: emit .variant_pcs for aarch64_vector_pcs symbol references
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: * 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: * 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. From-SVN: r271869
Diffstat (limited to 'libcc1/libcp1.cc')
0 files changed, 0 insertions, 0 deletions