diff options
author | Han Shen <shenhan@google.com> | 2015-07-06 15:17:25 -0700 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2015-07-29 10:59:34 -0700 |
commit | 0040352e615927870ba8efd155454b6205d20eef (patch) | |
tree | 4fa9cd140eac2886999534bbc71b8a9ccf598e58 /binutils-2.25/gold | |
parent | ec8f12bcfe31bcd5020c48c28c7b5247e3749647 (diff) | |
download | toolchain_binutils-0040352e615927870ba8efd155454b6205d20eef.zip toolchain_binutils-0040352e615927870ba8efd155454b6205d20eef.tar.gz toolchain_binutils-0040352e615927870ba8efd155454b6205d20eef.tar.bz2 |
Make gold aarch64 accept long form of mapping symbols.
2015-07-07 Han Shen <shenhan@google.com>
gold/ChangeLog:
2015-07-06 Han Shen <shenhan@google.com>
* aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal
of mapping symbols.
Change-Id: If62f577eeb704d8c7b0b2f525e91b3cb311001ca
(cherry picked from commit b91deca94e36b9f18156909e4c615fe7af8e3ae8)
Diffstat (limited to 'binutils-2.25/gold')
-rw-r--r-- | binutils-2.25/gold/ChangeLog | 9 | ||||
-rw-r--r-- | binutils-2.25/gold/aarch64.cc | 11 |
2 files changed, 17 insertions, 3 deletions
diff --git a/binutils-2.25/gold/ChangeLog b/binutils-2.25/gold/ChangeLog index babb95e..f4bbfb1 100644 --- a/binutils-2.25/gold/ChangeLog +++ b/binutils-2.25/gold/ChangeLog @@ -1,8 +1,15 @@ +2015-07-07 Han Shen <shenhan@google.com> + + Make gold aarch64 accept long form of mapping symbols. + + * aarch64.cc (AArch64_relobj::do_count_local_symbols): Make legal + of mapping symbols. + 2015-06-29 Han Shen <shenhan@google.com> Patch for erratum 843419 internal error. - * AArch64.cc (Erratum_stub::Insn_utilities): New typedef. + * aarch64.cc (Erratum_stub::Insn_utilities): New typedef. (Erratum_stub::update_erratum_insn): New method. (Stub_table::relocate_stubs): Modified to place relocated insn. (AArch64_relobj::fix_errata): Modified gold_assert. diff --git a/binutils-2.25/gold/aarch64.cc b/binutils-2.25/gold/aarch64.cc index 7fc18f6..1589bd8 100644 --- a/binutils-2.25/gold/aarch64.cc +++ b/binutils-2.25/gold/aarch64.cc @@ -1827,10 +1827,17 @@ AArch64_relobj<size, big_endian>::do_count_local_symbols( Symbol_value<size>& lv((*plocal_values)[i]); AArch64_address input_value = lv.input_value(); - // Check to see if this is a mapping symbol. + // Check to see if this is a mapping symbol. AArch64 mapping symbols are + // defined in "ELF for the ARM 64-bit Architecture", Table 4-4, Mapping + // symbols. + // Mapping symbols could be one of the following 4 forms - + // a) $x + // b) $x.<any...> + // c) $d + // d) $d.<any...> const char* sym_name = pnames + sym.get_st_name(); if (sym_name[0] == '$' && (sym_name[1] == 'x' || sym_name[1] == 'd') - && sym_name[2] == '\0') + && (sym_name[2] == '\0' || sym_name[2] == '.')) { bool is_ordinary; unsigned int input_shndx = |