summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-04-22 19:11:07 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-04-22 19:11:07 +0000
commit8c8fae7268121d10ae4203062fc3ffe79759dbd3 (patch)
treee4b7b3111c7a5fe839879e550ada1c173da92ce2
parent8dd58d1f02be8e172b4b54fb0a724bb82b01963f (diff)
Follow aliases when determining if a symbol is thumb.
This fixes pr19484. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206917 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/MC/ELFObjectWriter.cpp3
-rw-r--r--test/MC/ARM/elf-thumbfunc.s12
2 files changed, 12 insertions, 3 deletions
diff --git a/lib/MC/ELFObjectWriter.cpp b/lib/MC/ELFObjectWriter.cpp
index 0885688d263..636d449e207 100644
--- a/lib/MC/ELFObjectWriter.cpp
+++ b/lib/MC/ELFObjectWriter.cpp
@@ -492,7 +492,6 @@ uint64_t ELFObjectWriter::SymbolValue(MCSymbolData &OrigData,
return Data->getCommonAlignment();
const MCSymbol *Symbol = &Data->getSymbol();
- bool IsThumbFunc = OrigData.getFlags() & ELF_Other_ThumbFunc;
uint64_t Res = 0;
if (Symbol->isVariable()) {
@@ -514,7 +513,7 @@ uint64_t ELFObjectWriter::SymbolValue(MCSymbolData &OrigData,
}
}
- if (IsThumbFunc)
+ if (Data && Data->getFlags() & ELF_Other_ThumbFunc)
Res |= 1;
if (!Symbol || !Symbol->isInSection())
diff --git a/test/MC/ARM/elf-thumbfunc.s b/test/MC/ARM/elf-thumbfunc.s
index 0ea11821b96..af061b50bc3 100644
--- a/test/MC/ARM/elf-thumbfunc.s
+++ b/test/MC/ARM/elf-thumbfunc.s
@@ -11,7 +11,17 @@
foo:
bx lr
-@@ make sure foo is thumb function: bit 0 = 1 (st_value)
+ .global bar
+bar = foo
+
+@@ make sure foo and bar are thumb function: bit 0 = 1 (st_value)
+@CHECK: Symbol {
+@CHECK: Name: bar
+@CHECK-NEXT: Value: 0x1
+@CHECK-NEXT: Size: 0
+@CHECK-NEXT: Binding: Global
+@CHECK-NEXT: Type: Function
+
@CHECK: Symbol {
@CHECK: Name: foo
@CHECK-NEXT: Value: 0x1