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
This commit is contained in:
Rafael Espindola
2014-01-30 02:49:50 +00:00
parent 6bf3966f7f
commit efdbec8b0a
25 changed files with 147 additions and 365 deletions

View File

@@ -271,8 +271,7 @@ private:
error_code initExportTablePtr();
protected:
error_code getSymbolNext(DataRefImpl Symb, SymbolRef &Res) const
LLVM_OVERRIDE;
void moveSymbolNext(DataRefImpl &Symb) const LLVM_OVERRIDE;
error_code getSymbolName(DataRefImpl Symb, StringRef &Res) const
LLVM_OVERRIDE;
error_code getSymbolAddress(DataRefImpl Symb, uint64_t &Res) const
@@ -288,8 +287,7 @@ protected:
LLVM_OVERRIDE;
error_code getSymbolValue(DataRefImpl Symb, uint64_t &Val) const
LLVM_OVERRIDE;
error_code getSectionNext(DataRefImpl Sec, SectionRef &Res) const
LLVM_OVERRIDE;
void moveSectionNext(DataRefImpl &Sec) const LLVM_OVERRIDE;
error_code getSectionName(DataRefImpl Sec, StringRef &Res) const
LLVM_OVERRIDE;
error_code getSectionAddress(DataRefImpl Sec, uint64_t &Res) const
@@ -313,8 +311,7 @@ protected:
relocation_iterator section_rel_begin(DataRefImpl Sec) const LLVM_OVERRIDE;
relocation_iterator section_rel_end(DataRefImpl Sec) const LLVM_OVERRIDE;
error_code getRelocationNext(DataRefImpl Rel, RelocationRef &Res) const
LLVM_OVERRIDE;
void moveRelocationNext(DataRefImpl &Rel) const LLVM_OVERRIDE;
error_code getRelocationAddress(DataRefImpl Rel, uint64_t &Res) const
LLVM_OVERRIDE;
error_code getRelocationOffset(DataRefImpl Rel, uint64_t &Res) const
@@ -397,7 +394,7 @@ public:
: ImportTable(Table), Index(I), OwningObject(Owner) {}
bool operator==(const ImportDirectoryEntryRef &Other) const;
error_code getNext(ImportDirectoryEntryRef &Result) const;
void moveNext();
error_code getName(StringRef &Result) const;
error_code
@@ -421,7 +418,7 @@ public:
: ExportTable(Table), Index(I), OwningObject(Owner) {}
bool operator==(const ExportDirectoryEntryRef &Other) const;
error_code getNext(ExportDirectoryEntryRef &Result) const;
void moveNext();
error_code getDllName(StringRef &Result) const;
error_code getOrdinalBase(uint32_t &Result) const;