diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-08-08 14:35:49 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-08-08 14:35:49 +0000 |
commit | 9cba52f0aedbb95671e8a14e3fd5ff98381ff2b0 (patch) | |
tree | dd82b29998103d7d8ba34351e6fc3a12dc0ed7ac /ldso/ldso/sh/dl-startup.h | |
parent | 4c69b9f793fc1eae9190d8ba26dba25db616272f (diff) |
Patch from Stefan Allius and Edie C. Dost to add SuperH
shared library support. This also adds some cleaner error
handling, which I (Erik) then ported over to x86 and arm.
In addition Stefan added the following fixes:
- in hash.c was the lvalue handling of global library functions wrong.
To fix this I had to change the prototype of _dl_find_hash. (==> TIS and
ELF spec. Vers. 1.2)
- in ldso.c was the order of the .init sections calls wrong. Before we call
the initialization code of a library we have to check that all dependend
libraries are already initialized. This can easily made by calling it in the
revers loading order. For this I added a previous pointer chain.
- in ldso.c the ELF magics wasn't checked fo PPC, MIPS and SH architecture
Diffstat (limited to 'ldso/ldso/sh/dl-startup.h')
-rw-r--r-- | ldso/ldso/sh/dl-startup.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/ldso/ldso/sh/dl-startup.h b/ldso/ldso/sh/dl-startup.h new file mode 100644 index 000000000..798121dc0 --- /dev/null +++ b/ldso/ldso/sh/dl-startup.h @@ -0,0 +1,23 @@ +/* Any assmbly language/system dependent hacks needed to setup boot1.c so it + * will work as expected and cope with whatever platform specific wierdness is + * needed for this architecture. */ + +asm("\ + .text + .globl _dl_boot +_dl_boot: + mov r15, r4 + mov.l .L_dl_boot2, r1 + mova .L_dl_boot2, r0 + add r1, r0 + jsr @r0 + add #4, r4 + jmp @r0 + mov #0, r4 /* call _start with arg == 0 */ +.L_dl_boot2:\n\ + .long _dl_boot2-.\n\ + .previous\n\ +"); + +#define _dl_boot _dl_boot2 +#define LD_BOOT(X) static void * __attribute__ ((unused)) _dl_boot (X) |