diff options
author | Owen Anderson <resistor@mac.com> | 2011-10-21 17:50:59 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2011-10-21 17:50:59 +0000 |
commit | 3cb056797b17785cfd2429ce8232143d5aeb5e42 (patch) | |
tree | b480af01f939e545088f01889a936a90b1fc6c31 /include/llvm-c | |
parent | a054bcb4cf26f9710bf6b7b256ba7313260a7335 (diff) | |
download | external_llvm-3cb056797b17785cfd2429ce8232143d5aeb5e42.zip external_llvm-3cb056797b17785cfd2429ce8232143d5aeb5e42.tar.gz external_llvm-3cb056797b17785cfd2429ce8232143d5aeb5e42.tar.bz2 |
Expand the coverage of the libObject C bindings to include more SectionRef accessors as well as Symbol iterators.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142661 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm-c')
-rw-r--r-- | include/llvm-c/Object.h | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/include/llvm-c/Object.h b/include/llvm-c/Object.h index 7b1cf71..3e6e1e3 100644 --- a/include/llvm-c/Object.h +++ b/include/llvm-c/Object.h @@ -28,23 +28,42 @@ extern "C" { #endif - +// Opaque type wrappers typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef; - typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef; +typedef struct LLVMOpauqeSymbolIterator *LLVMSymbolIteratorRef; +// ObjectFile creation LLVMObjectFileRef LLVMCreateObjectFile(LLVMMemoryBufferRef MemBuf); void LLVMDisposeObjectFile(LLVMObjectFileRef ObjectFile); +// ObjectFile Section iterators LLVMSectionIteratorRef LLVMGetSections(LLVMObjectFileRef ObjectFile); void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI); LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile, LLVMSectionIteratorRef SI); void LLVMMoveToNextSection(LLVMSectionIteratorRef SI); + +// ObjectFile Symbol iterators +LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile); +void LLVMDisposeSymbolIterator(LLVMSymbolIteratorRef SI); +LLVMBool LLVMIsSymbolIteratorAtEnd(LLVMObjectFileRef ObjectFile, + LLVMSymbolIteratorRef SI); +void LLVMMoveToNextSymbol(LLVMSymbolIteratorRef SI); + +// SectionRef accessors const char *LLVMGetSectionName(LLVMSectionIteratorRef SI); uint64_t LLVMGetSectionSize(LLVMSectionIteratorRef SI); const char *LLVMGetSectionContents(LLVMSectionIteratorRef SI); +uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI); +int LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI, + LLVMSymbolIteratorRef Sym); +// SymbolRef accessors +const char *LLVMGetSymbolName(LLVMSymbolIteratorRef SI); +uint64_t LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI); +uint64_t LLVMGetSymbolOffset(LLVMSymbolIteratorRef SI); +uint64_t LLVMGetSymbolSize(LLVMSymbolIteratorRef SI); #ifdef __cplusplus } @@ -68,6 +87,16 @@ namespace llvm { return reinterpret_cast<LLVMSectionIteratorRef> (const_cast<section_iterator*>(SI)); } + + inline symbol_iterator *unwrap(LLVMSymbolIteratorRef SI) { + return reinterpret_cast<symbol_iterator*>(SI); + } + + inline LLVMSymbolIteratorRef + wrap(const symbol_iterator *SI) { + return reinterpret_cast<LLVMSymbolIteratorRef> + (const_cast<symbol_iterator*>(SI)); + } } } |