diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-02 00:25:12 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2015-06-02 00:25:12 +0000 |
commit | a869576008864fe061b0a6e8f50d7489aaf88f1b (patch) | |
tree | 9b599c5b73301486f2f2eb1456f9c32e0ca165aa /llvm/lib/MC/ELFObjectWriter.cpp | |
parent | 249af2a033ef527a60460bf4b578cb35d27f570a (diff) | |
download | bcm5719-llvm-a869576008864fe061b0a6e8f50d7489aaf88f1b.tar.gz bcm5719-llvm-a869576008864fe061b0a6e8f50d7489aaf88f1b.zip |
Create a MCSymbolELF.
This create a MCSymbolELF class and moves SymbolSize since only ELF
needs a size expression.
This reduces the size of MCSymbol from 56 to 48 bytes.
llvm-svn: 238801
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r-- | llvm/lib/MC/ELFObjectWriter.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp index 50b848aec27..927180c48dd 100644 --- a/llvm/lib/MC/ELFObjectWriter.cpp +++ b/llvm/lib/MC/ELFObjectWriter.cpp @@ -27,6 +27,7 @@ #include "llvm/MC/MCFixupKindInfo.h" #include "llvm/MC/MCObjectWriter.h" #include "llvm/MC/MCSectionELF.h" +#include "llvm/MC/MCSymbolELF.h" #include "llvm/MC/MCValue.h" #include "llvm/MC/StringTableBuilder.h" #include "llvm/Support/Compression.h" @@ -79,7 +80,7 @@ class ELFObjectWriter : public MCObjectWriter { /// Helper struct for containing some precomputed information on symbols. struct ELFSymbolData { - const MCSymbol *Symbol; + const MCSymbolELF *Symbol; uint32_t SectionIndex; StringRef Name; @@ -451,7 +452,8 @@ void ELFObjectWriter::writeSymbol(SymbolTableWriter &Writer, assert((!Symbol.getFragment() || (Symbol.getFragment()->getParent() == &Symbol.getSection())) && "The symbol's section doesn't match the fragment's symbol"); - const MCSymbol *Base = Layout.getBaseSymbol(Symbol); + const MCSymbolELF *Base = + cast_or_null<MCSymbolELF>(Layout.getBaseSymbol(Symbol)); // This has to be in sync with when computeSymbolTable uses SHN_ABS or // SHN_COMMON. @@ -810,7 +812,7 @@ void ELFObjectWriter::computeSymbolTable( continue; ELFSymbolData MSD; - MSD.Symbol = &Symbol; + MSD.Symbol = cast<MCSymbolELF>(&Symbol); // Undefined symbols are global, but this is the first place we // are able to set it. |