mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 02:40:08 +00:00
Update.
2000-04-05 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/alpha/init-first.h: Not needed anymore. * sysdeps/unix/sysv/linux/arm/init-first.h: Likewise. * sysdeps/unix/sysv/linux/mips/init-first.h: Likewise. * sysdeps/unix/sysv/linux/powerpc/init-first.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise. * sysdeps/unix/sysv/linux/Dist: Remove getresuid and getresgid. * Makefile (distribute): Add abi-versions.awk and firstversions.awk. Patches by Torsten Duwe <duwe@caldera.de>.
This commit is contained in:
parent
5560eac7cb
commit
2a0ff6ff1a
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2000-04-05 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/alpha/init-first.h: Not needed anymore.
|
||||
* sysdeps/unix/sysv/linux/arm/init-first.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/mips/init-first.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/powerpc/init-first.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc32/init-first.h: Likewise.
|
||||
* sysdeps/unix/sysv/linux/sparc/sparc64/init-first.h: Likewise.
|
||||
|
||||
* sysdeps/unix/sysv/linux/Dist: Remove getresuid and getresgid.
|
||||
* Makefile (distribute): Add abi-versions.awk and
|
||||
firstversions.awk.
|
||||
Patches by Torsten Duwe <duwe@caldera.de>.
|
||||
|
||||
2000-04-05 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* nss/Makefile ($(objpfx)makedb): Move $(libdl) after db-open.o.
|
||||
|
3
Makefile
3
Makefile
@ -262,7 +262,8 @@ distribute := README README.libm INSTALL FAQ FAQ.in NOTES NEWS BUGS \
|
||||
rellns-sh config.sub config.guess \
|
||||
mkinstalldirs move-if-change install-sh \
|
||||
test-installation.pl gen-FAQ.pl versions.awk\
|
||||
gen-sorted.awk)
|
||||
gen-sorted.awk abi-versions.awk \
|
||||
firstversions.awk)
|
||||
|
||||
distribute := $(strip $(distribute))
|
||||
generated := $(generated) stubs.h
|
||||
|
@ -74,7 +74,5 @@ sys/user.h
|
||||
sys/vt.h
|
||||
xstatconv.c
|
||||
getdents64.c
|
||||
getresuid.c
|
||||
getresgid.c
|
||||
umount.S
|
||||
umount2.S
|
||||
|
@ -1,27 +0,0 @@
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in. */
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.globl " #NAME "
|
||||
.ent " #NAME "
|
||||
" #NAME ":
|
||||
ldgp $29, 0($27)
|
||||
.prologue 1
|
||||
.set at
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
lda $0, _dl_starting_up
|
||||
beq $0, 1f
|
||||
ldl $0, 0($0)
|
||||
cmpeq $31, $0, $0
|
||||
1: stl $0, __libc_multiple_libcs
|
||||
/* If so, argc et al are in a0-a2 already. Otherwise, load them. */
|
||||
bne $0, 2f
|
||||
ldl $16, 0($30)
|
||||
lda $17, 8($30)
|
||||
s8addq $16, $17, $18
|
||||
addq $18, 8, $18
|
||||
2: br $31, " ASM_ALPHA_NG_SYMBOL_PREFIX #INIT "..ng
|
||||
.set noat
|
||||
.end " #NAME);
|
@ -1,55 +0,0 @@
|
||||
/* Prepare arguments for library initialization function.
|
||||
Copyright (C) 1997 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in.
|
||||
|
||||
*/
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) \
|
||||
void NAME (void* arg, ...) \
|
||||
{ \
|
||||
int argc; \
|
||||
char** argv; \
|
||||
char** envp; \
|
||||
/* The next variable is only here to work around a bug in gcc <= 2.7.2.2. \
|
||||
If the address would be taken inside the expression the optimizer \
|
||||
would try to be too smart and throws it away. Grrr. */ \
|
||||
int *dummy_addr = &_dl_starting_up; \
|
||||
\
|
||||
__libc_multiple_libcs = dummy_addr && !_dl_starting_up; \
|
||||
\
|
||||
if (!__libc_multiple_libcs) \
|
||||
{ \
|
||||
/* The ... in the arg list above forces the gnu ARM compiler to \
|
||||
push r0, r1, r2, r3 onto the stack. This way we can get the address */ \
|
||||
argc = *(int*) (&arg+4); \
|
||||
argv = (char **) &arg + 5; \
|
||||
envp = &argv[argc+1]; \
|
||||
} \
|
||||
else /* the three were passed as arguments */ \
|
||||
{ \
|
||||
argc = (int)arg; \
|
||||
argv = (char**)*(&arg + 1); \
|
||||
envp = (char**)*(&arg + 2); \
|
||||
} \
|
||||
\
|
||||
INIT (argc, argv, envp); \
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
/* Prepare arguments for library initialization function.
|
||||
Copyright (C) 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
|
||||
modify it under the terms of the GNU Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in. */
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) \
|
||||
asm(".weak _dl_starting_up\n\t" \
|
||||
".globl " #NAME "\n\t" \
|
||||
".ent " #NAME "\n" \
|
||||
#NAME ":\n\t" \
|
||||
".set noreorder\n\t" \
|
||||
".cpload $25\n\t" \
|
||||
".set reorder\n\t" \
|
||||
/* Are we a dynamic libc being loaded into a static program? */ \
|
||||
"la $8, _dl_starting_up\n\t" \
|
||||
"beqz $8, 1f\n\t" \
|
||||
"lw $8, 0($8)\n\t" \
|
||||
"seq $8, $8, 0\n" \
|
||||
"1:\t" \
|
||||
"sw $8, __libc_multiple_libcs\n\t" \
|
||||
/* If so, argc et al are in a0-a2 already. Otherwise, load them. */ \
|
||||
"bnez $8, 2f\n\t" \
|
||||
"lw $4, 16($29)\n\t" \
|
||||
"addiu $5, $29, 20\n\t" \
|
||||
"sll $6, $4, 2\n\t" \
|
||||
"addiu $6, $6, 4\n\t" \
|
||||
"addu $6, $5, $6\n" \
|
||||
"2:\t" \
|
||||
"la $25, " #INIT "\n\t" \
|
||||
"jr $25\n\t" \
|
||||
".end " #NAME "\n\t" \
|
||||
"3:\t" \
|
||||
".size " #NAME ", 3b-" #NAME);
|
@ -1,27 +0,0 @@
|
||||
/* Copyright (C) 1997 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
They are passed to this routine by either the program loader
|
||||
code in start.c, or by by dlopen.*/
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) \
|
||||
void NAME (int argc, char **argv, char **envp) \
|
||||
{ \
|
||||
INIT (argc, argv, envp); \
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
/* Prepare arguments for library initialization function.
|
||||
Copyright (C) 1997 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#define __S1(x) #x
|
||||
#define __S(x) __S1(x)
|
||||
|
||||
#ifdef PIC
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
save %sp, -64, %sp
|
||||
1: call 11f
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
add %l7, %o7, %l7
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
sethi %hi(_dl_starting_up), %l2
|
||||
or %l2, %lo(_dl_starting_up), %l2
|
||||
ld [%l7+%l2], %l2
|
||||
cmp %l2, 0
|
||||
beq 3f
|
||||
sethi %hi(__libc_multiple_libcs), %l3
|
||||
ld [%l2], %l2
|
||||
subcc %g0, %l2, %g0
|
||||
subx %g0, -1, %l2
|
||||
3: or %l3, %lo(__libc_multiple_libcs), %l3
|
||||
ld [%l7+%l3], %l3
|
||||
cmp %l2, 0
|
||||
st %l2, [%l3]
|
||||
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
|
||||
bnz " #INIT "
|
||||
restore
|
||||
ld [%sp+22*4], %o0
|
||||
add %sp, 23*4, %o1
|
||||
sll %o0, 2, %o2
|
||||
add %o2, %o1, %o2
|
||||
ba " #INIT "
|
||||
add %o2, 4, %o2
|
||||
.size "#NAME ", .-" #NAME);
|
||||
|
||||
#else
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
sethi %hi(_dl_starting_up), %g2
|
||||
or %g2, %lo(_dl_starting_up), %g2
|
||||
cmp %g2, 0
|
||||
beq 3f
|
||||
sethi %hi(__libc_multiple_libcs), %g3
|
||||
ld [%g2], %g2
|
||||
subcc %g0, %g2, %g0
|
||||
subx %g0, -1, %g2
|
||||
3: or %g3, %lo(__libc_multiple_libcs), %g3
|
||||
cmp %g2, 0
|
||||
st %g2, [%g3]
|
||||
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
|
||||
bnz " #INIT "
|
||||
nop
|
||||
ld [%sp+22*4], %o0
|
||||
add %sp, 23*4, %o1
|
||||
sll %o0, 2, %o2
|
||||
add %o2, %o1, %o2
|
||||
ba " #INIT "
|
||||
add %o2, 4, %o2
|
||||
.size "#NAME ", .-" #NAME);
|
||||
|
||||
#endif
|
@ -1,91 +0,0 @@
|
||||
/* Prepare arguments for library initialization function.
|
||||
Copyright (C) 1997 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 Library General Public License as
|
||||
published by the Free Software Foundation; either version 2 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
|
||||
Library General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
/* The job of this fragment it to find argc and friends for INIT.
|
||||
This is done in one of two ways: either in the stack context
|
||||
of program start, or having dlopen pass them in. */
|
||||
|
||||
#include <sysdep.h>
|
||||
|
||||
#define __S1(x) #x
|
||||
#define __S(x) __S1(x)
|
||||
|
||||
#ifdef PIC
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
save %sp, -192, %sp
|
||||
1: call 11f
|
||||
sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
11: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7
|
||||
add %l7, %o7, %l7
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
sethi %hi(_dl_starting_up), %l2
|
||||
or %l2, %lo(_dl_starting_up), %l2
|
||||
ldx [%l7+%l2], %l2
|
||||
brz,pn %l2, 3f
|
||||
sethi %hi(__libc_multiple_libcs), %l3
|
||||
ld [%l2], %l4
|
||||
mov %g0, %l2
|
||||
movrz %l4, 1, %l2
|
||||
3: or %l3, %lo(__libc_multiple_libcs), %l3
|
||||
ldx [%l7+%l3], %l3
|
||||
st %l2, [%l3]
|
||||
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
|
||||
brnz,pn %l2, " #INIT "
|
||||
restore
|
||||
ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0
|
||||
add %sp, " __S(STACK_BIAS) "+23*8, %o1
|
||||
sllx %o0, 3, %o2
|
||||
add %o2, %o1, %o2
|
||||
ba " #INIT "
|
||||
add %o2, 8, %o2
|
||||
.size "#NAME ", .-" #NAME);
|
||||
|
||||
#else
|
||||
|
||||
#define SYSDEP_CALL_INIT(NAME, INIT) asm("\
|
||||
.weak _dl_starting_up
|
||||
.global " #NAME "
|
||||
.type " #NAME ",@function
|
||||
" #NAME ":
|
||||
/* Are we a dynamic libc being loaded into a static program? */
|
||||
sethi %hi(_dl_starting_up), %g2
|
||||
or %g2, %lo(_dl_starting_up), %g2
|
||||
brz,pt %g2, 3f
|
||||
sethi %hi(__libc_multiple_libcs), %g3
|
||||
ld [%g2], %g1
|
||||
mov %g0, %g2
|
||||
movrz %g1, 1, %g2
|
||||
3: st %g2, [%g3 + %lo(__libc_multiple_libcs)]
|
||||
/* If so, argc et al are in %o0-%o2 already. Otherwise, load them. */
|
||||
brnz,pn %g2, " #INIT "
|
||||
nop
|
||||
ldx [%sp+" __S(STACK_BIAS) "+22*8], %o0
|
||||
add %sp, " __S(STACK_BIAS) "+23*8, %o1
|
||||
sllx %o0, 3, %o2
|
||||
add %o2, %o1, %o2
|
||||
ba " #INIT "
|
||||
add %o2, 8, %o2
|
||||
.size "#NAME ", .-" #NAME);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user