diff options
author | midipix <writeonce@midipix.org> | 2017-10-19 03:28:13 +0000 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2017-10-19 18:27:30 -0400 |
commit | 234f06285076f6a57bfa7f9c1edb40be25dbe681 (patch) | |
tree | 2fd099c72e6ed09e8d55b38a6f4f0d1a1b9df1d0 /arch | |
parent | 8b88c69b142375c9c7f75c8b2339441ff5401821 (diff) | |
download | mmglue-234f06285076f6a57bfa7f9c1edb40be25dbe681.tar.bz2 mmglue-234f06285076f6a57bfa7f9c1edb40be25dbe681.tar.xz |
_start(): implemented __libc_loader_init() for the ldso and vrfs flavors.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/nt32/peldso.h | 52 | ||||
-rw-r--r-- | arch/nt64/peldso.h | 52 |
2 files changed, 104 insertions, 0 deletions
diff --git a/arch/nt32/peldso.h b/arch/nt32/peldso.h new file mode 100644 index 0000000..bbe3e22 --- /dev/null +++ b/arch/nt32/peldso.h @@ -0,0 +1,52 @@ +#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 diff --git a/arch/nt64/peldso.h b/arch/nt64/peldso.h new file mode 100644 index 0000000..bbe3e22 --- /dev/null +++ b/arch/nt64/peldso.h @@ -0,0 +1,52 @@ +#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 |