diff options
author | midipix <writeonce@midipix.org> | 2017-10-15 15:08:48 -0400 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2017-10-15 18:11:08 -0400 |
commit | 4ab9c5092cb1fa7d8a0ead655c02d74b81e54011 (patch) | |
tree | 7e52c88266dd8d347199ff4d6c38a43f4230c773 | |
parent | 3cf872b2308a739c34cd402e0f0bdeec51734f16 (diff) | |
download | mmglue-4ab9c5092cb1fa7d8a0ead655c02d74b81e54011.tar.bz2 mmglue-4ab9c5092cb1fa7d8a0ead655c02d74b81e54011.tar.xz |
ldso preparation: added crtidata.c for exe's not using the framework loader.
-rw-r--r-- | crt/crtidata.c | 0 | ||||
-rw-r--r-- | crt/nt32/Scrt1.c | 9 | ||||
-rw-r--r-- | crt/nt32/crtidata.c | 16 | ||||
-rw-r--r-- | crt/nt64/Scrt1.c | 9 | ||||
-rw-r--r-- | crt/nt64/crt1.c | 6 | ||||
-rw-r--r-- | crt/nt64/crtidata.c | 16 |
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; +} |