From: David Majnemer Date: Sun, 31 Jul 2016 19:40:02 +0000 (+0000) Subject: [COFF] Expose iterators for ImportAddressTableRVA X-Git-Tag: llvmorg-4.0.0-rc1~13717 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=600495266100380fd7152feb7333b0353ce839b7;p=platform%2Fupstream%2Fllvm.git [COFF] Expose iterators for ImportAddressTableRVA Patch by Bandzi Michal! llvm-svn: 277298 --- diff --git a/llvm/include/llvm/Object/COFF.h b/llvm/include/llvm/Object/COFF.h index 896a9de..d34cd0b 100644 --- a/llvm/include/llvm/Object/COFF.h +++ b/llvm/include/llvm/Object/COFF.h @@ -899,6 +899,10 @@ public: imported_symbol_iterator imported_symbol_end() const; iterator_range imported_symbols() const; + imported_symbol_iterator lookup_table_begin() const; + imported_symbol_iterator lookup_table_end() const; + iterator_range lookup_table_symbols() const; + std::error_code getName(StringRef &Result) const; std::error_code getImportLookupTableRVA(uint32_t &Result) const; std::error_code getImportAddressTableRVA(uint32_t &Result) const; diff --git a/llvm/lib/Object/COFFObjectFile.cpp b/llvm/lib/Object/COFFObjectFile.cpp index 07cff3b..668f4d0 100644 --- a/llvm/lib/Object/COFFObjectFile.cpp +++ b/llvm/lib/Object/COFFObjectFile.cpp @@ -1250,13 +1250,13 @@ importedSymbolEnd(uint32_t RVA, const COFFObjectFile *Object) { imported_symbol_iterator ImportDirectoryEntryRef::imported_symbol_begin() const { - return importedSymbolBegin(ImportTable[Index].ImportLookupTableRVA, + return importedSymbolBegin(ImportTable[Index].ImportAddressTableRVA, OwningObject); } imported_symbol_iterator ImportDirectoryEntryRef::imported_symbol_end() const { - return importedSymbolEnd(ImportTable[Index].ImportLookupTableRVA, + return importedSymbolEnd(ImportTable[Index].ImportAddressTableRVA, OwningObject); } @@ -1265,6 +1265,21 @@ ImportDirectoryEntryRef::imported_symbols() const { return make_range(imported_symbol_begin(), imported_symbol_end()); } +imported_symbol_iterator ImportDirectoryEntryRef::lookup_table_begin() const { + return importedSymbolBegin(ImportTable[Index].ImportLookupTableRVA, + OwningObject); +} + +imported_symbol_iterator ImportDirectoryEntryRef::lookup_table_end() const { + return importedSymbolEnd(ImportTable[Index].ImportLookupTableRVA, + OwningObject); +} + +iterator_range +ImportDirectoryEntryRef::lookup_table_symbols() const { + return make_range(lookup_table_begin(), lookup_table_end()); +} + std::error_code ImportDirectoryEntryRef::getName(StringRef &Result) const { uintptr_t IntPtr = 0; if (std::error_code EC =