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
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp
index 55ef0b7..a7346d5 100644
--- a/llvm/tools/llvm-nm/llvm-nm.cpp
+++ b/llvm/tools/llvm-nm/llvm-nm.cpp
@@ -262,8 +262,6 @@
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 @@
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 @@
: 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 @@
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 @@
}
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";
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 53c390c..ae2ac56 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -1104,6 +1104,16 @@
{"HIDDEN", "HIDDEN", ELF::STV_HIDDEN},
{"PROTECTED", "PROTECTED", ELF::STV_PROTECTED}};
+static const EnumEntry<unsigned> ElfSymbolTypes[] = {
+ {"None", "NOTYPE", ELF::STT_NOTYPE},
+ {"Object", "OBJECT", ELF::STT_OBJECT},
+ {"Function", "FUNC", ELF::STT_FUNC},
+ {"Section", "SECTION", ELF::STT_SECTION},
+ {"File", "FILE", ELF::STT_FILE},
+ {"Common", "COMMON", ELF::STT_COMMON},
+ {"TLS", "TLS", ELF::STT_TLS},
+ {"GNU_IFunc", "IFUNC", ELF::STT_GNU_IFUNC}};
+
static const EnumEntry<unsigned> AMDGPUSymbolTypes[] = {
{ "AMDGPU_HSA_KERNEL", ELF::STT_AMDGPU_HSA_KERNEL }
};