diff options
author | Vlad Tsyrklevich <vlad@tsyrklevich.net> | 2019-02-26 07:04:56 +0000 |
---|---|---|
committer | Vlad Tsyrklevich <vlad@tsyrklevich.net> | 2019-02-26 07:04:56 +0000 |
commit | c6d54ae9daad8fbcf26bbff2be6844bf05c19f6e (patch) | |
tree | 368d8d18a82679d18d461a13f5d5c6d00cbfd959 /llvm/tools/llvm-nm/llvm-nm.cpp | |
parent | 5d79eaa82f6f6f729784bb422576f96ae445118d (diff) | |
download | bcm5719-llvm-c6d54ae9daad8fbcf26bbff2be6844bf05c19f6e.tar.gz bcm5719-llvm-c6d54ae9daad8fbcf26bbff2be6844bf05c19f6e.zip |
Revert "Improve "llvm-nm -f sysv" output for Elf files"
This reverts commit r354833, it was causing ASan test failures on
sanitizer-x86_64-linux-fast.
llvm-svn: 354849
Diffstat (limited to 'llvm/tools/llvm-nm/llvm-nm.cpp')
-rw-r--r-- | llvm/tools/llvm-nm/llvm-nm.cpp | 48 |
1 files changed, 4 insertions, 44 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp index 55ef0b7661f..a7346d56f32 100644 --- a/llvm/tools/llvm-nm/llvm-nm.cpp +++ b/llvm/tools/llvm-nm/llvm-nm.cpp @@ -262,8 +262,6 @@ struct NMSymbol { uint64_t Size; char TypeChar; StringRef Name; - StringRef SectionName; - StringRef TypeName; BasicSymbolRef Sym; // The Sym field above points to the native symbol in the object file, // for Mach-O when we are creating symbols from the dyld info the above @@ -884,13 +882,8 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, std::string PaddedName(Name); while (PaddedName.length() < 20) PaddedName += " "; - std::string TNPad = ""; - int TNL = I->TypeName.size(); - while ((TNPad.length() + TNL) < 18) - TNPad += " "; outs() << PaddedName << "|" << SymbolAddrStr << "| " << I->TypeChar - << " |" << TNPad << I->TypeName << "|" << SymbolSizeStr - << "| |" << I->SectionName << "\n"; + << " | |" << SymbolSizeStr << "| |\n"; } } @@ -1085,37 +1078,7 @@ static bool isObject(SymbolicFile &Obj, basic_symbol_iterator I) { : elf_symbol_iterator(I)->getELFType() == ELF::STT_OBJECT; } -// For ELF object files, Set TypeName to the symbol typename, to be printed -// in the 'Type' column of the SYSV format output. -static void getNMTypeName(SymbolicFile &Obj, basic_symbol_iterator I, - StringRef &TypeName) { - if (isa<ELFObjectFileBase>(&Obj)) { - elf_symbol_iterator SymI(I); - SymI->getELFTypeName(TypeName); - } -} - -// Return Posix nm class type tag (single letter), but also set SecName and -// section and name, to be used in format=sysv output. -static char getNMClassTagAndSectionName(SymbolicFile &Obj, - basic_symbol_iterator I, - StringRef &SecName) { - if (isa<ELFObjectFileBase>(&Obj)) { - elf_symbol_iterator SymI(I); - - Expected<elf_section_iterator> SecIOrErr = SymI->getSection(); - if (!SecIOrErr) { - consumeError(SecIOrErr.takeError()); - return '?'; - } - int SI = SymI->getSectionIndex(); - if (SI == 0) { - SecName = "*UND*"; - } else { - elf_section_iterator secT = *SecIOrErr; - secT->getName(SecName); - } - } +static char getNMTypeChar(SymbolicFile &Obj, basic_symbol_iterator I) { uint32_t Symflags = I->getFlags(); if ((Symflags & object::SymbolRef::SF_Weak) && !isa<MachOObjectFile>(Obj)) { char Ret = isObject(Obj, I) ? 'v' : 'w'; @@ -1125,10 +1088,8 @@ static char getNMClassTagAndSectionName(SymbolicFile &Obj, if (Symflags & object::SymbolRef::SF_Undefined) return 'U'; - if (Symflags & object::SymbolRef::SF_Common) { - SecName = "*COM*"; + if (Symflags & object::SymbolRef::SF_Common) return 'C'; - } char Ret = '?'; if (Symflags & object::SymbolRef::SF_Absolute) @@ -1240,8 +1201,7 @@ dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName, } S.Address = *AddressOrErr; } - getNMTypeName(Obj, Sym, S.TypeName); - S.TypeChar = getNMClassTagAndSectionName(Obj, Sym, S.SectionName); + S.TypeChar = getNMTypeChar(Obj, Sym); std::error_code EC = Sym.printName(OS); if (EC && MachO) OS << "bad string index"; |