summaryrefslogtreecommitdiffhomepage
path: root/arch/nt64/peldso.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/nt64/peldso.h')
-rw-r--r--arch/nt64/peldso.h52
1 files changed, 52 insertions, 0 deletions
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