#ifndef COSMOPOLITAN_LIBC_SYMBOLS_H_ #define COSMOPOLITAN_LIBC_SYMBOLS_H_ #include "libc/elf/elf.h" #include "libc/runtime/ezmap.h" #if !(__ASSEMBLER__ + __LINKER__ + 0) COSMOPOLITAN_C_START_ struct Symbol { unsigned addr_rva; unsigned name_rva; }; struct SymbolTable { union { struct MappedFile mf; struct { int64_t fd; struct Elf64_Ehdr *elf; size_t elfsize; }; }; size_t scratch; size_t count; intptr_t addr_base; intptr_t addr_end; const char *name_base; struct Symbol symbols[]; }; struct SymbolTable *GetSymbolTable(void); const char *FindComBinary(void); const char *FindDebugBinary(void); struct SymbolTable *OpenSymbolTable(const char *) nodiscard; int CloseSymbolTable(struct SymbolTable **); void __hook(void (*)(void), struct SymbolTable *); COSMOPOLITAN_C_END_ #endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */ #endif /* COSMOPOLITAN_LIBC_SYMBOLS_H_ */