2
0
mirror of git://sourceware.org/git/glibc.git synced 2025-03-19 13:40:59 +08:00
2002-10-02  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/s390/s390-32/initfini.c: Avoid unterminated string literals.
	* sysdeps/sh/elf/initfini.c: Likewise.
	* sysdeps/mach/hurd/mips/init-first.c: Likewise.
	* sysdeps/hppa/elf/initfini.c: Likewise.
	* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: Likewise.
This commit is contained in:
Ulrich Drepper 2002-10-03 00:24:35 +00:00
parent 4c98451b0e
commit 62497f9c8b
13 changed files with 377 additions and 370 deletions
ChangeLogFAQ.inNEWSREADME.template
po
sysdeps
hppa/elf
mach/hurd/mips
s390/s390-32
sh/elf
sparc/sparc32/soft-fp
unix/sysv/linux
powerpc/bits
sparc/bits
x86_64/bits

@ -1,3 +1,11 @@
2002-10-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/s390/s390-32/initfini.c: Avoid unterminated string literals.
* sysdeps/sh/elf/initfini.c: Likewise.
* sysdeps/mach/hurd/mips/init-first.c: Likewise.
* sysdeps/hppa/elf/initfini.c: Likewise.
* sysdeps/sparc/sparc32/soft-fp/sfp-machine.h: Likewise.
2002-10-02 Steven Munroe <sjmunroe@us.ibm.com> 2002-10-02 Steven Munroe <sjmunroe@us.ibm.com>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>

36
FAQ.in

