#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,
};