diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-04-06 05:04:50 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-04-06 05:04:50 +0000 |
commit | a1303dc8dc57dbcd4605992dc177d11ae4d45aab (patch) | |
tree | 2aab8a4fbc1a903a38bae5d623df451dca64497b /sysdeps | |
parent | 2a0ff6ff1a3679479c729fce816fc21e73c54dfb (diff) | |
download | glibc-a1303dc8dc57dbcd4605992dc177d11ae4d45aab.zip glibc-a1303dc8dc57dbcd4605992dc177d11ae4d45aab.tar.gz glibc-a1303dc8dc57dbcd4605992dc177d11ae4d45aab.tar.bz2 |
Update.
2000-04-05 Cristian Gafton <gafton@redhat.com>
* ctype/ctype.h (__isctype_l): Define even if not __OPTIMIZE__
because it is used in generic code.
* wctype/wctrans.c: Define __ctype32_toupper and __ctype32_tolower.
* wcsmbs/wcwidth.h: Declare __ctype32_b.
* intl/gettext.c: Include <locale.h>.
* intl/ngettext.c: Likewise.
2000-04-05 Jakub Jelinek <jakub@redhat.com>
* resolv/inet_ntop.c (inet_ntop4, inet_ntop6, inet_ntop): Use
socklen_t type for size.
* sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Rewrite for new
init function interface.
* sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/setjmp.h: Don't include
sys/ucontext.h.
(__jmp_buf): Declare the whole type structure here, don't use
ucontext.
* iconv/skeleton.c (put16u): Fix typo.
Reported by Bruno Haible <haible@ilog.fr>.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/sparc/sparc32/dl-machine.h | 36 | ||||
-rw-r--r-- | sysdeps/sparc/sparc64/dl-machine.h | 35 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/bits/setjmp.h | 34 |
3 files changed, 58 insertions, 47 deletions
diff --git a/sysdeps/sparc/sparc32/dl-machine.h b/sysdeps/sparc/sparc32/dl-machine.h index 0b98002..a160f7d 100644 --- a/sysdeps/sparc/sparc32/dl-machine.h +++ b/sysdeps/sparc/sparc32/dl-machine.h @@ -234,12 +234,11 @@ _dl_start_user: ld [%i0], %i0 tst %i0 beq 3f - nop + ld [%sp+22*4], %i5 /* load argc */ /* Find out how far to shift. */ - ld [%sp+22*4], %i1 /* load argc */ - sub %i1, %i0, %i1 + sub %i5, %i0, %i5 sll %i0, 2, %i2 - st %i1, [%sp+22*4] + st %i5, [%sp+22*4] add %sp, 23*4, %i1 add %i1, %i2, %i2 /* Copy down argv */ @@ -265,24 +264,17 @@ _dl_start_user: st %i4, [%i1+4] bne 23b add %i1, 8, %i1 - /* Load searchlist of the main object to pass to _dl_init_next. */ -3: sethi %hi(_dl_main_searchlist), %g1 - or %g1, %lo(_dl_main_searchlist), %g1 - ld [%l7+%g1], %l1 - ld [%l1], %l1 - /* Call _dl_init_next to return the address of an initializer to run. */ -4: call _dl_init_next - mov %l1, %o0 - tst %o0 - beq 5f - nop - jmpl %o0, %o7 - sub %o7, 28, %o7 - /* Clear the startup flag. */ -5: sethi %hi(_dl_starting_up), %g1 - or %g1, %lo(_dl_starting_up), %g1 - ld [%l7+%g1], %g1 - st %g0, [%g1] + /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */ +3: sethi %hi(_dl_loaded), %o0 + add %sp, 23*4, %o2 + orcc %o0, %lo(_dl_loaded), %o0 + sll %i5, 2, %o3 + ld [%l7+%o0], %o0 + add %o3, 4, %o3 + mov %i5, %o1 + add %o2, %o3, %o3 + call _dl_init + ld [%o0], %o0 /* Pass our finalizer function to the user in %g1. */ sethi %hi(_dl_fini), %g1 or %g1, %lo(_dl_fini), %g1 diff --git a/sysdeps/sparc/sparc64/dl-machine.h b/sysdeps/sparc/sparc64/dl-machine.h index 1c02252..7b89ebe 100644 --- a/sysdeps/sparc/sparc64/dl-machine.h +++ b/sysdeps/sparc/sparc64/dl-machine.h @@ -540,12 +540,11 @@ _dl_start_user: ldx [%l7+%g5], %i0 ld [%i0], %i0 brz,pt %i0, 2f - nop + ldx [%sp+" __S(STACK_BIAS) "+22*8], %i5 /* Find out how far to shift. */ - ldx [%sp+" __S(STACK_BIAS) "+22*8], %i1 - sub %i1, %i0, %i1 + sub %i5, %i0, %i5 sllx %i0, 3, %i2 - stx %i1, [%sp+" __S(STACK_BIAS) "+22*8] + stx %i5, [%sp+" __S(STACK_BIAS) "+22*8] add %sp, " __S(STACK_BIAS) "+23*8, %i1 add %i1, %i2, %i2 /* Copy down argv. */ @@ -568,23 +567,17 @@ _dl_start_user: stx %i4, [%i1+8] brnz,pt %i3, 13b add %i1, 16, %i1 - /* Load searchlist of the main object to pass to _dl_init_next. */ -2: sethi %hi(_dl_main_searchlist), %g5 - or %g5, %lo(_dl_main_searchlist), %g5 - ldx [%l7+%g5], %g5 - ldx [%g5], %l1 - /* Call _dl_init_next to return the address of an initializer to run. */ -3: call _dl_init_next - mov %l1, %o0 - brz,pn %o0, 4f - nop - jmpl %o0, %o7 - sub %o7, 24, %o7 - /* Clear the startup flag. */ -4: sethi %hi(_dl_starting_up), %g5 - or %g5, %lo(_dl_starting_up), %g5 - ldx [%l7+%g5], %g5 - st %g0, [%g5] + /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */ +2: sethi %hi(_dl_loaded), %o0 + add %sp, " __S(STACK_BIAS) "+23*8, %o2 + orcc %o0, %lo(_dl_loaded), %o0 + sllx %i5, 3, %o3 + ldx [%l7+%o0], %o0 + add %o3, 8, %o3 + mov %i5, %o1 + add %o2, %o3, %o3 + call _dl_init + ldx [%o0], %o0 /* Pass our finalizer function to the user in %g1. */ sethi %hi(_dl_fini), %g1 or %g1, %lo(_dl_fini), %g1 diff --git a/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h index 6f61e35..c62178c 100644 --- a/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h +++ b/sysdeps/unix/sysv/linux/sparc/bits/setjmp.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997,1999 Free Software Foundation, Inc. +/* Copyright (C) 1997,1999,2000 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 @@ -25,9 +25,35 @@ #if __WORDSIZE == 64 -#include <sys/ucontext.h> - -typedef ucontext_t __jmp_buf[1]; +#ifndef _ASM +typedef struct __sparc64_jmp_buf + { + struct __sparc64_jmp_buf *uc_link; + unsigned long uc_flags; + unsigned long uc_sigmask; + struct __sparc64_jmp_buf_mcontext + { + unsigned long mc_gregs[19]; + unsigned long mc_fp; + unsigned long mc_i7; + struct __sparc64_jmp_buf_fpu + { + union + { + unsigned int sregs[32]; + unsigned long dregs[32]; + long double qregs[16]; + } mcfpu_fpregs; + unsigned long mcfpu_fprs; + unsigned long mcfpu_gsr; + void *mcfpu_fq; + unsigned char mcfpu_qcnt; + unsigned char mcfpu_qentsz; + unsigned char mcfpu_enab; + } mc_fpregs; + } uc_mcontext; + } __jmp_buf[1]; +#endif /* Test if longjmp to JMPBUF would unwind the frame containing a local variable at ADDRESS. */ |