diff options
author | Philip Guenthe <guenther@cvs.openbsd.org> | 2010-05-11 16:27:15 +0000 |
---|---|---|
committer | Philip Guenthe <guenther@cvs.openbsd.org> | 2010-05-11 16:27:15 +0000 |
commit | cd94f64b4206409b7acf62500da883373312734e (patch) | |
tree | f47732c481e2c8cb778cdd7a293b9e32a297a772 /libexec/ld.so | |
parent | ed41d8396b0d7be2b5fd6ef0bafa429d126f141f (diff) |
Correct the _dl_sigprocmask() stub to take and store signal masks
as 32bit values instead of 64bit values, synchronizing it with the
libc stub. gcc4 apparently packs the stack in _dl_bind() more
tightly, so this was resulting in the saved rbx register being
overwriten.
ok drahn@, marco@, NicM@
Diffstat (limited to 'libexec/ld.so')
-rw-r--r-- | libexec/ld.so/amd64/ldasm.S | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libexec/ld.so/amd64/ldasm.S b/libexec/ld.so/amd64/ldasm.S index 07fdf37fa91..4e9ed24f1c5 100644 --- a/libexec/ld.so/amd64/ldasm.S +++ b/libexec/ld.so/amd64/ldasm.S @@ -1,4 +1,4 @@ -/* $OpenBSD: ldasm.S,v 1.6 2006/05/03 16:10:52 drahn Exp $ */ +/* $OpenBSD: ldasm.S,v 1.7 2010/05/11 16:27:14 guenther Exp $ */ /* * Copyright (c) 2002,2004 Dale Rahn @@ -106,14 +106,14 @@ DL_SYSCALL2(sysctl,__sysctl) .global _dl_sigprocmask .type _dl_sigprocmask,@function _dl_sigprocmask: - movq (%rsi),%rsi # fetch indirect... + movl (%rsi),%esi # fetch indirect... movl $SYS_sigprocmask, %eax movq %rcx, %r10 syscall jc 1b /* error: result = -errno */ testq %rdx,%rdx # test if old mask requested jz 2f - movq %rax,(%rdx) # store old mask + movl %eax,(%rdx) # store old mask xorq %rax,%rax 2: ret |