summaryrefslogtreecommitdiff
path: root/libexec/ld.so
diff options
context:
space:
mode:
Diffstat (limited to 'libexec/ld.so')
-rw-r--r--libexec/ld.so/i386/rtld_machine.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libexec/ld.so/i386/rtld_machine.c b/libexec/ld.so/i386/rtld_machine.c
index 027a7a389cc..4390b0d7ce9 100644
--- a/libexec/ld.so/i386/rtld_machine.c
+++ b/libexec/ld.so/i386/rtld_machine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: rtld_machine.c,v 1.36 2017/01/24 07:48:37 guenther Exp $ */
+/* $OpenBSD: rtld_machine.c,v 1.37 2017/06/04 14:20:12 naddy Exp $ */
/*
* Copyright (c) 2002 Dale Rahn
@@ -397,7 +397,8 @@ _dl_bind(elf_object_t *object, int index)
{
register long syscall_num __asm("eax") = SYS_kbind;
- __asm volatile("pushl 4 %3; pushl %3; pushl %2; pushl %1;"
+ __asm volatile("lea %3, %%edx; pushl 4(%%edx);"
+ " pushl (%%edx); pushl %2; pushl %1;"
" push %%eax; int $0x80; addl $20, %%esp" :
"+a" (syscall_num) : "r" (&buf), "i" (sizeof(buf)),
"m" (cookie) : "edx", "cc", "memory");