Blob Blame History Raw
#ifndef _PELDSO_H_
#define _PELDSO_H_

/* ldso flags (pemagine)*/
#define PE_LDSO_INTEGRAL_ONLY		0x00000000
#define PE_LDSO_DEFAULT_EXECUTABLE	0x00000001
#define PE_LDSO_STANDALONE_EXECUTABLE	0x00000002

/* error status (ntapi) */
#define NT_STATUS_NOINTERFACE		0xC00002B9

/* rtdata guid (ntapi) */
#define NT_PROCESS_GUID_RTDATA		{0x3e43ec84,0x1af1,0x4ede,{0xac,0xd8,0xc3,0xd9,0x20,0xaf,0xc8,0x68}}

/* abi guid */
struct __guid {
	unsigned int	data1;
	unsigned short	data2;
	unsigned short	data3;
	unsigned char	data4[8];
};

/* loader interfaces, statically linked (libldso.a) */
__attribute__((__visibility__("hidden"))) int    __ldso_terminate_current_process(
	int			estatus);

__attribute__((__visibility__("hidden"))) void * __ldso_get_procedure_address(
	const void *		base,
	const char *		name);

__attribute__((__visibility__("hidden"))) int    __ldso_load_framework_loader_ex(
	void **			baseaddr,
	void **			hroot,
	void **			hdsodir,
	const struct __guid *	abi,
	const unsigned short *	basename,
	const unsigned short *	rrelname,
	void *			refaddr,
	unsigned long *		buffer,
	unsigned int		bufsize,
	unsigned int		flags,
	unsigned int *		sysflags);

__attribute__((__visibility__("hidden"))) int    __ldso_load_framework_library(
	void **			baseaddr,
	void *			hat,
	const unsigned short *	atrelname,
	unsigned long *		buffer,
	unsigned int		bufsize,
	unsigned int *		sysflags);

#endif