summaryrefslogtreecommitdiffhomepage
path: root/arch
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-10-19 03:28:13 +0000
committermidipix <writeonce@midipix.org>2017-10-19 18:27:30 -0400
commit234f06285076f6a57bfa7f9c1edb40be25dbe681 (patch)
tree2fd099c72e6ed09e8d55b38a6f4f0d1a1b9df1d0 /arch
parent8b88c69b142375c9c7f75c8b2339441ff5401821 (diff)
downloadmmglue-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.h52
-rw-r--r--arch/nt64/peldso.h52
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