summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2011-10-21 18:21:22 +0000
committerOwen Anderson <resistor@mac.com>2011-10-21 18:21:22 +0000
commite2fa64ef22321c5771667a8f00dca737ecb0799c (patch)
treed0030862ccf87c85bf31fed3f79f33df3981572e
parent3cb056797b17785cfd2429ce8232143d5aeb5e42 (diff)
downloadllvm-e2fa64ef22321c5771667a8f00dca737ecb0799c.tar.gz
llvm-e2fa64ef22321c5771667a8f00dca737ecb0799c.tar.bz2
llvm-e2fa64ef22321c5771667a8f00dca737ecb0799c.tar.xz
Bind libObject API for obtaining the section containing a Symbol.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142667 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm-c/Object.h2
-rw-r--r--lib/Object/Object.cpp6
2 files changed, 8 insertions, 0 deletions
diff --git a/include/llvm-c/Object.h b/include/llvm-c/Object.h
index 3e6e1e3ffc..6acad85c55 100644
--- a/include/llvm-c/Object.h
+++ b/include/llvm-c/Object.h
@@ -43,6 +43,8 @@ void LLVMDisposeSectionIterator(LLVMSectionIteratorRef SI);
LLVMBool LLVMIsSectionIteratorAtEnd(LLVMObjectFileRef ObjectFile,
LLVMSectionIteratorRef SI);
void LLVMMoveToNextSection(LLVMSectionIteratorRef SI);
+void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
+ LLVMSymbolIteratorRef Sym);
// ObjectFile Symbol iterators
LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile);
diff --git a/lib/Object/Object.cpp b/lib/Object/Object.cpp
index 2ce98d7f9c..638105b56b 100644
--- a/lib/Object/Object.cpp
+++ b/lib/Object/Object.cpp
@@ -48,6 +48,12 @@ void LLVMMoveToNextSection(LLVMSectionIteratorRef SI) {
if (ec) report_fatal_error("LLVMMoveToNextSection failed: " + ec.message());
}
+void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
+ LLVMSymbolIteratorRef Sym) {
+ if (error_code ec = (*unwrap(Sym))->getSection(*unwrap(Sect)))
+ report_fatal_error(ec.message());
+}
+
// ObjectFile Symbol iterators
LLVMSymbolIteratorRef LLVMGetSymbols(LLVMObjectFileRef ObjectFile) {
symbol_iterator SI = unwrap(ObjectFile)->begin_symbols();