123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- /*===-- llvm-c/Object.h - Object Lib C Iface --------------------*- C++ -*-===*/
- /* */
- /* The LLVM Compiler Infrastructure */
- /* */
- /* This file is distributed under the University of Illinois Open Source */
- /* License. See LICENSE.TXT for details. */
- /* */
- /*===----------------------------------------------------------------------===*/
- /* */
- /* This header declares the C interface to libLLVMObject.a, which */
- /* implements object file reading and writing. */
- /* */
- /* Many exotic languages can interoperate with C code but have a harder time */
- /* with C++ due to name mangling. So in addition to C, this interface enables */
- /* tools written in such languages. */
- /* */
- /*===----------------------------------------------------------------------===*/
- #ifndef LLVM_C_OBJECT_H
- #define LLVM_C_OBJECT_H
- #include "llvm-c/Core.h"
- #include "llvm/Config/llvm-config.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * @defgroup LLVMCObject Object file reading and writing
- * @ingroup LLVMC
- *
- * @{
- */
- // Opaque type wrappers
- typedef struct LLVMOpaqueObjectFile *LLVMObjectFileRef;
- typedef struct LLVMOpaqueSectionIterator *LLVMSectionIteratorRef;
- typedef struct LLVMOpaqueSymbolIterator *LLVMSymbolIteratorRef;
- typedef struct LLVMOpaqueRelocationIterator *LLVMRelocationIteratorRef;
- // 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);
- void LLVMMoveToContainingSection(LLVMSectionIteratorRef Sect,
- LLVMSymbolIteratorRef Sym);
- // 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);
- LLVMBool LLVMGetSectionContainsSymbol(LLVMSectionIteratorRef SI,
- LLVMSymbolIteratorRef Sym);
- // Section Relocation iterators
- LLVMRelocationIteratorRef LLVMGetRelocations(LLVMSectionIteratorRef Section);
- void LLVMDisposeRelocationIterator(LLVMRelocationIteratorRef RI);
- LLVMBool LLVMIsRelocationIteratorAtEnd(LLVMSectionIteratorRef Section,
- LLVMRelocationIteratorRef RI);
- void LLVMMoveToNextRelocation(LLVMRelocationIteratorRef RI);
- // SymbolRef accessors
- const char *LLVMGetSymbolName(LLVMSymbolIteratorRef SI);
- uint64_t LLVMGetSymbolAddress(LLVMSymbolIteratorRef SI);
- uint64_t LLVMGetSymbolSize(LLVMSymbolIteratorRef SI);
- // RelocationRef accessors
- uint64_t LLVMGetRelocationOffset(LLVMRelocationIteratorRef RI);
- LLVMSymbolIteratorRef LLVMGetRelocationSymbol(LLVMRelocationIteratorRef RI);
- uint64_t LLVMGetRelocationType(LLVMRelocationIteratorRef RI);
- // NOTE: Caller takes ownership of returned string of the two
- // following functions.
- const char *LLVMGetRelocationTypeName(LLVMRelocationIteratorRef RI);
- const char *LLVMGetRelocationValueString(LLVMRelocationIteratorRef RI);
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif /* defined(__cplusplus) */
- #endif
|