diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-05-29 18:05:37 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-05-29 18:05:37 +0200 |
| commit | f8a969d43ed26e64d21238ead0e9512360fb1fdd (patch) | |
| tree | 96dd023f4fef48fe62f8a1d9b7c3a1d61b0c2af4 /src/include/symbols.h | |
| parent | 55720342adbf22ba318a66b30ed9ea6ec789b032 (diff) | |
| download | box64-f8a969d43ed26e64d21238ead0e9512360fb1fdd.tar.gz box64-f8a969d43ed26e64d21238ead0e9512360fb1fdd.zip | |
Reworked elfloader, handle versionned symbols now
Diffstat (limited to 'src/include/symbols.h')
| -rw-r--r-- | src/include/symbols.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/include/symbols.h b/src/include/symbols.h new file mode 100644 index 00000000..49cd40f0 --- /dev/null +++ b/src/include/symbols.h @@ -0,0 +1,24 @@ +#ifndef __SYMBOLS_PRIVATE_H_ +#define __SYMBOLS_PRIVATE_H_ +#include <stdint.h> + +#include "custommem.h" +#include "khash.h" + +typedef struct versymbols_s versymbols_t; + +KHASH_MAP_DECLARE_STR(mapsymbols, versymbols_t) + +kh_mapsymbols_t* NewMapSymbols(); +void FreeMapSymbols(kh_mapsymbols_t** map); + +// replace if already there +void AddSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz, int ver, const char* vername); +uintptr_t FindSymbol(kh_mapsymbols_t *mapsymbols, const char* name, int ver, const char* vername, int local); +// don't add if already there + +void AddWeakSymbol(kh_mapsymbols_t *mapsymbols, const char* name, uintptr_t addr, uint32_t sz, int ver, const char* vername); +int GetSymbolStartEnd(kh_mapsymbols_t* mapsymbols, const char* name, uintptr_t* start, uintptr_t* end, int ver, const char* vername, int local); +const char* GetSymbolName(kh_mapsymbols_t* mapsymbols, void* p, uintptr_t* offs, uint32_t* sz, const char** vername); + +#endif //__SYMBOLS_PRIVATE_H_ \ No newline at end of file |