summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
authorVlad Tsyrklevich <vlad@tsyrklevich.net>2019-02-26 07:04:56 +0000
committerVlad Tsyrklevich <vlad@tsyrklevich.net>2019-02-26 07:04:56 +0000
commitc6d54ae9daad8fbcf26bbff2be6844bf05c19f6e (patch)
tree368d8d18a82679d18d461a13f5d5c6d00cbfd959 /llvm/tools
parent5d79eaa82f6f6f729784bb422576f96ae445118d (diff)
downloadbcm5719-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')
-rw-r--r--llvm/tools/llvm-nm/llvm-nm.cpp48
-rw-r--r--llvm/tools/llvm-readobj/ELFDumper.cpp10
2 files changed, 14 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";
diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp
index 53c390cffe4..ae2ac56e991 100644
--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
+++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
@@ -1104,6 +1104,16 @@ static const EnumEntry<unsigned> ElfSymbolVisibilities[] = {
{"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 }
};
OpenPOWER on IntegriCloud