@ -66,8 +66,7 @@ a local mirror first.
You should always try to use the latest official release. Older versions You should always try to use the latest official release. Older versions
may not have all the features GNU libc requires. The current releases of may not have all the features GNU libc requires. The current releases of
gcc (2.95 or newer) should work with the GNU C library (for powerpc see gcc (3.2 or newer) should work with the GNU C library (for MIPS see ?mips).
?powerpc; for ARM see ?arm; for MIPS see ?mips).
Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to
problems in the complex float support. problems in the complex float support.
@ -98,18 +97,11 @@ them.
??powerpc Which compiler should I use for powerpc? ??powerpc Which compiler should I use for powerpc?
{GK} You want to use at least gcc 2.95 (together with the right versions {} Removed. Does not apply anymore.
of all the other tools, of course). See also ?excpt.
??arm Which tools should I use for ARM? ??arm Which tools should I use for ARM?
{PB} You should use egcs 1.1 or a later version. For ELF systems some {} Removed. Does not apply anymore.
changes are needed to the compiler; a patch against egcs-1.1.x can be found
at:
<ftp://ftp.netwinder.org/users/p/philb/egcs-1.1.1pre2-diff-981126>
Binutils 2.10.1 or later is also required.
?? Do I need some more things to compile the GNU C Library? ?? Do I need some more things to compile the GNU C Library?
@ -305,9 +297,7 @@ test in the sources.
There are some failures which are not directly related to the GNU libc: There are some failures which are not directly related to the GNU libc:
- Some compilers produce buggy code. No compiler gets single precision - Some compilers produce buggy code. No compiler gets single precision
complex numbers correct on Alpha. Otherwise, the egcs 1.1 release should be complex numbers correct on Alpha. Otherwise, gcc-3.2 should be ok.
ok; gcc 2.8.1 might cause some failures; gcc 2.7.2.x is so buggy that
explicit checks have been used so that you can't build with it.
- The kernel might have bugs. For example on Linux/Alpha 2.0.34 the - The kernel might have bugs. For example on Linux/Alpha 2.0.34 the
floating point handling has quite a number of bugs and therefore most of floating point handling has quite a number of bugs and therefore most of
the test cases in the math subdirectory will fail. Linux 2.2 has the test cases in the math subdirectory will fail. Linux 2.2 has
@ -367,8 +357,8 @@ newer.
??mips Which tools should I use for MIPS? ??mips Which tools should I use for MIPS?
{AJ} You should use the current development version of gcc 3.0 or newer from {AJ} You should use the current development version of gcc 3.2 or newer from
CVS. gcc 2.95.x does not work correctly on mips-linux. CVS.
You need also recent binutils, anything before and including 2.11 will not You need also recent binutils, anything before and including 2.11 will not
work correctly. Either try the Linux binutils 2.11.90.0.5 from HJ Lu or the work correctly. Either try the Linux binutils 2.11.90.0.5 from HJ Lu or the
@ -635,7 +625,7 @@ you got with your distribution.
glibc 2.x? glibc 2.x?
{AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later. {AJ} There's only correct support for glibc 2.0.x in gcc 2.7.2.3 or later.
But you should get at least gcc 2.95.2.1 (or later versions) instead. But you should get at least gcc 2.95.3 (or later versions) anyway
?? The `gencat' utility cannot process the catalog sources which ?? The `gencat' utility cannot process the catalog sources which
were used on my Linux libc5 based system. Why? were used on my Linux libc5 based system. Why?
@ -1025,7 +1015,8 @@ repository.
{BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to {BH} You are using g++ 2.95.2? After upgrading to glibc 2.2, you need to
apply a patch to the include files in /usr/include/g++, because the fpos_t apply a patch to the include files in /usr/include/g++, because the fpos_t
type has changed in glibc 2.2. The patch is at type has changed in glibc 2.2. The patch is at
http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
http://www.haible.de/bruno/gccinclude-glibc-2.2-compat.diff
?? When recompiling GCC, I get compilation errors in libio. ?? When recompiling GCC, I get compilation errors in libio.
@ -1033,7 +1024,6 @@ http://clisp.cons.org/~haible/gccinclude-glibc-2.2-compat.diff
This version is needed because the fpos_t type and a few libio internals This version is needed because the fpos_t type and a few libio internals
have changed in glibc 2.2, and gcc 2.95.3 contains a corresponding patch. have changed in glibc 2.2, and gcc 2.95.3 contains a corresponding patch.
?? Why shall glibc never get installed on GNU/Linux systems in ?? Why shall glibc never get installed on GNU/Linux systems in
/usr/local? /usr/local?
@ -1047,6 +1037,14 @@ installation, use another directory as argument to --prefix. If you like to
install this glibc version as default version, overriding the existing one, install this glibc version as default version, overriding the existing one,
use --prefix=/usr and everything will go in the right places. use --prefix=/usr and everything will go in the right places.
?? When recompiling GCC, I get compilation errors in libstdc++.
{BH} You are trying to recompile gcc 3.2? You need to patch gcc 3.2,
because some last minute changes were made in glibc 2.3 which were not
known when gcc 3.2 was released. The patch is at
http://www.haible.de/bruno/gcc-3.2-glibc-2.3-compat.diff
? Source and binary incompatibilities, and what to do about them ? Source and binary incompatibilities, and what to do about them
?? I expect GNU libc to be 100% source code compatible with ?? I expect GNU libc to be 100% source code compatible with

4
NEWS

@ -1,4 +1,4 @@
GNU C Library NEWS -- history of user-visible changes. 2002-8-29 GNU C Library NEWS -- history of user-visible changes. 2002-10-2
Copyright (C) 1992-2001, 2002 Free Software Foundation, Inc. Copyright (C) 1992-2001, 2002 Free Software Foundation, Inc.
See the end for copying conditions. See the end for copying conditions.
@ -40,7 +40,7 @@ Version 2.3
Changes by Ulrich Drepper. SH support by Kaz Kojima. Changes by Ulrich Drepper. SH support by Kaz Kojima.
* Bruno Haible contributed iconv converters for ISO-2022-JP-3, SHIFT JIS-X0213, * Bruno Haible contributed iconv converters for ISO-2022-JP-3, SHIFT JIS-X0213,
and EUC-JISX0213. EUC-JISX0213, and TISCII.
* New header <ifaddrs.h> with functions `getifaddrs' and `freeifaddrs': * New header <ifaddrs.h> with functions `getifaddrs' and `freeifaddrs':
BSD-compatible interface for getting all network interface addresses. BSD-compatible interface for getting all network interface addresses.

@ -19,9 +19,10 @@ configurations:
mips*-*-linux-gnu Linux-2.x on MIPS mips*-*-linux-gnu Linux-2.x on MIPS
ia64-*-linux-gnu Linux-2.x on ia64 ia64-*-linux-gnu Linux-2.x on ia64
s390-*-linux-gnu Linux-2.x on IBM S/390 s390-*-linux-gnu Linux-2.x on IBM S/390
s390x-*-linux-gnu Linux-2.x on IBM S/390 64-bit s390x-*-linux-gnu Linux-2.4+ on IBM S/390 64-bit
sh-*-linux-gnu Linux-2.x on Super Hitachi sh-*-linux-gnu Linux-2.x on Super Hitachi
cris-*-linux-gnu Linux-2.4+ on CRIS cris-*-linux-gnu Linux-2.4+ on CRIS
x86-64-*-linux-gnu Linux-2.4+ on x86-64
Former releases of this library (version 1.09.1 and perhaps earlier Former releases of this library (version 1.09.1 and perhaps earlier
versions) used to run on the following configurations: versions) used to run on the following configurations:

@ -5,8 +5,8 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: libc 2.2.94\n" "Project-Id-Version: libc 2.3\n"
"POT-Creation-Date: 2002-09-23 22:43-0700\n" "POT-Creation-Date: 2002-10-02 17:22-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -3586,7 +3586,7 @@ msgstr ""
msgid "Unmatched ) or \\)" msgid "Unmatched ) or \\)"
msgstr "" msgstr ""
#: posix/regcomp.c:670 #: posix/regcomp.c:673
msgid "No previous regular expression" msgid "No previous regular expression"
msgstr "" msgstr ""

@ -1,5 +1,5 @@
/* Special .init and .fini section support for HPPA /* Special .init and .fini section support for HPPA
Copyright (C) 2000 Free Software Foundation, Inc. Copyright (C) 2000, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -39,84 +39,84 @@
making the comparison and indirect call is quite expensive (see the making the comparison and indirect call is quite expensive (see the
comment in sysdeps/generic/initfini.c). */ comment in sysdeps/generic/initfini.c). */
__asm__ (" __asm__ ("\
\n\
#include \"defs.h\" #include \"defs.h\"\n\
\n\
/*@HEADER_ENDS*/ /*@HEADER_ENDS*/\n\
\n\
/*@_init_PROLOG_BEGINS*/ /*@_init_PROLOG_BEGINS*/\n\
.section .init .section .init\n\
.align 4 .align 4\n\
.globl _init .globl _init\n\
.type _init,@function .type _init,@function\n\
_init: _init:\n\
stw %rp,-20(%sp) stw %rp,-20(%sp)\n\
stwm %r4,64(%sp) stwm %r4,64(%sp)\n\
stw %r19,-32(%sp) stw %r19,-32(%sp)\n\
bl __gmon_start__,%rp bl __gmon_start__,%rp\n\
copy %r19,%r4 /* delay slot */ copy %r19,%r4 /* delay slot */\n\
copy %r4,%r19 copy %r4,%r19\n\
/*@_init_PROLOG_ENDS*/ /*@_init_PROLOG_ENDS*/\n\
\n\
/*@_init_EPILOG_BEGINS*/ /*@_init_EPILOG_BEGINS*/\n\
.text .text\n\
.align 4 .align 4\n\
.weak __gmon_start__ .weak __gmon_start__\n\
.type __gmon_start__,@function .type __gmon_start__,@function\n\
__gmon_start__: __gmon_start__:\n\
.proc .proc\n\
.callinfo .callinfo\n\
.entry .entry\n\
bv,n %r0(%r2) bv,n %r0(%r2)\n\
.exit .exit\n\
.procend .procend\n\
\n\
/* Here is the tail end of _init. We put __gmon_start before this so /* Here is the tail end of _init. We put __gmon_start before this so\n\
that the assembler creates the .PARISC.unwind section for us, ie. that the assembler creates the .PARISC.unwind section for us, ie.\n\
with the right attributes. */ with the right attributes. */\n\
.section .init .section .init\n\
ldw -84(%sp),%rp ldw -84(%sp),%rp\n\
copy %r4,%r19 copy %r4,%r19\n\
bv %r0(%rp) bv %r0(%rp)\n\
_end_init: _end_init:\n\
ldwm -64(%sp),%r4 ldwm -64(%sp),%r4\n\
\n\
/* Our very own unwind info, because the assembler can't handle /* Our very own unwind info, because the assembler can't handle\n\
functions split into two or more pieces. */ functions split into two or more pieces. */\n\
.section .PARISC.unwind .section .PARISC.unwind\n\
.extern _init .extern _init\n\
.word _init, _end_init .word _init, _end_init\n\
.byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
\n\
/*@_init_EPILOG_ENDS*/ /*@_init_EPILOG_ENDS*/\n\
\n\
/*@_fini_PROLOG_BEGINS*/ /*@_fini_PROLOG_BEGINS*/\n\
.section .fini .section .fini\n\
.align 4 .align 4\n\
.globl _fini .globl _fini\n\
.type _fini,@function .type _fini,@function\n\
_fini: _fini:\n\
stw %rp,-20(%sp) stw %rp,-20(%sp)\n\
stwm %r4,64(%sp) stwm %r4,64(%sp)\n\
stw %r19,-32(%sp) stw %r19,-32(%sp)\n\
copy %r19,%r4 copy %r19,%r4\n\
/*@_fini_PROLOG_ENDS*/ /*@_fini_PROLOG_ENDS*/\n\
\n\
/*@_fini_EPILOG_BEGINS*/ /*@_fini_EPILOG_BEGINS*/\n\
.section .fini .section .fini\n\
ldw -84(%sp),%rp ldw -84(%sp),%rp\n\
copy %r4,%r19 copy %r4,%r19\n\
bv %r0(%rp) bv %r0(%rp)\n\
_end_fini: _end_fini:\n\
ldwm -64(%sp),%r4 ldwm -64(%sp),%r4\n\
\n\
.section .PARISC.unwind .section .PARISC.unwind\n\
.extern _fini .extern _fini\n\
.word _fini, _end_fini .word _fini, _end_fini\n\
.byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
\n\
/*@_fini_EPILOG_ENDS*/ /*@_fini_EPILOG_ENDS*/\n\
\n\
/*@TRAILER_BEGINS*/ /*@TRAILER_BEGINS*/\
"); ");

@ -216,7 +216,7 @@ _init:\n\
jal preinit\n\ jal preinit\n\
sd $28, 6*8($29)\n\ sd $28, 6*8($29)\n\
move $16, $29 # Save the old stack pointer to s0 ($16)\n\ move $16, $29 # Save the old stack pointer to s0 ($16)\n\
daddu $4, $29, 4*8 daddu $4, $29, 4*8\n\
jal __init\n\ jal __init\n\
# Restore saved registers from the old stack.\n\ # Restore saved registers from the old stack.\n\
ld $28, 6*8($16)\n\ ld $28, 6*8($16)\n\
@ -251,7 +251,7 @@ _init:\n\
jal preinit\n\ jal preinit\n\
sw $28, 24($29)\n\ sw $28, 24($29)\n\
move $16, $29 # Save the old stack pointer to s0 ($16)\n\ move $16, $29 # Save the old stack pointer to s0 ($16)\n\
addu $4, $29, 32 addu $4, $29, 32\n\
jal __init\n\ jal __init\n\
# Restore saved registers from the old stack.\n\ # Restore saved registers from the old stack.\n\
lw $28, 24($16)\n\ lw $28, 24($16)\n\
@ -343,12 +343,12 @@ asm ("\
.globl __libc_init_first\n\ .globl __libc_init_first\n\
__libc_init_first:\n\ __libc_init_first:\n\
dsubu $29, 8\n\ dsubu $29, 8\n\
sd $31, 0($29) sd $31, 0($29)\n\
jal __mach_init\n\ jal __mach_init\n\
ld $4, 0($29) ld $4, 0($29)\n\
ld $5, 1*8($29) ld $5, 1*8($29)\n\
ld $6, 2*8($29) ld $6, 2*8($29)\n\
ld $7, 3*8($29) ld $7, 3*8($29)\n\
j ___libc_init_first\n\ j ___libc_init_first\n\
"); ");
#else #else
@ -358,12 +358,12 @@ asm ("\
.globl __libc_init_first\n\ .globl __libc_init_first\n\
__libc_init_first:\n\ __libc_init_first:\n\
subu $29, 4\n\ subu $29, 4\n\
sw $31, 0($29) sw $31, 0($29)\n\
jal __mach_init\n\ jal __mach_init\n\
lw $4, 0($29) lw $4, 0($29)\n\
lw $5, 4($29) lw $5, 4($29)\n\
lw $6, 8($29) lw $6, 8($29)\n\
lw $7, 12($29) lw $7, 12($29)\n\
j ___libc_init_first\n\ j ___libc_init_first\n\
"); ");
#endif #endif

@ -1,5 +1,5 @@
/* Special .init and .fini section support for S/390. /* Special .init and .fini section support for S/390.
Copyright (C) 2000, 2001 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -27,114 +27,114 @@
* crtn.s puts the corresponding function epilogues * crtn.s puts the corresponding function epilogues
in the .init and .fini sections. */ in the .init and .fini sections. */
__asm__ (" __asm__ ("\
\n\
#include \"defs.h\" #include \"defs.h\"\n\
\n\
/*@HEADER_ENDS*/ /*@HEADER_ENDS*/\n\
\n\
/*@TESTS_BEGIN*/ /*@TESTS_BEGIN*/\n\
\n\
/*@TESTS_END*/ /*@TESTS_END*/\n\
\n\
/*@_init_PROLOG_BEGINS*/ /*@_init_PROLOG_BEGINS*/\n\
\n\
.section .init .section .init\n\
#NO_APP #NO_APP\n\
.align 4 .align 4\n\
.globl _init .globl _init\n\
.type _init,@function .type _init,@function\n\
_init: _init:\n\
# leaf function 0 # leaf function 0\n\
# automatics 0 # automatics 0\n\
# outgoing args 0 # outgoing args 0\n\
# need frame pointer 0 # need frame pointer 0\n\
# call alloca 0 # call alloca 0\n\
# has varargs 0 # has varargs 0\n\
# incoming args (stack) 0 # incoming args (stack) 0\n\
# function length 36 # function length 36\n\
STM 6,15,24(15) STM 6,15,24(15)\n\
BRAS 13,.LTN1_0 BRAS 13,.LTN1_0\n\
.LT1_0: .LT1_0:\n\
.LC14: .LC14:\n\
.long __gmon_start__@GOT .long __gmon_start__@GOT\n\
.LC15: .LC15:\n\
.long _GLOBAL_OFFSET_TABLE_-.LT1_0 .long _GLOBAL_OFFSET_TABLE_-.LT1_0\n\
.LTN1_0: .LTN1_0:\n\
LR 1,15 LR 1,15\n\
AHI 15,-96 AHI 15,-96\n\
ST 1,0(15) ST 1,0(15)\n\
L 12,.LC15-.LT1_0(13) L 12,.LC15-.LT1_0(13)\n\
AR 12,13 AR 12,13\n\
L 1,.LC14-.LT1_0(13) L 1,.LC14-.LT1_0(13)\n\
L 1,0(1,12) L 1,0(1,12)\n\
LTR 1,1 LTR 1,1\n\
JE .L22 JE .L22\n\
BASR 14,1 BASR 14,1\n\
.L22: .L22:\n\
#APP #APP\n\
.align 4,0x07 .align 4,0x07\n\
END_INIT END_INIT\n\
\n\
/*@_init_PROLOG_ENDS*/ /*@_init_PROLOG_ENDS*/\n\
\n\
/*@_init_EPILOG_BEGINS*/ /*@_init_EPILOG_BEGINS*/\n\
.align 4 .align 4\n\
.section .init .section .init\n\
#NO_APP #NO_APP\n\
.align 4 .align 4\n\
L 4,152(15) L 4,152(15)\n\
LM 6,15,120(15) LM 6,15,120(15)\n\
BR 4 BR 4\n\
#APP #APP\n\
END_INIT END_INIT\n\
\n\
/*@_init_EPILOG_ENDS*/ /*@_init_EPILOG_ENDS*/\n\
\n\
/*@_fini_PROLOG_BEGINS*/ /*@_fini_PROLOG_BEGINS*/\n\
.section .fini .section .fini\n\
#NO_APP #NO_APP\n\
.align 4 .align 4\n\
.globl _fini .globl _fini\n\
.type _fini,@function .type _fini,@function\n\
_fini: _fini:\n\
# leaf function 0 # leaf function 0\n\
# automatics 0 # automatics 0\n\
# outgoing args 0 # outgoing args 0\n\
# need frame pointer 0 # need frame pointer 0\n\
# call alloca 0 # call alloca 0\n\
# has varargs 0 # has varargs 0\n\
# incoming args (stack) 0 # incoming args (stack) 0\n\
# function length 30 # function length 30\n\
STM 6,15,24(15) STM 6,15,24(15)\n\
BRAS 13,.LTN2_0 BRAS 13,.LTN2_0\n\
.LT2_0: .LT2_0:\n\
.LC17: .LC17:\n\
.long _GLOBAL_OFFSET_TABLE_-.LT2_0 .long _GLOBAL_OFFSET_TABLE_-.LT2_0\n\
.LTN2_0: .LTN2_0:\n\
LR 1,15 LR 1,15\n\
AHI 15,-96 AHI 15,-96\n\
ST 1,0(15) ST 1,0(15)\n\
L 12,.LC17-.LT2_0(13) L 12,.LC17-.LT2_0(13)\n\
AR 12,13 AR 12,13\n\
#APP #APP\n\
.align 4,0x07 .align 4,0x07\n\
END_FINI END_FINI\n\
\n\
/*@_fini_PROLOG_ENDS*/ /*@_fini_PROLOG_ENDS*/\n\
\n\
/*@_fini_EPILOG_BEGINS*/ /*@_fini_EPILOG_BEGINS*/\n\
.align 4 .align 4\n\
.section .fini .section .fini\n\
#NO_APP #NO_APP\n\
.align 4 .align 4\n\
L 4,152(15) L 4,152(15)\n\
LM 6,15,120(15) LM 6,15,120(15)\n\
BR 4 BR 4\n\
#APP #APP\n\
END_FINI END_FINI\n\
\n\
/*@_fini_EPILOG_ENDS*/ /*@_fini_EPILOG_ENDS*/\n\
\n\
/*@TRAILER_BEGINS*/ /*@TRAILER_BEGINS*/\
"); ");

@ -1,5 +1,5 @@
/* Special .init and .fini section support for SH. /* Special .init and .fini section support for SH.
Copyright (C) 2000 Free Software Foundation, Inc. Copyright (C) 2000, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -27,116 +27,116 @@
* crtn.s puts the corresponding function epilogues * crtn.s puts the corresponding function epilogues
in the .init and .fini sections. */ in the .init and .fini sections. */
__asm__ (" __asm__ ("\
\n\
#include \"defs.h\" #include \"defs.h\"\n\
#define SHARED #define SHARED\n\
\n\
/*@HEADER_ENDS*/ /*@HEADER_ENDS*/\n\
\n\
/*@TESTS_BEGIN*/ /*@TESTS_BEGIN*/\n\
\n\
/*@TESTS_END*/ /*@TESTS_END*/\n\
\n\
/*@_init_PROLOG_BEGINS*/ /*@_init_PROLOG_BEGINS*/\n\
.section .init .section .init\n\
.align 5 .align 5\n\
.global _init .global _init\n\
.type _init,@function .type _init,@function\n\
_init: _init:\n\
mov.l r12,@-r15 mov.l r12,@-r15\n\
mov.l r14,@-r15 mov.l r14,@-r15\n\
sts.l pr,@-r15 sts.l pr,@-r15\n\
#ifdef SHARED #ifdef SHARED\n\
mova .L22,r0 mova .L22,r0\n\
mov.l .L22,r12 mov.l .L22,r12\n\
add r0,r12 add r0,r12\n\
mova .L23,r0 mova .L23,r0\n\
mov.l .L23,r1 mov.l .L23,r1\n\
add r0,r1 add r0,r1\n\
#else #else\n\
mov.l .L23,r1 mov.l .L23,r1\n\
#endif #endif\n\
jsr @r1 jsr @r1\n\
mov r15,r14 mov r15,r14\n\
bra 1f bra 1f\n\
nop nop\n\
.align 2 .align 2\n\
#ifdef SHARED #ifdef SHARED\n\
.L22: .L22:\n\
.long _GLOBAL_OFFSET_TABLE_ .long _GLOBAL_OFFSET_TABLE_\n\
.L23: .L23:\n\
.long __gmon_start__@PLT .long __gmon_start__@PLT\n\
#else #else\n\
.L23: .L23:\n\
.long __gmon_start__ .long __gmon_start__\n\
#endif #endif\n\
1: 1:\n\
ALIGN ALIGN\n\
END_INIT END_INIT\n\
\n\
\n\
/*@_init_PROLOG_ENDS*/ /*@_init_PROLOG_ENDS*/\n\
\n\
/*@_init_EPILOG_BEGINS*/ /*@_init_EPILOG_BEGINS*/\n\
.section .init .section .init\n\
mov r14,r15 mov r14,r15\n\
lds.l @r15+,pr lds.l @r15+,pr\n\
mov.l @r15+,r14 mov.l @r15+,r14\n\
rts rts \n\
mov.l @r15+,r12 mov.l @r15+,r12\n\
END_INIT END_INIT\n\
.section .text .section .text\n\
.align 5 .align 5\n\
.weak __gmon_start__ .weak __gmon_start__\n\
.type __gmon_start__,@function .type __gmon_start__,@function\n\
__gmon_start__: __gmon_start__:\n\
mov.l r14,@-r15 mov.l r14,@-r15\n\
mov r15,r14 mov r15,r14\n\
mov r14,r15 mov r14,r15\n\
rts rts \n\
mov.l @r15+,r14 mov.l @r15+,r14\n\
\n\
/*@_init_EPILOG_ENDS*/ /*@_init_EPILOG_ENDS*/\n\
\n\
/*@_fini_PROLOG_BEGINS*/ /*@_fini_PROLOG_BEGINS*/\n\
.section .fini .section .fini\n\
.align 5 .align 5\n\
.global _fini .global _fini\n\
.type _fini,@function .type _fini,@function\n\
_fini: _fini:\n\
mov.l r12,@-r15 mov.l r12,@-r15\n\
mov.l r14,@-r15 mov.l r14,@-r15\n\
sts.l pr,@-r15 sts.l pr,@-r15\n\
#ifdef SHARED #ifdef SHARED\n\
mova .L27,r0 mova .L27,r0\n\
mov.l .L27,r12 mov.l .L27,r12\n\
add r0,r12 add r0,r12\n\
#endif #endif\n\
mov r15,r14 mov r15,r14\n\
ALIGN ALIGN\n\
END_FINI END_FINI\n\
#ifdef SHARED #ifdef SHARED\n\
bra 1f bra 1f\n\
nop nop\n\
.align 2 .align 2\n\
.L27: .L27:\n\
.long _GLOBAL_OFFSET_TABLE_ .long _GLOBAL_OFFSET_TABLE_\n\
#endif #endif\n\
1: 1:\n\
/*@_fini_PROLOG_ENDS*/ /*@_fini_PROLOG_ENDS*/\n\
\n\
/*@_fini_EPILOG_BEGINS*/ /*@_fini_EPILOG_BEGINS*/\n\
.section .fini .section .fini\n\
mov r14,r15 mov r14,r15\n\
lds.l @r15+,pr lds.l @r15+,pr\n\
mov.l @r15+,r14 mov.l @r15+,r14\n\
rts rts \n\
mov.l @r15+,r12 mov.l @r15+,r12\n\
\n\
END_FINI END_FINI\n\
\n\
/*@_fini_EPILOG_ENDS*/ /*@_fini_EPILOG_ENDS*/\n\
\n\
/*@TRAILER_BEGINS*/ /*@TRAILER_BEGINS*/\
"); ");

@ -1,6 +1,6 @@
/* Machine-dependent software floating-point definitions. /* Machine-dependent software floating-point definitions.
Sparc userland (_Q_*) version. Sparc userland (_Q_*) version.
Copyright (C) 1997,1998,1999 Free Software Foundation, Inc. Copyright (C) 1997,1998,1999, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Richard Henderson (rth@cygnus.com), Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz) and Jakub Jelinek (jj@ultra.linux.cz) and
@ -20,7 +20,7 @@
License along with the GNU C Library; if not, write to the Free License along with the GNU C Library; if not, write to the Free
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 <fpu_control.h> #include <fpu_control.h>
#define _FP_W_TYPE_SIZE 32 #define _FP_W_TYPE_SIZE 32
@ -73,8 +73,8 @@
/* Some assembly to speed things up. */ /* Some assembly to speed things up. */
#define __FP_FRAC_ADD_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \ #define __FP_FRAC_ADD_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
__asm__ ("addcc %r7,%8,%2 __asm__ ("addcc %r7,%8,%2\n\
addxcc %r5,%6,%1 addxcc %r5,%6,%1\n\
addx %r3,%4,%0" \ addx %r3,%4,%0" \
: "=r" ((USItype)(r2)), \ : "=r" ((USItype)(r2)), \
"=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r1)), \
@ -88,8 +88,8 @@
: "cc") : "cc")
#define __FP_FRAC_SUB_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \ #define __FP_FRAC_SUB_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
__asm__ ("subcc %r7,%8,%2 __asm__ ("subcc %r7,%8,%2\n\
subxcc %r5,%6,%1 subxcc %r5,%6,%1\n\
subx %r3,%4,%0" \ subx %r3,%4,%0" \
: "=r" ((USItype)(r2)), \ : "=r" ((USItype)(r2)), \
"=&r" ((USItype)(r1)), \ "=&r" ((USItype)(r1)), \
@ -107,10 +107,10 @@
/* We need to fool gcc, as we need to pass more than 10 \ /* We need to fool gcc, as we need to pass more than 10 \
input/outputs. */ \ input/outputs. */ \
register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \ register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \
__asm__ __volatile__ (" __asm__ __volatile__ ("\
addcc %r8,%9,%1 addcc %r8,%9,%1\n\
addxcc %r6,%7,%0 addxcc %r6,%7,%0\n\
addxcc %r4,%5,%%g2 addxcc %r4,%5,%%g2\n\
addx %r2,%3,%%g1" \ addx %r2,%3,%%g1" \
: "=&r" ((USItype)(r1)), \ : "=&r" ((USItype)(r1)), \
"=&r" ((USItype)(r0)) \ "=&r" ((USItype)(r0)) \
@ -132,10 +132,10 @@
/* We need to fool gcc, as we need to pass more than 10 \ /* We need to fool gcc, as we need to pass more than 10 \
input/outputs. */ \ input/outputs. */ \
register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \ register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \
__asm__ __volatile__ (" __asm__ __volatile__ ("\
subcc %r8,%9,%1 subcc %r8,%9,%1\n\
subxcc %r6,%7,%0 subxcc %r6,%7,%0\n\
subxcc %r4,%5,%%g2 subxcc %r4,%5,%%g2\n\
subx %r2,%3,%%g1" \ subx %r2,%3,%%g1" \
: "=&r" ((USItype)(r1)), \ : "=&r" ((USItype)(r1)), \
"=&r" ((USItype)(r0)) \ "=&r" ((USItype)(r0)) \
@ -157,9 +157,9 @@
#define __FP_FRAC_DEC_4(x3,x2,x1,x0,y3,y2,y1,y0) __FP_FRAC_SUB_4(x3,x2,x1,x0,x3,x2,x1,x0,y3,y2,y1,y0) #define __FP_FRAC_DEC_4(x3,x2,x1,x0,y3,y2,y1,y0) __FP_FRAC_SUB_4(x3,x2,x1,x0,x3,x2,x1,x0,y3,y2,y1,y0)
#define __FP_FRAC_ADDI_4(x3,x2,x1,x0,i) \ #define __FP_FRAC_ADDI_4(x3,x2,x1,x0,i) \
__asm__ ("addcc %3,%4,%3 __asm__ ("addcc %3,%4,%3\n\
addxcc %2,%%g0,%2 addxcc %2,%%g0,%2\n\
addxcc %1,%%g0,%1 addxcc %1,%%g0,%1\n\
addx %0,%%g0,%0" \ addx %0,%%g0,%0" \
: "=&r" ((USItype)(x3)), \ : "=&r" ((USItype)(x3)), \
"=&r" ((USItype)(x2)), \ "=&r" ((USItype)(x2)), \
@ -202,18 +202,18 @@ do { \
* We need to clear cexc bits if any. \ * We need to clear cexc bits if any. \
*/ \ */ \
extern unsigned long long ___Q_numbers[]; \ extern unsigned long long ___Q_numbers[]; \
__asm__ __volatile__(" __asm__ __volatile__("\
ldd [%0], %%f30 ldd [%0], %%f30\n\
faddd %%f30, %%f30, %%f30 faddd %%f30, %%f30, %%f30\
" : : "r" (___Q_numbers) : "f30"); \ " : : "r" (___Q_numbers) : "f30"); \
} \ } \
else \ else \
{ \ { \
__asm__ __volatile__(" __asm__ __volatile__("\
mov %0, %%o0 mov %0, %%o0\n\
mov %%o7, %%g1 mov %%o7, %%g1\n\
call ___Q_simulate_exceptions call ___Q_simulate_exceptions\n\
mov %%g1, %%o7 mov %%g1, %%o7\
" : : "r" (_fex) : \ " : : "r" (_fex) : \
"g1", "g2", "g3", "g4", "g5", "o0", \ "g1", "g2", "g3", "g4", "g5", "o0", \
"o1", "o2", "o3", "o4", "o5", "cc"); \ "o1", "o2", "o3", "o4", "o5", "cc"); \

@ -38,7 +38,7 @@
struct lastlog struct lastlog
{ {
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
int32_t_t ll_time; int32_t ll_time;
#else #else
__time_t ll_time; __time_t ll_time;
#endif #endif

@ -38,7 +38,7 @@
struct lastlog struct lastlog
{ {
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
int32_t_t ll_time; int32_t ll_time;
#else #else
__time_t ll_time; __time_t ll_time;
#endif #endif

@ -38,7 +38,7 @@
struct lastlog struct lastlog
{ {
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32 #if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
int32_t_t ll_time; int32_t ll_time;
#else #else
__time_t ll_time; __time_t ll_time;
#endif #endif