mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
[C++11] Introduce ObjectFile::symbols() to use range-based loops.
Reviewers: rafael Reviewed By: rafael CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D3081 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204031 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -53,9 +53,8 @@ static void patchFunctionNameInDILineInfo(const std::string &NewFunctionName,
|
||||
|
||||
ModuleInfo::ModuleInfo(ObjectFile *Obj, DIContext *DICtx)
|
||||
: Module(Obj), DebugInfoContext(DICtx) {
|
||||
for (symbol_iterator si = Module->symbol_begin(), se = Module->symbol_end();
|
||||
si != se; ++si) {
|
||||
addSymbol(si);
|
||||
for (const SymbolRef &Symbol : Module->symbols()) {
|
||||
addSymbol(Symbol);
|
||||
}
|
||||
bool NoSymbolTable = (Module->symbol_begin() == Module->symbol_end());
|
||||
if (NoSymbolTable && Module->isELF()) {
|
||||
@@ -63,20 +62,19 @@ ModuleInfo::ModuleInfo(ObjectFile *Obj, DIContext *DICtx)
|
||||
std::pair<symbol_iterator, symbol_iterator> IDyn =
|
||||
getELFDynamicSymbolIterators(Module);
|
||||
for (symbol_iterator si = IDyn.first, se = IDyn.second; si != se; ++si) {
|
||||
addSymbol(si);
|
||||
addSymbol(*si);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ModuleInfo::addSymbol(const symbol_iterator &Sym) {
|
||||
void ModuleInfo::addSymbol(const SymbolRef &Symbol) {
|
||||
SymbolRef::Type SymbolType;
|
||||
if (error(Sym->getType(SymbolType)))
|
||||
if (error(Symbol.getType(SymbolType)))
|
||||
return;
|
||||
if (SymbolType != SymbolRef::ST_Function &&
|
||||
SymbolType != SymbolRef::ST_Data)
|
||||
if (SymbolType != SymbolRef::ST_Function && SymbolType != SymbolRef::ST_Data)
|
||||
return;
|
||||
uint64_t SymbolAddress;
|
||||
if (error(Sym->getAddress(SymbolAddress)) ||
|
||||
if (error(Symbol.getAddress(SymbolAddress)) ||
|
||||
SymbolAddress == UnknownAddressOrSize)
|
||||
return;
|
||||
uint64_t SymbolSize;
|
||||
@@ -84,11 +82,11 @@ void ModuleInfo::addSymbol(const symbol_iterator &Sym) {
|
||||
// occupies the memory range up to the following symbol.
|
||||
if (isa<MachOObjectFile>(Module))
|
||||
SymbolSize = 0;
|
||||
else if (error(Sym->getSize(SymbolSize)) ||
|
||||
else if (error(Symbol.getSize(SymbolSize)) ||
|
||||
SymbolSize == UnknownAddressOrSize)
|
||||
return;
|
||||
StringRef SymbolName;
|
||||
if (error(Sym->getName(SymbolName)))
|
||||
if (error(Symbol.getName(SymbolName)))
|
||||
return;
|
||||
// Mach-O symbol table names have leading underscore, skip it.
|
||||
if (Module->isMachO() && SymbolName.size() > 0 && SymbolName[0] == '_')
|
||||
|
@@ -101,7 +101,7 @@ private:
|
||||
bool getNameFromSymbolTable(SymbolRef::Type Type, uint64_t Address,
|
||||
std::string &Name, uint64_t &Addr,
|
||||
uint64_t &Size) const;
|
||||
void addSymbol(const symbol_iterator &Sym);
|
||||
void addSymbol(const SymbolRef &Symbol);
|
||||
ObjectFile *Module;
|
||||
std::unique_ptr<DIContext> DebugInfoContext;
|
||||
|
||||
|
Reference in New Issue
Block a user