summaryrefslogtreecommitdiff
path: root/ldso/ldso/sh/resolve.S
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-11-08 02:18:16 +0000
committerEric Andersen <andersen@codepoet.org>2002-11-08 02:18:16 +0000
commit92e03da6a446faa5ad8946fc90794e918db90454 (patch)
treea79cd864f60b5153ea6ec8880a4e2761e28cc9f6 /ldso/ldso/sh/resolve.S
parent8d6489ff23a5649c5ffdfcea7ad466cc82752de6 (diff)
Another SuperH patch from Stefan Allius. This make it so
the SuperH lib loader can be compiled by GCC 3.3
Diffstat (limited to 'ldso/ldso/sh/resolve.S')
-rw-r--r--ldso/ldso/sh/resolve.S15
1 files changed, 11 insertions, 4 deletions
diff --git a/ldso/ldso/sh/resolve.S b/ldso/ldso/sh/resolve.S
index f3eac9b32..1d3bc5cdc 100644
--- a/ldso/ldso/sh/resolve.S
+++ b/ldso/ldso/sh/resolve.S
@@ -49,10 +49,14 @@ _dl_linux_resolve:
mov r2, r0 ! link map address in r2 (SH PIC ABI)
1:
mov r0, r4 ! link map address in r0 (GNUs PLT)
+ mova .LG, r0
+ mov.l .LG, r5
+ add r5, r0
mov.l 3f, r5
- bsrf r5
- mov r1, r5 ! Reloc offset
-.jmp_loc:
+ mov.l @(r0, r5),r5
+ jsr @r5
+ mov r1, r5 ! Reloc offset
+
lds.l @r15+, pr ! Get register content back
#ifdef HAVE_FPU
@@ -78,7 +82,10 @@ _dl_linux_resolve:
mov.l @r15+, r3
.balign 4
+
3:
- .long _dl_linux_resolver@PLT-(.jmp_loc-(.))
+ .long _dl_linux_resolver@GOT
+.LG:
+ .long _GLOBAL_OFFSET_TABLE_
.size _dl_linux_resolve, . - _dl_linux_resolve