summaryrefslogtreecommitdiff
path: root/gold/aarch64.cc
diff options
context:
space:
mode:
authorHan Shen <shenhan@google.com>2015-07-06 15:17:25 -0700
committerHan Shen <shenhan@google.com>2015-07-07 16:40:13 -0700
commitb91deca94e36b9f18156909e4c615fe7af8e3ae8 (patch)
tree683b47c6a72591f0b3c1011ff9e3cda55b82070f /gold/aarch64.cc
parent4931af25b8ab8f9db77c40142d52e4513762ca97 (diff)
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.
Diffstat (limited to 'gold/aarch64.cc')
-rw-r--r--gold/aarch64.cc11
1 files changed, 9 insertions, 2 deletions
diff --git a/gold/aarch64.cc b/gold/aarch64.cc
index e32f003737..0d86d05d57 100644
--- a/gold/aarch64.cc
+++ b/gold/aarch64.cc
@@ -1831,10 +1831,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 =