summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ObjectYAML/ELFEmitter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/ObjectYAML/ELFEmitter.cpp')
-rw-r--r--llvm/lib/ObjectYAML/ELFEmitter.cpp24
1 files changed, 6 insertions, 18 deletions
diff --git a/llvm/lib/ObjectYAML/ELFEmitter.cpp b/llvm/lib/ObjectYAML/ELFEmitter.cpp
index 96b13e4e530..76dd4b4e4e7 100644
--- a/llvm/lib/ObjectYAML/ELFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/ELFEmitter.cpp
@@ -995,24 +995,12 @@ template <class ELFT> bool ELFState<ELFT>::buildSectionIndex() {
}
static bool buildSymbolsMap(ArrayRef<ELFYAML::Symbol> V, NameToIdxMap &Map) {
- bool GlobalSymbolSeen = false;
- std::size_t I = 0;
- for (const ELFYAML::Symbol &Sym : V) {
- ++I;
-
- StringRef Name = Sym.Name;
- if (Sym.Binding.value == ELF::STB_LOCAL && GlobalSymbolSeen) {
- WithColor::error() << "Local symbol '" + Name +
- "' after global in Symbols list.\n";
- return false;
- }
- if (Sym.Binding.value != ELF::STB_LOCAL)
- GlobalSymbolSeen = true;
-
- if (!Name.empty() && !Map.addName(Name, I)) {
- WithColor::error() << "Repeated symbol name: '" << Name << "'.\n";
- return false;
- }
+ for (size_t I = 0, S = V.size(); I < S; ++I) {
+ const ELFYAML::Symbol &Sym = V[I];
+ if (Sym.Name.empty() || Map.addName(Sym.Name, I + 1))
+ continue;
+ WithColor::error() << "Repeated symbol name: '" << Sym.Name << "'.\n";
+ return false;
}
return true;
}
OpenPOWER on IntegriCloud