diff options
Diffstat (limited to 'llvm/lib/Object')
-rw-r--r-- | llvm/lib/Object/IRObjectFile.cpp | 5 | ||||
-rw-r--r-- | llvm/lib/Object/RecordStreamer.cpp | 14 | ||||
-rw-r--r-- | llvm/lib/Object/RecordStreamer.h | 3 |
3 files changed, 15 insertions, 7 deletions
diff --git a/llvm/lib/Object/IRObjectFile.cpp b/llvm/lib/Object/IRObjectFile.cpp index f86576f3d69..d4eac8cfd43 100644 --- a/llvm/lib/Object/IRObjectFile.cpp +++ b/llvm/lib/Object/IRObjectFile.cpp @@ -113,10 +113,13 @@ void IRObjectFile::CollectAsmUndefinedRefs( Res |= BasicSymbolRef::SF_Undefined; Res |= BasicSymbolRef::SF_Global; break; - case RecordStreamer::GlobalWeak: + case RecordStreamer::DefinedWeak: Res |= BasicSymbolRef::SF_Weak; Res |= BasicSymbolRef::SF_Global; break; + case RecordStreamer::UndefinedWeak: + Res |= BasicSymbolRef::SF_Weak; + Res |= BasicSymbolRef::SF_Undefined; } AsmUndefinedRefs(Key, BasicSymbolRef::Flags(Res)); } diff --git a/llvm/lib/Object/RecordStreamer.cpp b/llvm/lib/Object/RecordStreamer.cpp index cd3964ad391..572b960bc85 100644 --- a/llvm/lib/Object/RecordStreamer.cpp +++ b/llvm/lib/Object/RecordStreamer.cpp @@ -23,8 +23,10 @@ void RecordStreamer::markDefined(const MCSymbol &Symbol) { case Used: S = Defined; break; - case GlobalWeak: + case DefinedWeak: break; + case UndefinedWeak: + S = DefinedWeak; } } @@ -34,15 +36,16 @@ void RecordStreamer::markGlobal(const MCSymbol &Symbol, switch (S) { case DefinedGlobal: case Defined: - S = (Attribute == MCSA_Weak) ? GlobalWeak : DefinedGlobal; + S = (Attribute == MCSA_Weak) ? DefinedWeak : DefinedGlobal; break; case NeverSeen: case Global: case Used: - S = (Attribute == MCSA_Weak) ? GlobalWeak : Global; + S = (Attribute == MCSA_Weak) ? UndefinedWeak : Global; break; - case GlobalWeak: + case UndefinedWeak: + case DefinedWeak: break; } } @@ -53,7 +56,8 @@ void RecordStreamer::markUsed(const MCSymbol &Symbol) { case DefinedGlobal: case Defined: case Global: - case GlobalWeak: + case DefinedWeak: + case UndefinedWeak: break; case NeverSeen: diff --git a/llvm/lib/Object/RecordStreamer.h b/llvm/lib/Object/RecordStreamer.h index 71337a60591..617d8a43fbd 100644 --- a/llvm/lib/Object/RecordStreamer.h +++ b/llvm/lib/Object/RecordStreamer.h @@ -15,7 +15,8 @@ namespace llvm { class RecordStreamer : public MCStreamer { public: - enum State { NeverSeen, Global, GlobalWeak, Defined, DefinedGlobal, Used }; + enum State { NeverSeen, Global, Defined, DefinedGlobal, DefinedWeak, Used, + UndefinedWeak}; private: StringMap<State> Symbols; |