#include "config.h" // Get the start of the stubs static const void* fstubBegin[0] __attribute__((section(".data.rplFuncStubs"))); #define EXPORT(name) \ extern void* name; \ const void* name##_stub __attribute__((section(".data.rplFuncStubs"))) = &name; \ #include "exports.h" // Get the end of the stubs static const void* fstubEnd[0] __attribute__((section(".data.rplFuncStubs"))); // Create a header with the name and stub begin/end in typedef struct { const char* name; const void* fstubBegin; const void* fstubEnd; } __attribute__((__packed__)) rpl_header; static const const char name[] __attribute__((section(".rodata.rplNames"))) = LIBRARY_NAME; static rpl_header header __attribute__((section(".lib.rplLibs"))) = { name, fstubBegin, fstubEnd, };