From 96f498bd9f140a98321c478f517877c4767b94fa Mon Sep 17 00:00:00 2001 From: Dmitri Gribenko Date: Sun, 13 Jan 2013 16:01:15 +0000 Subject: Remove redundant 'llvm::' qualifications git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172358 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/WinCOFFObjectWriter.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'lib/MC/WinCOFFObjectWriter.cpp') diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp index 01860c5..e1d6538 100644 --- a/lib/MC/WinCOFFObjectWriter.cpp +++ b/lib/MC/WinCOFFObjectWriter.cpp @@ -36,7 +36,7 @@ using namespace llvm; namespace { -typedef llvm::SmallString name; +typedef SmallString name; enum AuxiliaryType { ATFunctionDefinition, @@ -58,7 +58,7 @@ class COFFSymbol { public: COFF::symbol Data; - typedef llvm::SmallVector AuxiliarySymbols; + typedef SmallVector AuxiliarySymbols; name Name; int Index; @@ -69,7 +69,7 @@ public: MCSymbolData const *MCData; - COFFSymbol(llvm::StringRef name); + COFFSymbol(StringRef name); size_t size() const; void set_name_offset(uint32_t Offset); @@ -97,13 +97,13 @@ public: COFFSymbol *Symbol; relocations Relocations; - COFFSection(llvm::StringRef name); + COFFSection(StringRef name); static size_t size(); }; // This class holds the COFF string table. class StringTable { - typedef llvm::StringMap map; + typedef StringMap map; map Map; void update_length(); @@ -112,7 +112,7 @@ public: StringTable(); size_t size() const; - size_t insert(llvm::StringRef String); + size_t insert(StringRef String); }; class WinCOFFObjectWriter : public MCObjectWriter { @@ -144,7 +144,7 @@ public: COFFSection *createSection(StringRef Name); template - object_t *createCOFFEntity(llvm::StringRef Name, list_t &List); + object_t *createCOFFEntity(StringRef Name, list_t &List); void DefineSection(MCSectionData const &SectionData); void DefineSymbol(MCSymbolData const &SymbolData, MCAssembler &Assembler); @@ -202,7 +202,7 @@ static inline void write_uint8_le(void *Data, uint8_t const &Value) { //------------------------------------------------------------------------------ // Symbol class implementation -COFFSymbol::COFFSymbol(llvm::StringRef name) +COFFSymbol::COFFSymbol(StringRef name) : Name(name.begin(), name.end()) , Other(NULL) , Section(NULL) @@ -254,7 +254,7 @@ bool COFFSymbol::should_keep() const { //------------------------------------------------------------------------------ // Section class implementation -COFFSection::COFFSection(llvm::StringRef name) +COFFSection::COFFSection(StringRef name) : Name(name) , MCData(NULL) , Symbol(NULL) { @@ -287,7 +287,7 @@ size_t StringTable::size() const { /// Add String to the table iff it is not already there. /// @returns the index into the string table where the string is now located. -size_t StringTable::insert(llvm::StringRef String) { +size_t StringTable::insert(StringRef String) { map::iterator i = Map.find(String); if (i != Map.end()) @@ -341,14 +341,14 @@ COFFSymbol *WinCOFFObjectWriter::GetOrCreateCOFFSymbol(const MCSymbol * Symbol){ return RetSymbol; } -COFFSection *WinCOFFObjectWriter::createSection(llvm::StringRef Name) { +COFFSection *WinCOFFObjectWriter::createSection(StringRef Name) { return createCOFFEntity(Name, Sections); } /// A template used to lookup or create a symbol/section, and initialize it if /// needed. template -object_t *WinCOFFObjectWriter::createCOFFEntity(llvm::StringRef Name, +object_t *WinCOFFObjectWriter::createCOFFEntity(StringRef Name, list_t &List) { object_t *Object = new object_t(Name); -- cgit v1.1 From 0933134a304b47d3767aad202df9f0e09743da6d Mon Sep 17 00:00:00 2001 From: "Michael J. Spencer" Date: Tue, 29 Jan 2013 22:10:07 +0000 Subject: [MC][COFF] Delay handling symbol aliases when writing Fixes PR14447 and PR9034. Patch by Nico Rieck! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173839 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/WinCOFFObjectWriter.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) (limited to 'lib/MC/WinCOFFObjectWriter.cpp') diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp index e1d6538..fc7aa94 100644 --- a/lib/MC/WinCOFFObjectWriter.cpp +++ b/lib/MC/WinCOFFObjectWriter.cpp @@ -147,7 +147,9 @@ public: object_t *createCOFFEntity(StringRef Name, list_t &List); void DefineSection(MCSectionData const &SectionData); - void DefineSymbol(MCSymbolData const &SymbolData, MCAssembler &Assembler); + void DefineSymbol(MCSymbol const &Symbol, + MCSymbolData const &SymbolData, + MCAssembler &Assembler); void MakeSymbolReal(COFFSymbol &S, size_t Index); void MakeSectionReal(COFFSection &S, size_t Number); @@ -408,9 +410,10 @@ void WinCOFFObjectWriter::DefineSection(MCSectionData const &SectionData) { /// This function takes a section data object from the assembler /// and creates the associated COFF symbol staging object. -void WinCOFFObjectWriter::DefineSymbol(MCSymbolData const &SymbolData, +void WinCOFFObjectWriter::DefineSymbol(MCSymbol const &Symbol, + MCSymbolData const &SymbolData, MCAssembler &Assembler) { - COFFSymbol *coff_symbol = GetOrCreateCOFFSymbol(&SymbolData.getSymbol()); + COFFSymbol *coff_symbol = GetOrCreateCOFFSymbol(&Symbol); coff_symbol->Data.Type = (SymbolData.getFlags() & 0x0000FFFF) >> 0; coff_symbol->Data.StorageClass = (SymbolData.getFlags() & 0x00FF0000) >> 16; @@ -418,9 +421,9 @@ void WinCOFFObjectWriter::DefineSymbol(MCSymbolData const &SymbolData, if (SymbolData.getFlags() & COFF::SF_WeakExternal) { coff_symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL; - if (SymbolData.getSymbol().isVariable()) { + if (Symbol.isVariable()) { coff_symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL; - const MCExpr *Value = SymbolData.getSymbol().getVariableValue(); + const MCExpr *Value = Symbol.getVariableValue(); // FIXME: This assert message isn't very good. assert(Value->getKind() == MCExpr::SymbolRef && @@ -428,10 +431,10 @@ void WinCOFFObjectWriter::DefineSymbol(MCSymbolData const &SymbolData, const MCSymbolRefExpr *SymbolRef = static_cast(Value); - coff_symbol->Other = GetOrCreateCOFFSymbol(&SymbolRef->getSymbol()); + coff_symbol->Other = GetOrCreateCOFFSymbol(&Symbol); } else { std::string WeakName = std::string(".weak.") - + SymbolData.getSymbol().getName().str() + + Symbol.getName().str() + ".default"; COFFSymbol *WeakDefault = createSymbol(WeakName); WeakDefault->Data.SectionNumber = COFF::IMAGE_SYM_ABSOLUTE; @@ -464,7 +467,7 @@ void WinCOFFObjectWriter::DefineSymbol(MCSymbolData const &SymbolData, // Bind internal COFF symbol to MC symbol. coff_symbol->MCData = &SymbolData; - SymbolMap[&SymbolData.getSymbol()] = coff_symbol; + SymbolMap[&Symbol] = coff_symbol; } /// making a section real involves assigned it a number and putting @@ -619,8 +622,11 @@ void WinCOFFObjectWriter::ExecutePostLayoutBinding(MCAssembler &Asm, for (MCAssembler::const_symbol_iterator i = Asm.symbol_begin(), e = Asm.symbol_end(); i != e; i++) { - if (ExportSymbol(*i, Asm)) - DefineSymbol(*i, Asm); + if (ExportSymbol(*i, Asm)) { + const MCSymbol &Alias = i->getSymbol(); + const MCSymbol &Symbol = Alias.AliasedSymbol(); + DefineSymbol(Alias, Asm.getSymbolData(Symbol), Asm); + } } } -- cgit v1.1 From 76122f9c13e7b840687de2b8d5767c73dac02a3b Mon Sep 17 00:00:00 2001 From: Dmitri Gribenko Date: Tue, 29 Jan 2013 23:27:45 +0000 Subject: Remove unused variable (unused since r173839) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173847 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/WinCOFFObjectWriter.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'lib/MC/WinCOFFObjectWriter.cpp') diff --git a/lib/MC/WinCOFFObjectWriter.cpp b/lib/MC/WinCOFFObjectWriter.cpp index fc7aa94..6dffed7 100644 --- a/lib/MC/WinCOFFObjectWriter.cpp +++ b/lib/MC/WinCOFFObjectWriter.cpp @@ -423,14 +423,11 @@ void WinCOFFObjectWriter::DefineSymbol(MCSymbol const &Symbol, if (Symbol.isVariable()) { coff_symbol->Data.StorageClass = COFF::IMAGE_SYM_CLASS_WEAK_EXTERNAL; - const MCExpr *Value = Symbol.getVariableValue(); // FIXME: This assert message isn't very good. - assert(Value->getKind() == MCExpr::SymbolRef && + assert(Symbol.getVariableValue()->getKind() == MCExpr::SymbolRef && "Value must be a SymbolRef!"); - const MCSymbolRefExpr *SymbolRef = - static_cast(Value); coff_symbol->Other = GetOrCreateCOFFSymbol(&Symbol); } else { std::string WeakName = std::string(".weak.") -- cgit v1.1