summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHan Shen <shenhan@google.com>2015-07-06 22:17:25 (GMT)
committerDan Albert <danalbert@google.com>2015-07-29 17:59:34 (GMT)
commit0040352e615927870ba8efd155454b6205d20eef (patch)
tree4fa9cd140eac2886999534bbc71b8a9ccf598e58
parentec8f12bcfe31bcd5020c48c28c7b5247e3749647 (diff)
downloadtoolchain_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)
-rw-r--r--binutils-2.25/gold/ChangeLog9
-rw-r--r--binutils-2.25/gold/aarch64.cc11
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 =