Blame src/internal/mdso/mdso_specs.h

fcf54a
#ifndef MDSO_SPECS_H
fcf54a
#define MDSO_SPECS_H
fcf54a
fcf54a
#include <stdint.h>
fcf54a
fcf54a
#define MDSO_META_SECTION	".dsometa"
fcf54a
#define MDSO_SYMS_SECTION	".dsosyms"
fcf54a
#define MDSO_STRS_SECTION	".dsostrs"
fcf54a
#define MDSO_HASH_SECTION	".dsohash"
fcf54a
#define MDSO_DATA_SECTION	".dsodata"
fcf54a
#define MDSO_REFS_SECTION	".gotrefs"
fcf54a
fcf54a
#define MDSO_FLAG_LOADER_PATH	0x0001
fcf54a
#define MDSO_FLAG_LDSO_LIB	0x0002
fcf54a
#define MDSO_FLAG_PEB_PATH	0x0004
fcf54a
#define MDSO_FLAG_SYSTEM32	0x0008
fcf54a
fcf54a
struct mdso_arg;
fcf54a
struct mdso_meta_record;
fcf54a
struct mdso_hash_table;
fcf54a
struct mdso_sym_table;
fcf54a
fcf54a
typedef int32_t mdso_arg_conv_fn(char *, uint16_t **);
fcf54a
typedef int32_t mdso_arg_arr_conv_fn(struct mdso_arg *);
fcf54a
fcf54a
struct mdso_arg {
fcf54a
	char *		utf8;
fcf54a
	uint16_t *	utf16;
fcf54a
};
fcf54a
fcf54a
struct mdso_def_entry {
fcf54a
	void *				addr;
fcf54a
	char *				string;
fcf54a
};
fcf54a
fcf54a
struct mdso_got_entry {
fcf54a
	void *				addr;
fcf54a
	uintptr_t			rsymstr;
fcf54a
};
fcf54a
fcf54a
struct mdso_sym_entry {
fcf54a
	uintptr_t			rsymstr;
fcf54a
	uintptr_t			rmeta;
fcf54a
};
fcf54a
fcf54a
struct mdso_ref_entry {
fcf54a
	uint32_t			rsecrva;
fcf54a
	uint32_t			rbackref;
fcf54a
	uint32_t			rsymref;
fcf54a
};
fcf54a
fcf54a
struct mdso_meta_record {
fcf54a
	void *				base;
fcf54a
	const char *			name;
fcf54a
	uint32_t			flags;
fcf54a
	uint32_t			priority;
fcf54a
	uint32_t			nsyms;
fcf54a
	uint32_t			padding;
fcf54a
	struct mdso_hash_table *	hashtbl;
fcf54a
	struct mdso_sym_table *		symtbl;
fcf54a
	mdso_arg_conv_fn *		fncarg;
fcf54a
	mdso_arg_arr_conv_fn *		fncargarr;
fcf54a
	void *				fnr1;
fcf54a
	void *				fnr2;
fcf54a
};
fcf54a
fcf54a
fcf54a
struct mdso_meta_record_m32 {
fcf54a
	uint32_t			base;
fcf54a
	uint32_t			name;
fcf54a
	uint32_t			flags;
fcf54a
	uint32_t			priority;
fcf54a
	uint32_t			nsyms;
fcf54a
	uint32_t			padding;
fcf54a
	uint32_t			hashtbl;
fcf54a
	uint32_t			symtbl;
fcf54a
	uint32_t			fncarg;
fcf54a
	uint32_t			fncargarr;
fcf54a
	uint32_t			fnr1;
fcf54a
	uint32_t			fnr2;
fcf54a
};
fcf54a
fcf54a
struct mdso_meta_record_m64 {
fcf54a
	uint64_t			base;
fcf54a
	uint64_t			name;
fcf54a
	uint32_t			flags;
fcf54a
	uint32_t			priority;
fcf54a
	uint32_t			nsyms;
fcf54a
	uint32_t			padding;
fcf54a
	uint64_t			hashtbl;
fcf54a
	uint64_t			symtbl;
fcf54a
	uint64_t			fncarg;
fcf54a
	uint64_t			fncargarr;
fcf54a
	uint64_t			fnr1;
fcf54a
	uint64_t			fnr2;
fcf54a
};
fcf54a
fcf54a
#endif