summaryrefslogtreecommitdiff
path: root/libexec/ld.so/sh
diff options
context:
space:
mode:
authorDale Rahn <drahn@cvs.openbsd.org>2006-11-10 22:26:41 +0000
committerDale Rahn <drahn@cvs.openbsd.org>2006-11-10 22:26:41 +0000
commit9ee00d51e1b2f24df4bc28f7fe015c0aa903cf12 (patch)
tree19cdab25db2acbf5d5582767a69791385f65f3da /libexec/ld.so/sh
parent798c224f33cc20a523c2f37e2b87b61358aeb2c4 (diff)
dont want to know where this stack corruption is coming from.
Diffstat (limited to 'libexec/ld.so/sh')
-rw-r--r--libexec/ld.so/sh/ldasm.S9
1 files changed, 7 insertions, 2 deletions
diff --git a/libexec/ld.so/sh/ldasm.S b/libexec/ld.so/sh/ldasm.S
index ed7ea5674c2..c3facca9724 100644
--- a/libexec/ld.so/sh/ldasm.S
+++ b/libexec/ld.so/sh/ldasm.S
@@ -1,4 +1,4 @@
-/* $OpenBSD: ldasm.S,v 1.2 2006/11/10 21:19:54 drahn Exp $ */
+/* $OpenBSD: ldasm.S,v 1.3 2006/11/10 22:26:40 drahn Exp $ */
/*
* Copyright (c) 2006 Dale Rahn
@@ -31,7 +31,8 @@
* bug that I couldn't find.
*/
-#define DL_DATA_SIZE (4096 + 16 * 4) /* XXX */
+#define DL_DATA_SIZE (8192 + 16 * 4) /* XXX */
+#define DATA_OFFSET (48) /* XXX */
#include <machine/asm.h>
#include <sys/syscall.h>
#include <SYS.h>
@@ -42,7 +43,9 @@ ENTRY(_dl_start)
mov r15, r4 // boot_bind(sp, dl_data) (sp)
mov.l .L_datasize, r0
sub r0, r15
+ mov.l .L_offset, r0
mov r15, r5
+ add r0, r5
mov r5, r13
// not trusting register to store the data, push it on the stack.
// callee/caller save questions
@@ -111,6 +114,8 @@ ENTRY(_dl_start)
.long _dl_boot-.L_call_boot
.L_datasize:
.long 4+4+DL_DATA_SIZE
+.L_offset:
+ .long DATA_OFFSET
.L_dynamic:
.long _DYNAMIC-.L_offbase
.L_loff: