mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-28 04:03:35 +08:00
alpha: Fix error path for PIC __brk
This commit is contained in:
parent
3c9d6deca5
commit
13488b2eae
@ -1,5 +1,7 @@
|
||||
2012-05-30 Richard Henderson <rth@twiddle.net>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/brk.S: Fix error path for PIC.
|
||||
|
||||
* sysdeps/alpha/fpu/libm-test-ulps: Regenerate.
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1993, 1995, 1996, 1997 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1993-2012 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Brendan Kehoe <brendan@zen.org>, 1993.
|
||||
|
||||
@ -36,16 +36,22 @@ __curbrk: .skip 8
|
||||
#endif
|
||||
|
||||
.text
|
||||
LEAF(__brk, 8)
|
||||
.align 4
|
||||
.globl __brk
|
||||
.ent __brk
|
||||
.usepv __brk, std
|
||||
|
||||
cfi_startproc
|
||||
__brk:
|
||||
ldgp gp, 0(t12)
|
||||
subq sp, 8, sp
|
||||
subq sp, 16, sp
|
||||
cfi_adjust_cfa_offset (16)
|
||||
#ifdef PROF
|
||||
.set noat
|
||||
lda AT, _mcount
|
||||
jsr AT, (AT), _mcount
|
||||
.set at
|
||||
#endif
|
||||
.prologue 1
|
||||
|
||||
/* Save the requested brk across the system call. */
|
||||
stq a0, 0(sp)
|
||||
@ -54,27 +60,25 @@ LEAF(__brk, 8)
|
||||
call_pal PAL_callsys
|
||||
|
||||
ldq a0, 0(sp)
|
||||
addq sp, 16, sp
|
||||
cfi_adjust_cfa_offset (-16)
|
||||
|
||||
/* Be prepared for an OSF-style brk. */
|
||||
bne a3, $err1
|
||||
bne a3, SYSCALL_ERROR_LABEL
|
||||
beq v0, $ok
|
||||
|
||||
/* Correctly handle the brk(0) query case. */
|
||||
cmoveq a0, v0, a0
|
||||
xor a0, v0, t0
|
||||
bne t0, $err0
|
||||
lda v0, ENOMEM
|
||||
bne t0, SYSCALL_ERROR_LABEL
|
||||
|
||||
/* Update __curbrk and return cleanly. */
|
||||
mov zero, v0
|
||||
lda v0, 0
|
||||
$ok: stq a0, __curbrk
|
||||
addq sp, 8, sp
|
||||
ret
|
||||
|
||||
/* What a horrible way to die. */
|
||||
$err0: ldi v0, ENOMEM
|
||||
$err1: addq sp, 8, sp
|
||||
SYSCALL_ERROR_HANDLER
|
||||
|
||||
END(__brk)
|
||||
PSEUDO_END(__brk)
|
||||
cfi_endproc
|
||||
|
||||
weak_alias (__brk, brk)
|
||||
|
Loading…
Reference in New Issue
Block a user