aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-03-17 04:29:51 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-03-17 04:29:51 +0000
commitf863a3e2ecdaab42a7b986359c77310f24788d5b (patch)
tree6ba5a645b1c62a0f32ee23d3b8802ca46dd943c0 /llvm/lib/MC/ELFObjectWriter.cpp
parentc714ef458107a72675ac581a7504986c587da04a (diff)
downloadllvm-f863a3e2ecdaab42a7b986359c77310f24788d5b.zip
llvm-f863a3e2ecdaab42a7b986359c77310f24788d5b.tar.gz
llvm-f863a3e2ecdaab42a7b986359c77310f24788d5b.tar.bz2
Consider the base pointer for setting the symbol type.
This is really a consistency fix. Since given a = b we propagate the information, we should propagate it too given a = b + (1 - 1) Fixes pr19145. llvm-svn: 204028
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 0f3fa04..54703b9 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -580,8 +580,9 @@ void ELFObjectWriter::WriteSymbol(MCDataFragment *SymtabF,
ELFSymbolData &MSD,
const MCAsmLayout &Layout) {
MCSymbolData &OrigData = *MSD.SymbolData;
- MCSymbolData &Data =
- Layout.getAssembler().getSymbolData(OrigData.getSymbol().AliasedSymbol());
+ const MCSymbol *Base = OrigData.getSymbol().getBaseSymbol(Layout);
+ const MCSymbolData &Data =
+ Base ? Layout.getAssembler().getSymbolData(*Base) : OrigData;
bool IsReserved = Data.isCommon() || Data.getSymbol().isAbsolute() ||
Data.getSymbol().isVariable();