libObject/COFF: Add a function to get pointers to relocation entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240610 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Rui Ueyama 2015-06-25 00:07:39 +00:00
parent a0b4ef1f70
commit 7d6e44bde8
2 changed files with 13 additions and 0 deletions

View File

@ -757,6 +757,9 @@ public:
llvm_unreachable("null symbol table pointer!");
}
iterator_range<const coff_relocation *>
getRelocations(const coff_section *Sec) const;
std::error_code getSectionName(const coff_section *Sec, StringRef &Res) const;
uint64_t getSectionSize(const coff_section *Sec) const;
std::error_code getSectionContents(const coff_section *Sec,

View File

@ -16,6 +16,7 @@
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Triple.h"
#include "llvm/ADT/iterator_range.h"
#include "llvm/Support/COFF.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
@ -1029,6 +1030,15 @@ COFFObjectFile::getCOFFRelocation(const RelocationRef &Reloc) const {
return toRel(Reloc.getRawDataRefImpl());
}
iterator_range<const coff_relocation *>
COFFObjectFile::getRelocations(const coff_section *Sec) const {
const coff_relocation *I = getFirstReloc(Sec, Data, base());
const coff_relocation *E = I;
if (I)
E += getNumberOfRelocations(Sec, Data, base());
return make_range(I, E);
}
#define LLVM_COFF_SWITCH_RELOC_TYPE_NAME(reloc_type) \
case COFF::reloc_type: \
Res = #reloc_type; \