summaryrefslogtreecommitdiff
path: root/lib/MC/MCObjectSymbolizer.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2014-01-30 02:49:50 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2014-01-30 02:49:50 +0000
commitefdbec8b0a49fb67c3844be703548fdc6c1dded0 (patch)
tree040894fc0c18d09dfdfec8693a253bcf998cb8c5 /lib/MC/MCObjectSymbolizer.cpp
parent6bf3966f7fd92217360877d1c04ea8ffe47c11cc (diff)
downloadllvm-efdbec8b0a49fb67c3844be703548fdc6c1dded0.tar.gz
llvm-efdbec8b0a49fb67c3844be703548fdc6c1dded0.tar.bz2
llvm-efdbec8b0a49fb67c3844be703548fdc6c1dded0.tar.xz
Simplify the handling of iterators in ObjectFile.
None of the object file formats reported error on iterator increment. In retrospect, that is not too surprising: no object format stores symbols or sections in a linked list or other structure that requires chasing pointers. As a consequence, all error checking can be done on begin() and end(). This reduces the text segment of bin/llvm-readobj in my machine from 521233 to 518526 bytes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200442 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/MC/MCObjectSymbolizer.cpp')
-rw-r--r--lib/MC/MCObjectSymbolizer.cpp28
1 files changed, 7 insertions, 21 deletions
diff --git a/lib/MC/MCObjectSymbolizer.cpp b/lib/MC/MCObjectSymbolizer.cpp
index cdf743e6bb..3fb053dd78 100644
--- a/lib/MC/MCObjectSymbolizer.cpp
+++ b/lib/MC/MCObjectSymbolizer.cpp
@@ -52,10 +52,8 @@ MCMachObjectSymbolizer(MCContext &Ctx, OwningPtr<MCRelocationInfo> &RelInfo,
: MCObjectSymbolizer(Ctx, RelInfo, MOOF), MOOF(MOOF),
StubsStart(0), StubsCount(0), StubSize(0), StubsIndSymIndex(0) {
- error_code ec;
for (section_iterator SI = MOOF->begin_sections(), SE = MOOF->end_sections();
- SI != SE; SI.increment(ec)) {
- if (ec) break;
+ SI != SE; ++SI) {
StringRef Name; SI->getName(Name);
if (Name == "__stubs") {
SectionRef StubsSec = *SI;
@@ -91,10 +89,8 @@ StringRef MCMachObjectSymbolizer::findExternalFunctionAt(uint64_t Addr) {
StringRef SymName;
symbol_iterator SI = MOOF->begin_symbols();
- error_code ec;
- for (uint32_t i = 0; i != SymtabIdx; ++i) {
- SI.increment(ec);
- }
+ for (uint32_t i = 0; i != SymtabIdx; ++i)
+ ++SI;
SI->getName(SymName);
assert(SI != MOOF->end_symbols() && "Stub wasn't found in the symbol table!");
assert(SymName.front() == '_' && "Mach-O symbol doesn't start with '_'!");
@@ -159,10 +155,8 @@ tryAddingSymbolicOperand(MCInst &MI, raw_ostream &cStream,
return false;
uint64_t UValue = Value;
// FIXME: map instead of looping each time?
- error_code ec;
for (symbol_iterator SI = Obj->begin_symbols(), SE = Obj->end_symbols();
- SI != SE; SI.increment(ec)) {
- if (ec) break;
+ SI != SE; ++SI) {
uint64_t SymAddr; SI->getAddress(SymAddr);
uint64_t SymSize; SI->getSize(SymSize);
StringRef SymName; SI->getName(SymName);
@@ -239,11 +233,8 @@ const RelocationRef *MCObjectSymbolizer::findRelocationAt(uint64_t Addr) {
}
void MCObjectSymbolizer::buildSectionList() {
- error_code ec;
for (section_iterator SI = Obj->begin_sections(), SE = Obj->end_sections();
- SI != SE; SI.increment(ec)) {
- if (ec) break;
-
+ SI != SE; ++SI) {
bool RequiredForExec; SI->isRequiredForExecution(RequiredForExec);
if (RequiredForExec == false)
continue;
@@ -263,11 +254,8 @@ void MCObjectSymbolizer::buildSectionList() {
}
void MCObjectSymbolizer::buildRelocationByAddrMap() {
- error_code ec;
for (section_iterator SI = Obj->begin_sections(), SE = Obj->end_sections();
- SI != SE; SI.increment(ec)) {
- if (ec) break;
-
+ SI != SE; ++SI) {
section_iterator RelSecI = SI->getRelocatedSection();
if (RelSecI == Obj->end_sections())
continue;
@@ -279,9 +267,7 @@ void MCObjectSymbolizer::buildRelocationByAddrMap() {
continue;
for (relocation_iterator RI = SI->begin_relocations(),
RE = SI->end_relocations();
- RI != RE;
- RI.increment(ec)) {
- if (ec) break;
+ RI != RE; ++RI) {
// FIXME: libObject is inconsistent regarding error handling. The
// overwhelming majority of methods always return object_error::success,
// and assert for simple errors.. Here, ELFObjectFile::getRelocationOffset