mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Use early returns to reduce nesting.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204171 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
50e4d56b9f
commit
172c31844b
@ -699,79 +699,79 @@ static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
|
||||
static void PrintSymbolTable(const ObjectFile *o) {
|
||||
outs() << "SYMBOL TABLE:\n";
|
||||
|
||||
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o))
|
||||
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
|
||||
PrintCOFFSymbolTable(coff);
|
||||
else {
|
||||
for (const SymbolRef &Symbol : o->symbols()) {
|
||||
StringRef Name;
|
||||
uint64_t Address;
|
||||
SymbolRef::Type Type;
|
||||
uint64_t Size;
|
||||
uint32_t Flags = Symbol.getFlags();
|
||||
section_iterator Section = o->section_end();
|
||||
if (error(Symbol.getName(Name)))
|
||||
continue;
|
||||
if (error(Symbol.getAddress(Address)))
|
||||
continue;
|
||||
if (error(Symbol.getType(Type)))
|
||||
continue;
|
||||
if (error(Symbol.getSize(Size)))
|
||||
continue;
|
||||
if (error(Symbol.getSection(Section)))
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
for (const SymbolRef &Symbol : o->symbols()) {
|
||||
StringRef Name;
|
||||
uint64_t Address;
|
||||
SymbolRef::Type Type;
|
||||
uint64_t Size;
|
||||
uint32_t Flags = Symbol.getFlags();
|
||||
section_iterator Section = o->section_end();
|
||||
if (error(Symbol.getName(Name)))
|
||||
continue;
|
||||
if (error(Symbol.getAddress(Address)))
|
||||
continue;
|
||||
if (error(Symbol.getType(Type)))
|
||||
continue;
|
||||
if (error(Symbol.getSize(Size)))
|
||||
continue;
|
||||
if (error(Symbol.getSection(Section)))
|
||||
continue;
|
||||
|
||||
bool Global = Flags & SymbolRef::SF_Global;
|
||||
bool Weak = Flags & SymbolRef::SF_Weak;
|
||||
bool Absolute = Flags & SymbolRef::SF_Absolute;
|
||||
bool Global = Flags & SymbolRef::SF_Global;
|
||||
bool Weak = Flags & SymbolRef::SF_Weak;
|
||||
bool Absolute = Flags & SymbolRef::SF_Absolute;
|
||||
|
||||
if (Address == UnknownAddressOrSize)
|
||||
Address = 0;
|
||||
if (Size == UnknownAddressOrSize)
|
||||
Size = 0;
|
||||
char GlobLoc = ' ';
|
||||
if (Type != SymbolRef::ST_Unknown)
|
||||
GlobLoc = Global ? 'g' : 'l';
|
||||
char Debug = (Type == SymbolRef::ST_Debug || Type == SymbolRef::ST_File)
|
||||
? 'd' : ' ';
|
||||
char FileFunc = ' ';
|
||||
if (Type == SymbolRef::ST_File)
|
||||
FileFunc = 'f';
|
||||
else if (Type == SymbolRef::ST_Function)
|
||||
FileFunc = 'F';
|
||||
if (Address == UnknownAddressOrSize)
|
||||
Address = 0;
|
||||
if (Size == UnknownAddressOrSize)
|
||||
Size = 0;
|
||||
char GlobLoc = ' ';
|
||||
if (Type != SymbolRef::ST_Unknown)
|
||||
GlobLoc = Global ? 'g' : 'l';
|
||||
char Debug = (Type == SymbolRef::ST_Debug || Type == SymbolRef::ST_File)
|
||||
? 'd' : ' ';
|
||||
char FileFunc = ' ';
|
||||
if (Type == SymbolRef::ST_File)
|
||||
FileFunc = 'f';
|
||||
else if (Type == SymbolRef::ST_Function)
|
||||
FileFunc = 'F';
|
||||
|
||||
const char *Fmt = o->getBytesInAddress() > 4 ? "%016" PRIx64 :
|
||||
"%08" PRIx64;
|
||||
const char *Fmt = o->getBytesInAddress() > 4 ? "%016" PRIx64 :
|
||||
"%08" PRIx64;
|
||||
|
||||
outs() << format(Fmt, Address) << " "
|
||||
<< GlobLoc // Local -> 'l', Global -> 'g', Neither -> ' '
|
||||
<< (Weak ? 'w' : ' ') // Weak?
|
||||
<< ' ' // Constructor. Not supported yet.
|
||||
<< ' ' // Warning. Not supported yet.
|
||||
<< ' ' // Indirect reference to another symbol.
|
||||
<< Debug // Debugging (d) or dynamic (D) symbol.
|
||||
<< FileFunc // Name of function (F), file (f) or object (O).
|
||||
<< ' ';
|
||||
if (Absolute)
|
||||
outs() << "*ABS*";
|
||||
else if (Section == o->section_end())
|
||||
outs() << "*UND*";
|
||||
else {
|
||||
if (const MachOObjectFile *MachO =
|
||||
dyn_cast<const MachOObjectFile>(o)) {
|
||||
DataRefImpl DR = Section->getRawDataRefImpl();
|
||||
StringRef SegmentName = MachO->getSectionFinalSegmentName(DR);
|
||||
outs() << SegmentName << ",";
|
||||
}
|
||||
StringRef SectionName;
|
||||
if (error(Section->getName(SectionName)))
|
||||
SectionName = "";
|
||||
outs() << SectionName;
|
||||
outs() << format(Fmt, Address) << " "
|
||||
<< GlobLoc // Local -> 'l', Global -> 'g', Neither -> ' '
|
||||
<< (Weak ? 'w' : ' ') // Weak?
|
||||
<< ' ' // Constructor. Not supported yet.
|
||||
<< ' ' // Warning. Not supported yet.
|
||||
<< ' ' // Indirect reference to another symbol.
|
||||
<< Debug // Debugging (d) or dynamic (D) symbol.
|
||||
<< FileFunc // Name of function (F), file (f) or object (O).
|
||||
<< ' ';
|
||||
if (Absolute) {
|
||||
outs() << "*ABS*";
|
||||
} else if (Section == o->section_end()) {
|
||||
outs() << "*UND*";
|
||||
} else {
|
||||
if (const MachOObjectFile *MachO =
|
||||
dyn_cast<const MachOObjectFile>(o)) {
|
||||
DataRefImpl DR = Section->getRawDataRefImpl();
|
||||
StringRef SegmentName = MachO->getSectionFinalSegmentName(DR);
|
||||
outs() << SegmentName << ",";
|
||||
}
|
||||
outs() << '\t'
|
||||
<< format("%08" PRIx64 " ", Size)
|
||||
<< Name
|
||||
<< '\n';
|
||||
StringRef SectionName;
|
||||
if (error(Section->getName(SectionName)))
|
||||
SectionName = "";
|
||||
outs() << SectionName;
|
||||
}
|
||||
outs() << '\t'
|
||||
<< format("%08" PRIx64 " ", Size)
|
||||
<< Name
|
||||
<< '\n';
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user