mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 06:20:06 +00:00
Update.
2003-12-05 Martin Schwidefsky <schwidefsky@de.ibm.com> * sysdeps/s390/s390-32/elf/setjmp.S (setjmp, __setjmp): Add END statements. * sysdeps/s390/s390-64/elf/setjmp.S (setjmp, __setjmp): Likewise. * sysdeps/s390/s390-32/sysdep.h (ENTRY): Add cfi_startproc directive. (END): Add cfi_endproc directive. * sysdeps/s390/s390-64/sysdep.h (ENTRY, END): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Remove cfi_startproc and cfi_endproc directive. * sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise. * sysdeps/s390/s390-32/addmul_1.S (__mpn_addmul_1): Add CFI directives. * sysdeps/s390/s390-32/add_n.S (__mpn_add_n): Likewise. * sysdeps/s390/s390-64/add_n.S (__mpn_add_n): Likewise. * sysdeps/s390/s390-32/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. * sysdeps/s390/s390-64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. * sysdeps/s390/s390-32/mul_1.S (__mpn_mul_1): Likewise. * sysdeps/s390/s390-32/sub_n.S (__mpn_sub_n): Likewise. * sysdeps/s390/s390-64/sub_n.S (__mpn_sub_n): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add CFI directives. Move thread_start out of ENTRY/PSEUDO_END block to make backchain terminate. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise. * sysdeps/s390/s390-32/backtrace.c (trace_arg): New structure. (unwind_backtrace, unwind_getip): New variables. (init, __backchain_backtrace, backtrace_helper): New functions. (__backtrace): Use unwind info for backtrace instead of backchain walking if the unwind functions can be found. * sysdeps/s390/s390-64/backtrace.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: New file. * sysdeps/unix/sysv/linux/s390/sys/procfs.h (ELF_NGREG32): New #define. (elf_greg_t32, elf_gregset_t32, elf_fpregset_t32): New types. (elf_prstatus32, elf_prpsinfo32): New structures. (prgregset32_t, prfpregset32_t, prstatus32_t, prpsinfo32_t): New types. * scripts/data/c++-types-s390-linux-gnu.data: New file. * scripts/data/c++-types-s390x-linux-gnu.data: New file.
This commit is contained in:
parent
dd17514ce7
commit
844a34a2ae
52
ChangeLog
52
ChangeLog
@ -1,3 +1,55 @@
|
|||||||
|
2003-12-05 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||||
|
|
||||||
|
* sysdeps/s390/s390-32/elf/setjmp.S (setjmp, __setjmp): Add END
|
||||||
|
statements.
|
||||||
|
* sysdeps/s390/s390-64/elf/setjmp.S (setjmp, __setjmp): Likewise.
|
||||||
|
* sysdeps/s390/s390-32/sysdep.h (ENTRY): Add cfi_startproc directive.
|
||||||
|
(END): Add cfi_endproc directive.
|
||||||
|
* sysdeps/s390/s390-64/sysdep.h (ENTRY, END): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/socket.S (__socket): Remove
|
||||||
|
cfi_startproc and cfi_endproc directive.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/socket.S (__socket): Likewise.
|
||||||
|
* sysdeps/s390/s390-32/addmul_1.S (__mpn_addmul_1): Add CFI directives.
|
||||||
|
* sysdeps/s390/s390-32/add_n.S (__mpn_add_n): Likewise.
|
||||||
|
* sysdeps/s390/s390-64/add_n.S (__mpn_add_n): Likewise.
|
||||||
|
* sysdeps/s390/s390-32/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/s390/s390-64/dl-machine.h (ELF_MACHINE_RUNTIME_TRAMPOLINE):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/s390/s390-32/mul_1.S (__mpn_mul_1): Likewise.
|
||||||
|
* sysdeps/s390/s390-32/sub_n.S (__mpn_sub_n): Likewise.
|
||||||
|
* sysdeps/s390/s390-64/sub_n.S (__mpn_sub_n): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/mmap64.S (__mmap64): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/mmap.S (__mmap): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/syscall.S (syscall): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/syscall.S (syscall): Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/sysdep.S (__syscall_error):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S (__syscall_error):
|
||||||
|
Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/clone.S (__clone): Add CFI
|
||||||
|
directives. Move thread_start out of ENTRY/PSEUDO_END block to
|
||||||
|
make backchain terminate.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-64/clone.S (__clone): Likewise.
|
||||||
|
|
||||||
|
* sysdeps/s390/s390-32/backtrace.c (trace_arg): New structure.
|
||||||
|
(unwind_backtrace, unwind_getip): New variables.
|
||||||
|
(init, __backchain_backtrace, backtrace_helper): New functions.
|
||||||
|
(__backtrace): Use unwind info for backtrace instead of backchain
|
||||||
|
walking if the unwind functions can be found.
|
||||||
|
* sysdeps/s390/s390-64/backtrace.c: Likewise.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: New file.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/s390/sys/procfs.h (ELF_NGREG32): New #define.
|
||||||
|
(elf_greg_t32, elf_gregset_t32, elf_fpregset_t32): New types.
|
||||||
|
(elf_prstatus32, elf_prpsinfo32): New structures.
|
||||||
|
(prgregset32_t, prfpregset32_t, prstatus32_t, prpsinfo32_t): New types.
|
||||||
|
|
||||||
|
* scripts/data/c++-types-s390-linux-gnu.data: New file.
|
||||||
|
* scripts/data/c++-types-s390x-linux-gnu.data: New file.
|
||||||
|
|
||||||
2003-11-30 Petter Reinholdtsen <pere@hungry.com>
|
2003-11-30 Petter Reinholdtsen <pere@hungry.com>
|
||||||
|
|
||||||
* stdlib/strfmon.c: Correct formatting of international currency
|
* stdlib/strfmon.c: Correct formatting of international currency
|
||||||
|
58
scripts/data/c++-types-s390-linux-gnu.data
Normal file
58
scripts/data/c++-types-s390-linux-gnu.data
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
blkcnt64_t:x
|
||||||
|
blkcnt_t:l
|
||||||
|
blksize_t:l
|
||||||
|
caddr_t:Pc
|
||||||
|
clockid_t:i
|
||||||
|
clock_t:l
|
||||||
|
daddr_t:i
|
||||||
|
dev_t:y
|
||||||
|
fd_mask:l
|
||||||
|
fsblkcnt64_t:y
|
||||||
|
fsblkcnt_t:m
|
||||||
|
fsfilcnt64_t:y
|
||||||
|
fsfilcnt_t:m
|
||||||
|
fsid_t:8__fsid_t
|
||||||
|
gid_t:j
|
||||||
|
id_t:j
|
||||||
|
ino64_t:y
|
||||||
|
ino_t:m
|
||||||
|
int16_t:s
|
||||||
|
int32_t:i
|
||||||
|
int64_t:x
|
||||||
|
int8_t:a
|
||||||
|
intptr_t:i
|
||||||
|
key_t:i
|
||||||
|
loff_t:x
|
||||||
|
mode_t:j
|
||||||
|
nlink_t:j
|
||||||
|
off64_t:x
|
||||||
|
off_t:l
|
||||||
|
pid_t:i
|
||||||
|
pthread_key_t:j
|
||||||
|
pthread_once_t:i
|
||||||
|
pthread_spinlock_t:i
|
||||||
|
pthread_t:m
|
||||||
|
quad_t:x
|
||||||
|
register_t:i
|
||||||
|
rlim64_t:y
|
||||||
|
rlim_t:m
|
||||||
|
sigset_t:10__sigset_t
|
||||||
|
size_t:m
|
||||||
|
socklen_t:j
|
||||||
|
ssize_t:l
|
||||||
|
suseconds_t:l
|
||||||
|
time_t:l
|
||||||
|
u_char:h
|
||||||
|
uid_t:j
|
||||||
|
uint:j
|
||||||
|
u_int:j
|
||||||
|
u_int16_t:t
|
||||||
|
u_int32_t:j
|
||||||
|
u_int64_t:y
|
||||||
|
u_int8_t:h
|
||||||
|
ulong:m
|
||||||
|
u_long:m
|
||||||
|
u_quad_t:y
|
||||||
|
useconds_t:j
|
||||||
|
ushort:t
|
||||||
|
u_short:t
|
58
scripts/data/c++-types-s390x-linux-gnu.data
Normal file
58
scripts/data/c++-types-s390x-linux-gnu.data
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
blkcnt64_t:l
|
||||||
|
blkcnt_t:l
|
||||||
|
blksize_t:l
|
||||||
|
caddr_t:Pc
|
||||||
|
clockid_t:i
|
||||||
|
clock_t:l
|
||||||
|
daddr_t:i
|
||||||
|
dev_t:m
|
||||||
|
fd_mask:l
|
||||||
|
fsblkcnt64_t:m
|
||||||
|
fsblkcnt_t:m
|
||||||
|
fsfilcnt64_t:m
|
||||||
|
fsfilcnt_t:m
|
||||||
|
fsid_t:8__fsid_t
|
||||||
|
gid_t:j
|
||||||
|
id_t:j
|
||||||
|
ino64_t:m
|
||||||
|
ino_t:m
|
||||||
|
int16_t:s
|
||||||
|
int32_t:i
|
||||||
|
int64_t:l
|
||||||
|
int8_t:a
|
||||||
|
intptr_t:l
|
||||||
|
key_t:i
|
||||||
|
loff_t:l
|
||||||
|
mode_t:j
|
||||||
|
nlink_t:m
|
||||||
|
off64_t:l
|
||||||
|
off_t:l
|
||||||
|
pid_t:i
|
||||||
|
pthread_key_t:j
|
||||||
|
pthread_once_t:i
|
||||||
|
pthread_spinlock_t:i
|
||||||
|
pthread_t:m
|
||||||
|
quad_t:l
|
||||||
|
register_t:l
|
||||||
|
rlim64_t:m
|
||||||
|
rlim_t:m
|
||||||
|
sigset_t:10__sigset_t
|
||||||
|
size_t:m
|
||||||
|
socklen_t:j
|
||||||
|
ssize_t:l
|
||||||
|
suseconds_t:l
|
||||||
|
time_t:l
|
||||||
|
u_char:h
|
||||||
|
uid_t:j
|
||||||
|
uint:j
|
||||||
|
u_int:j
|
||||||
|
u_int16_t:t
|
||||||
|
u_int32_t:j
|
||||||
|
u_int64_t:m
|
||||||
|
u_int8_t:h
|
||||||
|
ulong:m
|
||||||
|
u_long:m
|
||||||
|
u_quad_t:m
|
||||||
|
useconds_t:j
|
||||||
|
ushort:t
|
||||||
|
u_short:t
|
@ -33,6 +33,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__mpn_add_n)
|
ENTRY(__mpn_add_n)
|
||||||
st %r6,24(%r15) # save register 6
|
st %r6,24(%r15) # save register 6
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
sr %r1,%r1
|
sr %r1,%r1
|
||||||
lhi %r0,1 # cannot use ahi to add carry, use alr
|
lhi %r0,1 # cannot use ahi to add carry, use alr
|
||||||
.L0: l %r6,0(%r1,%r3) # .L0 -> no carry from last add
|
.L0: l %r6,0(%r1,%r3) # .L0 -> no carry from last add
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__mpn_addmul_1)
|
ENTRY(__mpn_addmul_1)
|
||||||
st %r6,24(%r15)
|
st %r6,24(%r15)
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
slr %r6,%r6 # cy_limb = 0
|
slr %r6,%r6 # cy_limb = 0
|
||||||
.L0: icm %r1,15,0(%r3) # get s1_ptr[i]
|
.L0: icm %r1,15,0(%r3) # get s1_ptr[i]
|
||||||
mr %r0,%r5 # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
|
mr %r0,%r5 # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return backtrace of current program state.
|
/* Return backtrace of current program state.
|
||||||
Copyright (C) 2000, 2001 Free Software Foundation, Inc.
|
Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -18,8 +18,12 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#include <bits/libc-lock.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unwind.h>
|
||||||
|
|
||||||
/* This is a global variable set at program start time. It marks the
|
/* This is a global variable set at program start time. It marks the
|
||||||
highest used stack address. */
|
highest used stack address. */
|
||||||
@ -51,10 +55,31 @@ struct layout
|
|||||||
int empty[2];
|
int empty[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
int
|
struct trace_arg
|
||||||
__backtrace (array, size)
|
{
|
||||||
void **array;
|
void **array;
|
||||||
int size;
|
int cnt, size;
|
||||||
|
};
|
||||||
|
|
||||||
|
static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
|
||||||
|
static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
init (void)
|
||||||
|
{
|
||||||
|
void *handle = __libc_dlopen ("libgcc_s.so.1");
|
||||||
|
|
||||||
|
if (handle == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
unwind_backtrace = __libc_dlsym (handle, "_Unwind_Backtrace");
|
||||||
|
unwind_getip = __libc_dlsym (handle, "_Unwind_GetIP");
|
||||||
|
if (unwind_getip == NULL)
|
||||||
|
unwind_backtrace = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
__backchain_backtrace (void **array, int size)
|
||||||
{
|
{
|
||||||
/* We assume that all the code is generated with frame pointers set. */
|
/* We assume that all the code is generated with frame pointers set. */
|
||||||
struct layout *stack;
|
struct layout *stack;
|
||||||
@ -71,11 +96,42 @@ __backtrace (array, size)
|
|||||||
out of range. */
|
out of range. */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
array[cnt++] = stack->save_grps[8] & 0x7fffffff;
|
array[cnt++] = (void *) (stack->save_grps[8] & 0x7fffffff);
|
||||||
|
|
||||||
stack = (struct layout *) stack->back_chain;
|
stack = (struct layout *) stack->back_chain;
|
||||||
}
|
}
|
||||||
|
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static _Unwind_Reason_Code
|
||||||
|
backtrace_helper (struct _Unwind_Context *ctx, void *a)
|
||||||
|
{
|
||||||
|
struct trace_arg *arg = a;
|
||||||
|
|
||||||
|
/* We are first called with address in the __backtrace function.
|
||||||
|
Skip it. */
|
||||||
|
if (arg->cnt != -1)
|
||||||
|
arg->array[arg->cnt] = (void *) unwind_getip (ctx);
|
||||||
|
if (++arg->cnt == arg->size)
|
||||||
|
return _URC_END_OF_STACK;
|
||||||
|
return _URC_NO_REASON;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
__backtrace (void **array, int size)
|
||||||
|
{
|
||||||
|
struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
|
||||||
|
__libc_once_define (static, once);
|
||||||
|
|
||||||
|
__libc_once (once, init);
|
||||||
|
if (unwind_backtrace == NULL)
|
||||||
|
return __backchain_backtrace (array, size);
|
||||||
|
|
||||||
|
if (size >= 1)
|
||||||
|
unwind_backtrace (backtrace_helper, &arg);
|
||||||
|
|
||||||
|
return arg.cnt != -1 ? arg.cnt : 0;
|
||||||
|
}
|
||||||
|
|
||||||
weak_alias (__backtrace, backtrace)
|
weak_alias (__backtrace, backtrace)
|
||||||
|
@ -146,12 +146,14 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
|||||||
.globl _dl_runtime_resolve\n\
|
.globl _dl_runtime_resolve\n\
|
||||||
.type _dl_runtime_resolve, @function\n\
|
.type _dl_runtime_resolve, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_resolve:\n\
|
_dl_runtime_resolve:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
stm 2,5,32(15)\n\
|
stm 2,5,32(15)\n\
|
||||||
st 14,48(15)\n\
|
st 14,48(15)\n\
|
||||||
lr 0,15\n\
|
lr 0,15\n\
|
||||||
ahi 15,-96\n\
|
ahi 15,-96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(96)"\n\
|
||||||
st 0,0(15)\n\
|
st 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lm 2,3,120(15)\n\
|
lm 2,3,120(15)\n\
|
||||||
@ -162,21 +164,25 @@ _dl_runtime_resolve:\n\
|
|||||||
lr 1,2 # function addr returned in r2\n\
|
lr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
ahi 15,96\n\
|
ahi 15,96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-96)" \n\
|
||||||
l 14,48(15)\n\
|
l 14,48(15)\n\
|
||||||
lm 2,5,32(15)\n\
|
lm 2,5,32(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
1: .long fixup-1b\n\
|
1: .long fixup-1b\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||||
\n\
|
\n\
|
||||||
.globl _dl_runtime_profile\n\
|
.globl _dl_runtime_profile\n\
|
||||||
.type _dl_runtime_profile, @function\n\
|
.type _dl_runtime_profile, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_profile:\n\
|
_dl_runtime_profile:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
stm 2,5,32(15)\n\
|
stm 2,5,32(15)\n\
|
||||||
st 14,48(15)\n\
|
st 14,48(15)\n\
|
||||||
lr 0,15\n\
|
lr 0,15\n\
|
||||||
ahi 15,-96\n\
|
ahi 15,-96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(96)"\n\
|
||||||
st 0,0(15)\n\
|
st 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lm 2,3,120(15)\n\
|
lm 2,3,120(15)\n\
|
||||||
@ -189,10 +195,12 @@ _dl_runtime_profile:\n\
|
|||||||
lr 1,2 # function addr returned in r2\n\
|
lr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
ahi 15,96\n\
|
ahi 15,96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-96)" \n\
|
||||||
l 14,48(15)\n\
|
l 14,48(15)\n\
|
||||||
lm 2,5,32(15)\n\
|
lm 2,5,32(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
1: .long profile_fixup-1b\n\
|
1: .long profile_fixup-1b\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||||
");
|
");
|
||||||
#else
|
#else
|
||||||
@ -204,6 +212,7 @@ _dl_runtime_profile:\n\
|
|||||||
.type _dl_runtime_resolve, @function\n\
|
.type _dl_runtime_resolve, @function\n\
|
||||||
.type _dl_runtime_profile, @function\n\
|
.type _dl_runtime_profile, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_resolve:\n\
|
_dl_runtime_resolve:\n\
|
||||||
_dl_runtime_profile:\n\
|
_dl_runtime_profile:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
@ -211,6 +220,7 @@ _dl_runtime_profile:\n\
|
|||||||
st 14,48(15)\n\
|
st 14,48(15)\n\
|
||||||
lr 0,15\n\
|
lr 0,15\n\
|
||||||
ahi 15,-96\n\
|
ahi 15,-96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(96)"\n\
|
||||||
st 0,0(15)\n\
|
st 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lm 2,3,120(15)\n\
|
lm 2,3,120(15)\n\
|
||||||
@ -223,10 +233,12 @@ _dl_runtime_profile:\n\
|
|||||||
lr 1,2 # function addr returned in r2\n\
|
lr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
ahi 15,96\n\
|
ahi 15,96\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-96)" \n\
|
||||||
l 14,48(15)\n\
|
l 14,48(15)\n\
|
||||||
lm 2,5,32(15)\n\
|
lm 2,5,32(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
1: .long fixup-1b\n\
|
1: .long fixup-1b\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||||
");
|
");
|
||||||
|
@ -34,9 +34,15 @@ END (setjmp)
|
|||||||
/* Binary compatibility entry point. */
|
/* Binary compatibility entry point. */
|
||||||
ENTRY(_setjmp)
|
ENTRY(_setjmp)
|
||||||
.weak C_SYMBOL_NAME (_setjmp)
|
.weak C_SYMBOL_NAME (_setjmp)
|
||||||
|
lhi %r3,0 /* second argument of zero */
|
||||||
|
j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
|
||||||
|
END (_setjmp)
|
||||||
libc_hidden_def (_setjmp)
|
libc_hidden_def (_setjmp)
|
||||||
|
|
||||||
ENTRY(__setjmp)
|
ENTRY(__setjmp)
|
||||||
lhi %r3,0 /* second argument of zero */
|
lhi %r3,0 /* second argument of zero */
|
||||||
|
j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
|
||||||
|
END (__setjmp)
|
||||||
|
|
||||||
ENTRY(__sigsetjmp)
|
ENTRY(__sigsetjmp)
|
||||||
.Linternal_sigsetjmp:
|
.Linternal_sigsetjmp:
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__mpn_mul_1)
|
ENTRY(__mpn_mul_1)
|
||||||
st %r6,24(%r15)
|
st %r6,24(%r15)
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
slr %r6,%r6 # cy_limb = 0
|
slr %r6,%r6 # cy_limb = 0
|
||||||
.L0: icm %r1,15,0(%r3) # get s1_ptr[i]
|
.L0: icm %r1,15,0(%r3) # get s1_ptr[i]
|
||||||
mr %r0,%r5 # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
|
mr %r0,%r5 # umul_ppmm(prod_high,prod_low,s1_ptr[j],s2_limb)
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
|
|
||||||
ENTRY(__mpn_sub_n)
|
ENTRY(__mpn_sub_n)
|
||||||
st %r6,24(%r15) # save register 6
|
st %r6,24(%r15) # save register 6
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
sr %r1,%r1
|
sr %r1,%r1
|
||||||
lhi %r0,1 # cannot use ahi to add carry, use slr
|
lhi %r0,1 # cannot use ahi to add carry, use slr
|
||||||
.L0: l %r6,0(%r1,%r3) # .L0 -> no carry from last sub
|
.L0: l %r6,0(%r1,%r3) # .L0 -> no carry from last sub
|
||||||
|
@ -51,10 +51,12 @@
|
|||||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||||
.align ALIGNARG(2); \
|
.align ALIGNARG(2); \
|
||||||
C_LABEL(name) \
|
C_LABEL(name) \
|
||||||
|
cfi_startproc; \
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#undef END
|
#undef END
|
||||||
#define END(name) \
|
#define END(name) \
|
||||||
|
cfi_endproc; \
|
||||||
ASM_SIZE_DIRECTIVE(name) \
|
ASM_SIZE_DIRECTIVE(name) \
|
||||||
|
|
||||||
/* If compiled for profiling, call `mcount' at the start of each function. */
|
/* If compiled for profiling, call `mcount' at the start of each function. */
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__mpn_add_n)
|
ENTRY(__mpn_add_n)
|
||||||
stg %r6,48(%r15) # save register 6
|
stg %r6,48(%r15) # save register 6
|
||||||
|
cfi_offset (%r6,-112)
|
||||||
slgr %r1,%r1
|
slgr %r1,%r1
|
||||||
lghi %r0,1 # cannot use ahi to add carry, use alr
|
lghi %r0,1 # cannot use ahi to add carry, use alr
|
||||||
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last add
|
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last add
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Return backtrace of current program state. 64 bit S/390 version.
|
/* Return backtrace of current program state. 64 bit S/390 version.
|
||||||
Copyright (C) 2001 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2003 Free Software Foundation, Inc.
|
||||||
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
@ -18,8 +18,12 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#include <bits/libc-lock.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
#include <execinfo.h>
|
#include <execinfo.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unwind.h>
|
||||||
|
|
||||||
|
|
||||||
/* This is a global variable set at program start time. It marks the
|
/* This is a global variable set at program start time. It marks the
|
||||||
@ -50,10 +54,31 @@ struct layout
|
|||||||
long empty[2];
|
long empty[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct trace_arg
|
||||||
|
{
|
||||||
|
void **array;
|
||||||
|
int cnt, size;
|
||||||
|
};
|
||||||
|
|
||||||
|
static _Unwind_Reason_Code (*unwind_backtrace) (_Unwind_Trace_Fn, void *);
|
||||||
|
static _Unwind_Ptr (*unwind_getip) (struct _Unwind_Context *);
|
||||||
|
|
||||||
|
static void
|
||||||
|
init (void)
|
||||||
|
{
|
||||||
|
void *handle = __libc_dlopen ("libgcc_s.so.1");
|
||||||
|
|
||||||
|
if (handle == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
unwind_backtrace = __libc_dlsym (handle, "_Unwind_Backtrace");
|
||||||
|
unwind_getip = __libc_dlsym (handle, "_Unwind_GetIP");
|
||||||
|
if (unwind_getip == NULL)
|
||||||
|
unwind_backtrace = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
__backtrace (array, size)
|
__backchain_backtrace (void **array, int size)
|
||||||
void **array;
|
|
||||||
int size;
|
|
||||||
{
|
{
|
||||||
/* We assume that all the code is generated with frame pointers set. */
|
/* We assume that all the code is generated with frame pointers set. */
|
||||||
struct layout *stack;
|
struct layout *stack;
|
||||||
@ -77,4 +102,35 @@ __backtrace (array, size)
|
|||||||
|
|
||||||
return cnt;
|
return cnt;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static _Unwind_Reason_Code
|
||||||
|
backtrace_helper (struct _Unwind_Context *ctx, void *a)
|
||||||
|
{
|
||||||
|
struct trace_arg *arg = a;
|
||||||
|
|
||||||
|
/* We are first called with address in the __backtrace function.
|
||||||
|
Skip it. */
|
||||||
|
if (arg->cnt != -1)
|
||||||
|
arg->array[arg->cnt] = (void *) unwind_getip (ctx);
|
||||||
|
if (++arg->cnt == arg->size)
|
||||||
|
return _URC_END_OF_STACK;
|
||||||
|
return _URC_NO_REASON;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
__backtrace (void **array, int size)
|
||||||
|
{
|
||||||
|
struct trace_arg arg = { .array = array, .size = size, .cnt = -1 };
|
||||||
|
__libc_once_define (static, once);
|
||||||
|
|
||||||
|
__libc_once (once, init);
|
||||||
|
if (unwind_backtrace == NULL)
|
||||||
|
return __backchain_backtrace (array, size);
|
||||||
|
|
||||||
|
if (size >= 1)
|
||||||
|
unwind_backtrace (backtrace_helper, &arg);
|
||||||
|
|
||||||
|
return arg.cnt != -1 ? arg.cnt : 0;
|
||||||
|
}
|
||||||
|
|
||||||
weak_alias (__backtrace, backtrace)
|
weak_alias (__backtrace, backtrace)
|
||||||
|
@ -139,12 +139,14 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
|
|||||||
.globl _dl_runtime_resolve\n\
|
.globl _dl_runtime_resolve\n\
|
||||||
.type _dl_runtime_resolve, @function\n\
|
.type _dl_runtime_resolve, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_resolve:\n\
|
_dl_runtime_resolve:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
stmg 2,5,64(15)\n\
|
stmg 2,5,64(15)\n\
|
||||||
stg 14,96(15)\n\
|
stg 14,96(15)\n\
|
||||||
lgr 0,15\n\
|
lgr 0,15\n\
|
||||||
aghi 15,-160\n\
|
aghi 15,-160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(160)"\n\
|
||||||
stg 0,0(15)\n\
|
stg 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lmg 2,3,208(15)\n\
|
lmg 2,3,208(15)\n\
|
||||||
@ -152,20 +154,24 @@ _dl_runtime_resolve:\n\
|
|||||||
lgr 1,2 # function addr returned in r2\n\
|
lgr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
aghi 15,160\n\
|
aghi 15,160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-160)" \n\
|
||||||
lg 14,96(15)\n\
|
lg 14,96(15)\n\
|
||||||
lmg 2,5,64(15)\n\
|
lmg 2,5,64(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||||
\n\
|
\n\
|
||||||
.globl _dl_runtime_profile\n\
|
.globl _dl_runtime_profile\n\
|
||||||
.type _dl_runtime_profile, @function\n\
|
.type _dl_runtime_profile, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_profile:\n\
|
_dl_runtime_profile:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
stmg 2,5,64(15)\n\
|
stmg 2,5,64(15)\n\
|
||||||
stg 14,96(15)\n\
|
stg 14,96(15)\n\
|
||||||
lgr 0,15\n\
|
lgr 0,15\n\
|
||||||
aghi 15,-160\n\
|
aghi 15,-160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(160)"\n\
|
||||||
stg 0,0(15)\n\
|
stg 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lmg 2,3,208(15)\n\
|
lmg 2,3,208(15)\n\
|
||||||
@ -175,9 +181,11 @@ _dl_runtime_profile:\n\
|
|||||||
lgr 1,2 # function addr returned in r2\n\
|
lgr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
aghi 15,160\n\
|
aghi 15,160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-160)" \n\
|
||||||
lg 14,96(15)\n\
|
lg 14,96(15)\n\
|
||||||
lmg 2,5,64(15)\n\
|
lmg 2,5,64(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||||
");
|
");
|
||||||
#else
|
#else
|
||||||
@ -189,6 +197,7 @@ _dl_runtime_profile:\n\
|
|||||||
.type _dl_runtime_resolve, @function\n\
|
.type _dl_runtime_resolve, @function\n\
|
||||||
.type _dl_runtime_profile, @function\n\
|
.type _dl_runtime_profile, @function\n\
|
||||||
.align 16\n\
|
.align 16\n\
|
||||||
|
" CFI_STARTPROC "\n\
|
||||||
_dl_runtime_resolve:\n\
|
_dl_runtime_resolve:\n\
|
||||||
_dl_runtime_profile:\n\
|
_dl_runtime_profile:\n\
|
||||||
# save registers\n\
|
# save registers\n\
|
||||||
@ -196,6 +205,7 @@ _dl_runtime_profile:\n\
|
|||||||
stg 14,96(15)\n\
|
stg 14,96(15)\n\
|
||||||
lgr 0,15\n\
|
lgr 0,15\n\
|
||||||
aghi 15,-160\n\
|
aghi 15,-160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(160)"\n\
|
||||||
stg 0,0(15)\n\
|
stg 0,0(15)\n\
|
||||||
# load args saved by PLT\n\
|
# load args saved by PLT\n\
|
||||||
lmg 2,3,208(15)\n\
|
lmg 2,3,208(15)\n\
|
||||||
@ -205,9 +215,11 @@ _dl_runtime_profile:\n\
|
|||||||
lgr 1,2 # function addr returned in r2\n\
|
lgr 1,2 # function addr returned in r2\n\
|
||||||
# restore registers\n\
|
# restore registers\n\
|
||||||
aghi 15,160\n\
|
aghi 15,160\n\
|
||||||
|
" CFI_ADJUST_CFA_OFFSET(-160)" \n\
|
||||||
lg 14,96(15)\n\
|
lg 14,96(15)\n\
|
||||||
lmg 2,5,64(15)\n\
|
lmg 2,5,64(15)\n\
|
||||||
br 1\n\
|
br 1\n\
|
||||||
|
" CFI_ENDPROC "\n\
|
||||||
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
.size _dl_runtime_resolve, .-_dl_runtime_resolve\n\
|
||||||
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
.size _dl_runtime_profile, .-_dl_runtime_profile\n\
|
||||||
");
|
");
|
||||||
|
@ -34,9 +34,15 @@ END (setjmp)
|
|||||||
/* Binary compatibility entry point. */
|
/* Binary compatibility entry point. */
|
||||||
ENTRY(_setjmp)
|
ENTRY(_setjmp)
|
||||||
.weak C_SYMBOL_NAME (_setjmp)
|
.weak C_SYMBOL_NAME (_setjmp)
|
||||||
|
slgr %r3,%r3 /* Second argument of zero. */
|
||||||
|
j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
|
||||||
|
END (setjmp)
|
||||||
libc_hidden_def (_setjmp)
|
libc_hidden_def (_setjmp)
|
||||||
|
|
||||||
ENTRY(__setjmp)
|
ENTRY(__setjmp)
|
||||||
slgr %r3,%r3 /* Second argument of zero. */
|
slgr %r3,%r3 /* Second argument of zero. */
|
||||||
|
j .Linternal_sigsetjmp /* Branch relativ to __sigsetjmp. */
|
||||||
|
END (setjmp)
|
||||||
|
|
||||||
ENTRY(__sigsetjmp)
|
ENTRY(__sigsetjmp)
|
||||||
.Linternal_sigsetjmp:
|
.Linternal_sigsetjmp:
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
ENTRY(__mpn_sub_n)
|
ENTRY(__mpn_sub_n)
|
||||||
stg %r6,48(%r15) # save register 6
|
stg %r6,48(%r15) # save register 6
|
||||||
|
cfi_offset (%r6,-112)
|
||||||
sgr %r1,%r1
|
sgr %r1,%r1
|
||||||
lghi %r0,1 # cannot use ahi to add carry, use slr
|
lghi %r0,1 # cannot use ahi to add carry, use slr
|
||||||
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last sub
|
.L0: lg %r6,0(%r1,%r3) # .L0 -> no carry from last sub
|
||||||
|
@ -51,10 +51,12 @@
|
|||||||
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function) \
|
||||||
.align ALIGNARG(2); \
|
.align ALIGNARG(2); \
|
||||||
C_LABEL(name) \
|
C_LABEL(name) \
|
||||||
|
cfi_startproc; \
|
||||||
CALL_MCOUNT
|
CALL_MCOUNT
|
||||||
|
|
||||||
#undef END
|
#undef END
|
||||||
#define END(name) \
|
#define END(name) \
|
||||||
|
cfi_endproc; \
|
||||||
ASM_SIZE_DIRECTIVE(name) \
|
ASM_SIZE_DIRECTIVE(name) \
|
||||||
|
|
||||||
/* If compiled for profiling, call `mcount' at the start of each function. */
|
/* If compiled for profiling, call `mcount' at the start of each function. */
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__clone)
|
ENTRY(__clone)
|
||||||
st %r6,24(%r15) /* store %r6 to save area */
|
st %r6,24(%r15) /* store %r6 to save area */
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
lr %r0,%r5 /* move *arg out of the way */
|
lr %r0,%r5 /* move *arg out of the way */
|
||||||
ltr %r1,%r2 /* check fn and move to %r1 */
|
ltr %r1,%r2 /* check fn and move to %r1 */
|
||||||
jz error /* no NULL function pointers */
|
jz error /* no NULL function pointers */
|
||||||
@ -50,6 +51,7 @@ ENTRY(__clone)
|
|||||||
error:
|
error:
|
||||||
lhi %r2,-EINVAL
|
lhi %r2,-EINVAL
|
||||||
j SYSCALL_ERROR_LABEL
|
j SYSCALL_ERROR_LABEL
|
||||||
|
PSEUDO_END (__clone)
|
||||||
|
|
||||||
thread_start:
|
thread_start:
|
||||||
/* fn is in gpr 1, arg in gpr 0 */
|
/* fn is in gpr 1, arg in gpr 0 */
|
||||||
@ -71,5 +73,4 @@ thread_start:
|
|||||||
br %r1 /* branch to _exit -> thread termination */
|
br %r1 /* branch to _exit -> thread termination */
|
||||||
.L1: .long _exit - .L0
|
.L1: .long _exit - .L0
|
||||||
#endif
|
#endif
|
||||||
PSEUDO_END (__clone)
|
|
||||||
weak_alias (__clone, clone)
|
weak_alias (__clone, clone)
|
||||||
|
@ -25,8 +25,19 @@
|
|||||||
ENTRY(__mmap)
|
ENTRY(__mmap)
|
||||||
/* Save registers and setup stack frame. */
|
/* Save registers and setup stack frame. */
|
||||||
stm %r6,%r15,24(%r15)
|
stm %r6,%r15,24(%r15)
|
||||||
|
cfi_offset (%r15, -36)
|
||||||
|
cfi_offset (%r14, -40)
|
||||||
|
cfi_offset (%r13, -44)
|
||||||
|
cfi_offset (%r12, -48)
|
||||||
|
cfi_offset (%r11, -52)
|
||||||
|
cfi_offset (%r10, -56)
|
||||||
|
cfi_offset (%r9, -60)
|
||||||
|
cfi_offset (%r8, -64)
|
||||||
|
cfi_offset (%r7, -68)
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
lr %r1,%r15
|
lr %r1,%r15
|
||||||
ahi %r15,-120 /* buy stack space */
|
ahi %r15,-120 /* buy stack space */
|
||||||
|
cfi_adjust_cfa_offset (120)
|
||||||
st %r1,0(%r15) /* store back chain */
|
st %r1,0(%r15) /* store back chain */
|
||||||
|
|
||||||
/* Store parameters on stack, because old_mmap/mmap2
|
/* Store parameters on stack, because old_mmap/mmap2
|
||||||
@ -57,6 +68,7 @@ ENTRY(__mmap)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
1: l %r15,0(%r15) /* Load back chain. */
|
1: l %r15,0(%r15) /* Load back chain. */
|
||||||
|
cfi_adjust_cfa_offset (-120)
|
||||||
lm %r6,%r15,24(%r15) /* Load registers. */
|
lm %r6,%r15,24(%r15) /* Load registers. */
|
||||||
|
|
||||||
/* check gpr 2 for error */
|
/* check gpr 2 for error */
|
||||||
|
@ -26,8 +26,19 @@
|
|||||||
ENTRY(__mmap64)
|
ENTRY(__mmap64)
|
||||||
/* Save registers and setup stack frame. */
|
/* Save registers and setup stack frame. */
|
||||||
stm %r6,%r15,24(%r15)
|
stm %r6,%r15,24(%r15)
|
||||||
|
cfi_offset (%r15, -36)
|
||||||
|
cfi_offset (%r14, -40)
|
||||||
|
cfi_offset (%r13, -44)
|
||||||
|
cfi_offset (%r12, -48)
|
||||||
|
cfi_offset (%r11, -52)
|
||||||
|
cfi_offset (%r10, -56)
|
||||||
|
cfi_offset (%r9, -60)
|
||||||
|
cfi_offset (%r8, -64)
|
||||||
|
cfi_offset (%r7, -68)
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
lr %r1,%r15
|
lr %r1,%r15
|
||||||
ahi %r15,-120 /* Buy stack space. */
|
ahi %r15,-120 /* Buy stack space. */
|
||||||
|
cfi_adjust_cfa_offset (120)
|
||||||
st %r1,0(%r15) /* Store back chain. */
|
st %r1,0(%r15) /* Store back chain. */
|
||||||
|
|
||||||
/* Store parameters on stack, because mmap2 and old_mmap
|
/* Store parameters on stack, because mmap2 and old_mmap
|
||||||
@ -56,6 +67,7 @@ ENTRY(__mmap64)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
l %r15,0(%r15) /* Load back chain. */
|
l %r15,0(%r15) /* Load back chain. */
|
||||||
|
cfi_adjust_cfa_offset (-120)
|
||||||
lm %r6,%r15,24(%r15) /* Load registers. */
|
lm %r6,%r15,24(%r15) /* Load registers. */
|
||||||
|
|
||||||
/* Check gpr 2 for error. */
|
/* Check gpr 2 for error. */
|
||||||
|
90
sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c
Normal file
90
sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
/* Copyright (C) 2003 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Lesser General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2.1 of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Lesser General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Lesser General Public
|
||||||
|
License along with the GNU C Library; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||||
|
02111-1307 USA. */
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <sysdep.h>
|
||||||
|
#include <kernel-features.h>
|
||||||
|
|
||||||
|
int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise);
|
||||||
|
int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise);
|
||||||
|
|
||||||
|
/* Advice the system about the expected behaviour of the application with
|
||||||
|
respect to the file associated with FD. */
|
||||||
|
|
||||||
|
struct fadvise64_64_layout
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
off64_t offset;
|
||||||
|
off64_t len;
|
||||||
|
int advise;
|
||||||
|
};
|
||||||
|
|
||||||
|
int
|
||||||
|
__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise)
|
||||||
|
{
|
||||||
|
#ifdef __NR_fadvise64_64
|
||||||
|
struct fadvise64_64_layout parameters;
|
||||||
|
INTERNAL_SYSCALL_DECL (err);
|
||||||
|
|
||||||
|
parameters.fd = fd;
|
||||||
|
parameters.offset = offset;
|
||||||
|
parameters.len = len;
|
||||||
|
parameters.advise = advise;
|
||||||
|
int ret = INTERNAL_SYSCALL (fadvise64_64, err, 1, ¶meters);
|
||||||
|
if (!INTERNAL_SYSCALL_ERROR_P (ret, err))
|
||||||
|
return 0;
|
||||||
|
# ifndef __ASSUME_FADVISE64_64_SYSCALL
|
||||||
|
if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS)
|
||||||
|
# endif
|
||||||
|
return INTERNAL_SYSCALL_ERRNO (ret, err);
|
||||||
|
#endif
|
||||||
|
#ifndef __ASSUME_FADVISE64_64_SYSCALL
|
||||||
|
# ifdef __NR_fadvise64
|
||||||
|
if (len != (off_t) len)
|
||||||
|
return EOVERFLOW;
|
||||||
|
|
||||||
|
INTERNAL_SYSCALL_DECL (err2);
|
||||||
|
int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd,
|
||||||
|
__LONG_LONG_PAIR ((long) (offset >> 32),
|
||||||
|
(long) offset),
|
||||||
|
(off_t) len, advise);
|
||||||
|
if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2))
|
||||||
|
return 0;
|
||||||
|
return INTERNAL_SYSCALL_ERRNO (ret2, err2);
|
||||||
|
# else
|
||||||
|
return ENOSYS;
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#include <shlib-compat.h>
|
||||||
|
|
||||||
|
#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3)
|
||||||
|
|
||||||
|
int
|
||||||
|
__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise)
|
||||||
|
{
|
||||||
|
return __posix_fadvise64_l64 (fd, offset, len, advise);
|
||||||
|
}
|
||||||
|
|
||||||
|
versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3);
|
||||||
|
compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2);
|
||||||
|
#else
|
||||||
|
strong_alias (__posix_fadvise64_l64, posix_fadvise64);
|
||||||
|
#endif
|
@ -47,8 +47,6 @@
|
|||||||
|
|
||||||
.globl __socket
|
.globl __socket
|
||||||
ENTRY(__socket)
|
ENTRY(__socket)
|
||||||
cfi_startproc
|
|
||||||
|
|
||||||
/* Save registers and setup stack. */
|
/* Save registers and setup stack. */
|
||||||
stm %r6,%r15,24(%r15) /* save registers */
|
stm %r6,%r15,24(%r15) /* save registers */
|
||||||
cfi_offset (%r15, -36)
|
cfi_offset (%r15, -36)
|
||||||
@ -136,7 +134,6 @@ L(socket_cancel):
|
|||||||
2: .long CENABLE-1b
|
2: .long CENABLE-1b
|
||||||
3: .long CDISABLE-1b
|
3: .long CDISABLE-1b
|
||||||
#endif
|
#endif
|
||||||
cfi_endproc
|
|
||||||
|
|
||||||
SYSCALL_ERROR_HANDLER
|
SYSCALL_ERROR_HANDLER
|
||||||
END (__socket)
|
END (__socket)
|
||||||
|
@ -25,9 +25,20 @@
|
|||||||
ENTRY (syscall)
|
ENTRY (syscall)
|
||||||
/* Save registers and setup stack. */
|
/* Save registers and setup stack. */
|
||||||
stm %r6,%r15,24(%r15) /* save registers */
|
stm %r6,%r15,24(%r15) /* save registers */
|
||||||
|
cfi_offset (%r15, -36)
|
||||||
|
cfi_offset (%r14, -40)
|
||||||
|
cfi_offset (%r13, -44)
|
||||||
|
cfi_offset (%r12, -48)
|
||||||
|
cfi_offset (%r11, -52)
|
||||||
|
cfi_offset (%r10, -56)
|
||||||
|
cfi_offset (%r9, -60)
|
||||||
|
cfi_offset (%r8, -64)
|
||||||
|
cfi_offset (%r7, -68)
|
||||||
|
cfi_offset (%r6, -72)
|
||||||
lr %r1,%r15
|
lr %r1,%r15
|
||||||
l %r0,4(0,%r15) /* load eos */
|
l %r0,4(0,%r15) /* load eos */
|
||||||
ahi %r15,-96 /* buy stack space */
|
ahi %r15,-96 /* buy stack space */
|
||||||
|
cfi_adjust_cfa_offset (96)
|
||||||
st %r1,0(0,%r15) /* store back chain */
|
st %r1,0(0,%r15) /* store back chain */
|
||||||
st %r0,4(0,%r15) /* store eos */
|
st %r0,4(0,%r15) /* store eos */
|
||||||
|
|
||||||
@ -45,6 +56,7 @@ ENTRY (syscall)
|
|||||||
j 3f
|
j 3f
|
||||||
2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
|
2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
|
||||||
3: l %r15,0(%r15) /* load back chain */
|
3: l %r15,0(%r15) /* load back chain */
|
||||||
|
cfi_adjust_cfa_offset (-96)
|
||||||
lm %r6,15,24(%r15) /* load registers */
|
lm %r6,15,24(%r15) /* load registers */
|
||||||
|
|
||||||
lhi %r0,-4095
|
lhi %r0,-4095
|
||||||
|
@ -55,8 +55,12 @@ ENTRY(__syscall_error)
|
|||||||
1: .long errno
|
1: .long errno
|
||||||
# else
|
# else
|
||||||
stm %r13,%r15,52(%r15)
|
stm %r13,%r15,52(%r15)
|
||||||
|
cfi_offset (%r15, -36)
|
||||||
|
cfi_offset (%r14, -40)
|
||||||
|
cfi_offset (%r13, -44)
|
||||||
lr %r0,%r15
|
lr %r0,%r15
|
||||||
ahi %r15,-96
|
ahi %r15,-96
|
||||||
|
cfi_adjust_cfa_offset (96)
|
||||||
lcr %r13,%r2
|
lcr %r13,%r2
|
||||||
st %r0,0(%r15)
|
st %r0,0(%r15)
|
||||||
basr %r1,0
|
basr %r1,0
|
||||||
@ -64,6 +68,7 @@ ENTRY(__syscall_error)
|
|||||||
basr %r14,%r1
|
basr %r14,%r1
|
||||||
st %r13,0(%r2)
|
st %r13,0(%r2)
|
||||||
lm %r13,%r15,148(%r15)
|
lm %r13,%r15,148(%r15)
|
||||||
|
cfi_adjust_cfa_offset (-96)
|
||||||
lhi %r2,-1
|
lhi %r2,-1
|
||||||
br %r14
|
br %r14
|
||||||
1: .long __errno_location
|
1: .long __errno_location
|
||||||
@ -103,8 +108,14 @@ ENTRY(__syscall_error)
|
|||||||
1: .long _GLOBAL_OFFSET_TABLE_-0b
|
1: .long _GLOBAL_OFFSET_TABLE_-0b
|
||||||
# else
|
# else
|
||||||
stm %r11,%r15,44(%r15)
|
stm %r11,%r15,44(%r15)
|
||||||
|
cfi_offset (%r15, -36)
|
||||||
|
cfi_offset (%r14, -40)
|
||||||
|
cfi_offset (%r13, -44)
|
||||||
|
cfi_offset (%r12, -48)
|
||||||
|
cfi_offset (%r11, -52)
|
||||||
lr %r0,%r15
|
lr %r0,%r15
|
||||||
ahi %r15,-96
|
ahi %r15,-96
|
||||||
|
cfi_adjust_cfa_offset (96)
|
||||||
lcr %r11,%r2
|
lcr %r11,%r2
|
||||||
st %r0,0(%r15)
|
st %r0,0(%r15)
|
||||||
basr %r13,0
|
basr %r13,0
|
||||||
@ -114,6 +125,7 @@ ENTRY(__syscall_error)
|
|||||||
bas %r14,0(%r1,%r13)
|
bas %r14,0(%r1,%r13)
|
||||||
st %r11,0(%r2)
|
st %r11,0(%r2)
|
||||||
lm %r11,%r15,140(%r15)
|
lm %r11,%r15,140(%r15)
|
||||||
|
cfi_adjust_cfa_offset (-96)
|
||||||
lhi %r2,-1
|
lhi %r2,-1
|
||||||
br %r14
|
br %r14
|
||||||
1: .long _GLOBAL_OFFSET_TABLE_-0b
|
1: .long _GLOBAL_OFFSET_TABLE_-0b
|
||||||
|
@ -33,6 +33,7 @@
|
|||||||
.text
|
.text
|
||||||
ENTRY(__clone)
|
ENTRY(__clone)
|
||||||
stg %r6,48(%r15) /* store %r6 to save area */
|
stg %r6,48(%r15) /* store %r6 to save area */
|
||||||
|
cfi_offset (%r6,-112)
|
||||||
lgr %r0,%r5 /* move *arg out of the way */
|
lgr %r0,%r5 /* move *arg out of the way */
|
||||||
ltgr %r1,%r2 /* check fn and move to %r1 */
|
ltgr %r1,%r2 /* check fn and move to %r1 */
|
||||||
jz error /* no NULL function pointers */
|
jz error /* no NULL function pointers */
|
||||||
@ -51,6 +52,7 @@ ENTRY(__clone)
|
|||||||
error:
|
error:
|
||||||
lghi %r2,-EINVAL
|
lghi %r2,-EINVAL
|
||||||
jg SYSCALL_ERROR_LABEL
|
jg SYSCALL_ERROR_LABEL
|
||||||
|
PSEUDO_END (__clone)
|
||||||
|
|
||||||
thread_start:
|
thread_start:
|
||||||
/* fn is in gpr 1, arg in gpr 0 */
|
/* fn is in gpr 1, arg in gpr 0 */
|
||||||
@ -63,5 +65,4 @@ thread_start:
|
|||||||
#else
|
#else
|
||||||
jg _exit /* branch to _exit -> thread termination */
|
jg _exit /* branch to _exit -> thread termination */
|
||||||
#endif
|
#endif
|
||||||
PSEUDO_END (__clone)
|
|
||||||
weak_alias (__clone, clone)
|
weak_alias (__clone, clone)
|
||||||
|
@ -27,9 +27,20 @@
|
|||||||
ENTRY(__mmap)
|
ENTRY(__mmap)
|
||||||
/* Save registers and setup stack frame. */
|
/* Save registers and setup stack frame. */
|
||||||
stmg %r6,%r15,48(%r15)
|
stmg %r6,%r15,48(%r15)
|
||||||
|
cfi_offset (%r15,-40)
|
||||||
|
cfi_offset (%r14,-48)
|
||||||
|
cfi_offset (%r13,-56)
|
||||||
|
cfi_offset (%r12,-64)
|
||||||
|
cfi_offset (%r11,-72)
|
||||||
|
cfi_offset (%r10,-80)
|
||||||
|
cfi_offset (%r9,-88)
|
||||||
|
cfi_offset (%r8,-96)
|
||||||
|
cfi_offset (%r7,-104)
|
||||||
|
cfi_offset (%r6,-112)
|
||||||
lgr %r1,%r15
|
lgr %r1,%r15
|
||||||
lg %r0,8(%r15) /* Load eos. */
|
lg %r0,8(%r15) /* Load eos. */
|
||||||
aghi %r15,-208 /* Buy stack space. */
|
aghi %r15,-208 /* Buy stack space. */
|
||||||
|
cfi_adjust_cfa_offset (208)
|
||||||
stg %r1,0(%r15) /* Store back chain. */
|
stg %r1,0(%r15) /* Store back chain. */
|
||||||
stg %r0,8(%r15) /* Store eos. */
|
stg %r0,8(%r15) /* Store eos. */
|
||||||
|
|
||||||
@ -50,6 +61,7 @@ ENTRY(__mmap)
|
|||||||
svc SYS_ify(mmap)
|
svc SYS_ify(mmap)
|
||||||
|
|
||||||
lg %r15,0(%r15) /* Load back chain. */
|
lg %r15,0(%r15) /* Load back chain. */
|
||||||
|
cfi_adjust_cfa_offset (-208)
|
||||||
lmg %r6,%r15,48(%r15) /* Load registers. */
|
lmg %r6,%r15,48(%r15) /* Load registers. */
|
||||||
|
|
||||||
/* Check gpr 2 for error. */
|
/* Check gpr 2 for error. */
|
||||||
|
@ -47,8 +47,6 @@
|
|||||||
|
|
||||||
.globl __socket
|
.globl __socket
|
||||||
ENTRY(__socket)
|
ENTRY(__socket)
|
||||||
cfi_startproc
|
|
||||||
|
|
||||||
/* Save registers and setup stack. */
|
/* Save registers and setup stack. */
|
||||||
stmg %r6,%r15,48(%r15) /* Save registers. */
|
stmg %r6,%r15,48(%r15) /* Save registers. */
|
||||||
cfi_offset (%r15,-40)
|
cfi_offset (%r15,-40)
|
||||||
@ -130,9 +128,7 @@ L(socket_cancel):
|
|||||||
j 4b
|
j 4b
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
cfi_endproc
|
END (__socket)
|
||||||
|
|
||||||
PSEUDO_END (__socket)
|
|
||||||
|
|
||||||
#ifndef NO_WEAK_ALIAS
|
#ifndef NO_WEAK_ALIAS
|
||||||
weak_alias (__socket, socket)
|
weak_alias (__socket, socket)
|
||||||
|
@ -25,9 +25,20 @@
|
|||||||
ENTRY (syscall)
|
ENTRY (syscall)
|
||||||
/* Save registers and setup stack. */
|
/* Save registers and setup stack. */
|
||||||
stmg %r6,%r15,48(%r15) /* Save registers. */
|
stmg %r6,%r15,48(%r15) /* Save registers. */
|
||||||
|
cfi_offset (%r15,-40)
|
||||||
|
cfi_offset (%r14,-48)
|
||||||
|
cfi_offset (%r13,-56)
|
||||||
|
cfi_offset (%r12,-64)
|
||||||
|
cfi_offset (%r11,-72)
|
||||||
|
cfi_offset (%r10,-80)
|
||||||
|
cfi_offset (%r9,-88)
|
||||||
|
cfi_offset (%r8,-96)
|
||||||
|
cfi_offset (%r7,-104)
|
||||||
|
cfi_offset (%r6,-112)
|
||||||
lgr %r1,%r15
|
lgr %r1,%r15
|
||||||
lg %r0,8(%r15) /* Load eos. */
|
lg %r0,8(%r15) /* Load eos. */
|
||||||
aghi %r15,-160 /* Buy stack space. */
|
aghi %r15,-160 /* Buy stack space. */
|
||||||
|
cfi_adjust_cfa_offset (160)
|
||||||
stg %r1,0(%r15) /* Store back chain. */
|
stg %r1,0(%r15) /* Store back chain. */
|
||||||
stg %r0,8(%r15) /* Store eos. */
|
stg %r0,8(%r15) /* Store eos. */
|
||||||
|
|
||||||
@ -45,6 +56,7 @@ ENTRY (syscall)
|
|||||||
j 3f
|
j 3f
|
||||||
2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
|
2: ex %r1,1b-0b(%r7) /* lsb of R1 is subsituted as SVC number */
|
||||||
3: lg %r15,0(%r15) /* load back chain */
|
3: lg %r15,0(%r15) /* load back chain */
|
||||||
|
cfi_adjust_cfa_offset (-160)
|
||||||
lmg %r6,15,48(%r15) /* Load registers. */
|
lmg %r6,15,48(%r15) /* Load registers. */
|
||||||
|
|
||||||
lghi %r0,-4095
|
lghi %r0,-4095
|
||||||
|
@ -56,13 +56,18 @@ ENTRY(__syscall_error)
|
|||||||
br %r14
|
br %r14
|
||||||
# else
|
# else
|
||||||
stmg %r13,%r15,104(%r15)
|
stmg %r13,%r15,104(%r15)
|
||||||
|
cfi_offset (%r15,-40)
|
||||||
|
cfi_offset (%r14,-48)
|
||||||
|
cfi_offset (%r13,-56)
|
||||||
lgr %r0,%r15
|
lgr %r0,%r15
|
||||||
aghi %r15,-160
|
aghi %r15,-160
|
||||||
|
cfi_adjust_cfa_offset (160)
|
||||||
lcr %r13,%r2
|
lcr %r13,%r2
|
||||||
stg %r0,0(%r15)
|
stg %r0,0(%r15)
|
||||||
brasl %r14,__errno_location
|
brasl %r14,__errno_location
|
||||||
st %r13,0(%r2)
|
st %r13,0(%r2)
|
||||||
lmg %r13,%r15,264(%r15)
|
lmg %r13,%r15,264(%r15)
|
||||||
|
cfi_adjust_cfa_offset (-160)
|
||||||
lghi %r2,-1
|
lghi %r2,-1
|
||||||
br %r14
|
br %r14
|
||||||
#endif
|
#endif
|
||||||
@ -97,13 +102,18 @@ ENTRY(__syscall_error)
|
|||||||
br %r14
|
br %r14
|
||||||
# else
|
# else
|
||||||
stmg %r13,%r15,104(%r15)
|
stmg %r13,%r15,104(%r15)
|
||||||
|
cfi_offset (%r15,-40)
|
||||||
|
cfi_offset (%r14,-48)
|
||||||
|
cfi_offset (%r13,-56)
|
||||||
lgr %r0,%r15
|
lgr %r0,%r15
|
||||||
aghi %r15,-160
|
aghi %r15,-160
|
||||||
|
cfi_adjust_cfa_offset (160)
|
||||||
lcr %r13,%r2
|
lcr %r13,%r2
|
||||||
stg %r0,0(%r15)
|
stg %r0,0(%r15)
|
||||||
brasl %r14,__errno_location@PLT
|
brasl %r14,__errno_location@PLT
|
||||||
st %r13,0(%r2)
|
st %r13,0(%r2)
|
||||||
lmg %r13,%r15,264(%r15)
|
lmg %r13,%r15,264(%r15)
|
||||||
|
cfi_adjust_cfa_offset (-160)
|
||||||
lghi %r2,-1
|
lghi %r2,-1
|
||||||
br %r14
|
br %r14
|
||||||
# endif
|
# endif
|
||||||
|
@ -118,6 +118,59 @@ typedef __pid_t lwpid_t;
|
|||||||
typedef struct elf_prstatus prstatus_t;
|
typedef struct elf_prstatus prstatus_t;
|
||||||
typedef struct elf_prpsinfo prpsinfo_t;
|
typedef struct elf_prpsinfo prpsinfo_t;
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
|
||||||
|
/* Provide 32-bit variants so that BFD can read 32-bit
|
||||||
|
core files. */
|
||||||
|
#define ELF_NGREG32 36
|
||||||
|
typedef unsigned int elf_greg_t32;
|
||||||
|
typedef elf_greg_t32 elf_gregset_t32[ELF_NGREG32];
|
||||||
|
typedef elf_fpregset_t elf_fpregset_t32;
|
||||||
|
|
||||||
|
struct elf_prstatus32
|
||||||
|
{
|
||||||
|
struct elf_siginfo pr_info; /* Info associated with signal. */
|
||||||
|
short int pr_cursig; /* Current signal. */
|
||||||
|
unsigned int pr_sigpend; /* Set of pending signals. */
|
||||||
|
unsigned int pr_sighold; /* Set of held signals. */
|
||||||
|
__pid_t pr_pid;
|
||||||
|
__pid_t pr_ppid;
|
||||||
|
__pid_t pr_pgrp;
|
||||||
|
__pid_t pr_sid;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
int tv_sec, tv_usec;
|
||||||
|
} pr_utime, /* User time. */
|
||||||
|
pr_stime, /* System time. */
|
||||||
|
pr_cutime, /* Cumulative user time. */
|
||||||
|
pr_cstime; /* Cumulative system time. */
|
||||||
|
elf_gregset_t32 pr_reg; /* GP registers. */
|
||||||
|
int pr_fpvalid; /* True if math copro being used. */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct elf_prpsinfo32
|
||||||
|
{
|
||||||
|
char pr_state; /* Numeric process state. */
|
||||||
|
char pr_sname; /* Char for pr_state. */
|
||||||
|
char pr_zomb; /* Zombie. */
|
||||||
|
char pr_nice; /* Nice val. */
|
||||||
|
unsigned int pr_flag; /* Flags. */
|
||||||
|
unsigned short int pr_uid;
|
||||||
|
unsigned short int pr_gid;
|
||||||
|
int pr_pid, pr_ppid, pr_pgrp, pr_sid;
|
||||||
|
/* Lots missing */
|
||||||
|
char pr_fname[16]; /* Filename of executable. */
|
||||||
|
char pr_psargs[ELF_PRARGSZ]; /* Initial part of arg list. */
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef elf_gregset_t32 prgregset32_t;
|
||||||
|
typedef elf_fpregset_t32 prfpregset32_t;
|
||||||
|
|
||||||
|
typedef struct elf_prstatus32 prstatus32_t;
|
||||||
|
typedef struct elf_prpsinfo32 prpsinfo32_t;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
||||||
#endif /* sys/procfs.h */
|
#endif /* sys/procfs.h */
|
||||||
|
Loading…
Reference in New Issue
Block a user