#ifndef LIBELFIN_WRAP_H_ #define LIBELFIN_WRAP_H_ #ifdef __cplusplus # define DEBUGUS_EXTERNC extern "C" #else # define DEBUGUS_EXTERNC #endif // __cplusplus #include #include #include #include #include "da.h" typedef struct { ssize_t line; const char *file; uint64_t addr; } AddrInfo; typedef struct { const char *name; uintptr_t addr; } Symbol; typedef struct { Symbol *items; size_t count, capacity; } Symbols; typedef void * PLibelfinBinding; DEBUGUS_EXTERNC PLibelfinBinding libelfin_wrap_get_binding(int fd, uintptr_t loadoffset); DEBUGUS_EXTERNC void libelfin_wrap_free_binding(PLibelfinBinding pbind); DEBUGUS_EXTERNC AddrInfo *libelfin_wrap_info_from_rip(PLibelfinBinding pbind, uint64_t rip); DEBUGUS_EXTERNC void libelfin_wrap_free_info(AddrInfo *ai); DEBUGUS_EXTERNC void libelfin_wrap_get_syms(PLibelfinBinding *pbind, Symbols *syms); #endif // LIBELFIN_WRAP_H_