@@ -32,6 +32,7 @@ extern "C" {
32
32
typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef;
33
33
typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef;
34
34
typedef struct LLVMOpaqueSymbolIterator *LLVMSymbolIteratorRef;
35
+ typedef struct LLVMOpaqueRelocationIterator *LLVMRelocationIteratorRef;
35
36
36
37
// ObjectFile creation
37
38
LLVMObjectFileRef LLVMCreateObjectFile (LLVMMemoryBufferRef MemBuf);
@@ -61,6 +62,14 @@ uint64_t LLVMGetSectionAddress(LLVMSectionIteratorRef SI);
61
62
LLVMBool LLVMGetSectionContainsSymbol (LLVMSectionIteratorRef SI,
62
63
LLVMSymbolIteratorRef Sym);
63
64
65
+ // Section Relocation iterators
66
+ LLVMRelocationIteratorRef LLVMGetRelocations (LLVMSectionIteratorRef Section);
67
+ void LLVMDisposeRelocationIterator (LLVMRelocationIteratorRef RI);
68
+ LLVMBool LLVMIsRelocationIteratorAtEnd (LLVMSectionIteratorRef Section,
69
+ LLVMRelocationIteratorRef RI);
70
+ void LLVMMoveToNextRelocation (LLVMRelocationIteratorRef RI);
71
+
72
+
64
73
// SymbolRef accessors
65
74
const char *LLVMGetSymbolName (LLVMSymbolIteratorRef SI);
66
75
uint64_t LLVMGetSymbolAddress (LLVMSymbolIteratorRef SI);
@@ -99,6 +108,17 @@ namespace llvm {
99
108
return reinterpret_cast <LLVMSymbolIteratorRef>
100
109
(const_cast <symbol_iterator*>(SI));
101
110
}
111
+
112
+ inline relocation_iterator *unwrap (LLVMRelocationIteratorRef SI) {
113
+ return reinterpret_cast <relocation_iterator*>(SI);
114
+ }
115
+
116
+ inline LLVMRelocationIteratorRef
117
+ wrap (const relocation_iterator *SI) {
118
+ return reinterpret_cast <LLVMRelocationIteratorRef>
119
+ (const_cast <relocation_iterator*>(SI));
120
+ }
121
+
102
122
}
103
123
}
104
124
0 commit comments