summaryrefslogtreecommitdiffhomepage
path: root/crt
diff options
context:
space:
mode:
authormidipix <writeonce@midipix.org>2017-10-15 15:08:48 -0400
committermidipix <writeonce@midipix.org>2017-10-15 18:11:08 -0400
commit4ab9c5092cb1fa7d8a0ead655c02d74b81e54011 (patch)
tree7e52c88266dd8d347199ff4d6c38a43f4230c773 /crt
parent3cf872b2308a739c34cd402e0f0bdeec51734f16 (diff)
downloadmmglue-4ab9c5092cb1fa7d8a0ead655c02d74b81e54011.tar.bz2
mmglue-4ab9c5092cb1fa7d8a0ead655c02d74b81e54011.tar.xz
ldso preparation: added crtidata.c for exe's not using the framework loader.
Diffstat (limited to 'crt')
-rw-r--r--crt/crtidata.c0
-rw-r--r--crt/nt32/Scrt1.c9
-rw-r--r--crt/nt32/crtidata.c16
-rw-r--r--crt/nt64/Scrt1.c9
-rw-r--r--crt/nt64/crt1.c6
-rw-r--r--crt/nt64/crtidata.c16
6 files changed, 52 insertions, 4 deletions
diff --git a/crt/crtidata.c b/crt/crtidata.c
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/crt/crtidata.c
diff --git a/crt/nt32/Scrt1.c b/crt/nt32/Scrt1.c
index ff5789f..c635211 100644
--- a/crt/nt32/Scrt1.c
+++ b/crt/nt32/Scrt1.c
@@ -1,2 +1,11 @@
+#include "psxglue.h"
+
+__psx_init_routine __psx_init;
+
+__psx_init_routine * __psx_init_fn(void)
+{
+ return __psx_init;
+}
+
#define LIBC_STATIC
#include "crt1.c"
diff --git a/crt/nt32/crtidata.c b/crt/nt32/crtidata.c
new file mode 100644
index 0000000..6037c25
--- /dev/null
+++ b/crt/nt32/crtidata.c
@@ -0,0 +1,16 @@
+/****************************************/
+/* dynamically linked applications only */
+/* see also: Scrt1.c */
+/****************************************/
+
+#include "psxglue.h"
+
+#define __external_routine __attribute__((dllimport))
+
+__external_routine
+__psx_init_routine __psx_init;
+
+__psx_init_routine * __psx_init_fn(void)
+{
+ return __psx_init;
+}
diff --git a/crt/nt64/Scrt1.c b/crt/nt64/Scrt1.c
index ff5789f..c635211 100644
--- a/crt/nt64/Scrt1.c
+++ b/crt/nt64/Scrt1.c
@@ -1,2 +1,11 @@
+#include "psxglue.h"
+
+__psx_init_routine __psx_init;
+
+__psx_init_routine * __psx_init_fn(void)
+{
+ return __psx_init;
+}
+
#define LIBC_STATIC
#include "crt1.c"
diff --git a/crt/nt64/crt1.c b/crt/nt64/crt1.c
index 6f08278..0d319a1 100644
--- a/crt/nt64/crt1.c
+++ b/crt/nt64/crt1.c
@@ -19,8 +19,7 @@ extern const int __crtopt_vrfs __attribute((weak,alias("__disabled")));
int main();
-__external_routine
-__psx_init_routine __psx_init;
+__psx_init_routine * __psx_init_fn(void);
__external_routine
void __libc_entry_routine(void *,void *,int);
@@ -29,7 +28,6 @@ void _start(void)
{
__libc_entry_routine(
main,
- __psx_init,
+ __psx_init_fn(),
__crtopt_posix | __crtopt_dinga);
}
-
diff --git a/crt/nt64/crtidata.c b/crt/nt64/crtidata.c
new file mode 100644
index 0000000..6037c25
--- /dev/null
+++ b/crt/nt64/crtidata.c
@@ -0,0 +1,16 @@
+/****************************************/
+/* dynamically linked applications only */
+/* see also: Scrt1.c */
+/****************************************/
+
+#include "psxglue.h"
+
+#define __external_routine __attribute__((dllimport))
+
+__external_routine
+__psx_init_routine __psx_init;
+
+__psx_init_routine * __psx_init_fn(void)
+{
+ return __psx_init;
+}