diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2019-04-25 15:07:10 +0100 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2019-05-24 15:09:06 +0100 |
commit | 0b4eac57c44ec4c9e13f5201b40936c3b3e6c639 (patch) | |
tree | cbb5471417b7fdd03b84a21c4f856f5c0c2ab2d6 /gas/config/tc-aarch64.h | |
parent | f166ae0188dcb89c5ae925034260a708a254ab2f (diff) | |
download | gdb-0b4eac57c44ec4c9e13f5201b40936c3b3e6c639.zip gdb-0b4eac57c44ec4c9e13f5201b40936c3b3e6c639.tar.gz gdb-0b4eac57c44ec4c9e13f5201b40936c3b3e6c639.tar.bz2 |
aarch64: override default elf .set handling in gas
Allow st_other values such as STO_AARCH64_VARIANT_PCS to be set for alias
symbols independently. This is needed for ifunc symbols which are
aliased to the resolver using .set and don't expect resolver attributes
to override the ifunc symbol attributes. This means .variant_pcs must be
added explicitly to aliases.
gas/ChangeLog:
* config/tc-aarch64.c (aarch64_elf_copy_symbol_attributes): Define.
* config/tc-aarch64.h (aarch64_elf_copy_symbol_attributes): Declare.
(OBJ_COPY_SYMBOL_ATTRIBUTES): Define.
* testsuite/gas/aarch64/symbol-variant_pcs-3.d: New test.
* testsuite/gas/aarch64/symbol-variant_pcs-3.s: New test.
Diffstat (limited to 'gas/config/tc-aarch64.h')
-rw-r--r-- | gas/config/tc-aarch64.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gas/config/tc-aarch64.h b/gas/config/tc-aarch64.h index b549072..f4eb1d5 100644 --- a/gas/config/tc-aarch64.h +++ b/gas/config/tc-aarch64.h @@ -130,6 +130,12 @@ void aarch64_copy_symbol_attributes (symbolS *, symbolS *); (aarch64_copy_symbol_attributes (DEST, SRC)) #endif +#ifdef OBJ_ELF +void aarch64_elf_copy_symbol_attributes (symbolS *, symbolS *); +#define OBJ_COPY_SYMBOL_ATTRIBUTES(DEST, SRC) \ + aarch64_elf_copy_symbol_attributes (DEST, SRC) +#endif + #define TC_START_LABEL(STR, NUL_CHAR, NEXT_CHAR) \ (NEXT_CHAR == ':' || (NEXT_CHAR == '/' && aarch64_data_in_code ())) #define tc_canonicalize_symbol_name(str) aarch64_canonicalize_symbol_name (str); |