+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>
Jakub Jelinek <jakub@redhat.com>
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
-gcc (2.95 or newer) should work with the GNU C library (for powerpc see
-?powerpc; for ARM see ?arm; for MIPS see ?mips).
+gcc (3.2 or newer) should work with the GNU C library (for MIPS see ?mips).
Please note that gcc 2.95 and 2.95.x cannot compile glibc on Alpha due to
problems in the complex float support.
??powerpc Which compiler should I use for powerpc?
-{GK} You want to use at least gcc 2.95 (together with the right versions
-of all the other tools, of course). See also ?excpt.
+{} Removed. Does not apply anymore.
??arm Which tools should I use for ARM?
-{PB} You should use egcs 1.1 or a later version. For ELF systems some
-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.
+{} Removed. Does not apply anymore.
?? Do I need some more things to compile the GNU C Library?
There are some failures which are not directly related to the GNU libc:
- Some compilers produce buggy code. No compiler gets single precision
- complex numbers correct on Alpha. Otherwise, the egcs 1.1 release should be
- 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.
+ complex numbers correct on Alpha. Otherwise, gcc-3.2 should be ok.
- 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
the test cases in the math subdirectory will fail. Linux 2.2 has
??mips Which tools should I use for MIPS?
-{AJ} You should use the current development version of gcc 3.0 or newer from
-CVS. gcc 2.95.x does not work correctly on mips-linux.
+{AJ} You should use the current development version of gcc 3.2 or newer from
+CVS.
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
glibc 2.x?
{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
were used on my Linux libc5 based system. Why?
{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
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.
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.
-
?? Why shall glibc never get installed on GNU/Linux systems in
/usr/local?
install this glibc version as default version, overriding the existing one,
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
?? I expect GNU libc to be 100% source code compatible with
-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.
See the end for copying conditions.
Changes by Ulrich Drepper. SH support by Kaz Kojima.
* 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':
BSD-compatible interface for getting all network interface addresses.
mips*-*-linux-gnu Linux-2.x on MIPS
ia64-*-linux-gnu Linux-2.x on ia64
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
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
versions) used to run on the following configurations:
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: libc 2.2.94\n"
-"POT-Creation-Date: 2002-09-23 22:43-0700\n"
+"Project-Id-Version: libc 2.3\n"
+"POT-Creation-Date: 2002-10-02 17:22-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "Unmatched ) or \\)"
msgstr ""
-#: posix/regcomp.c:670
+#: posix/regcomp.c:673
msgid "No previous regular expression"
msgstr ""
/* 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.
The GNU C Library is free software; you can redistribute it and/or
making the comparison and indirect call is quite expensive (see the
comment in sysdeps/generic/initfini.c). */
-__asm__ ("
-
-#include \"defs.h\"
-
-/*@HEADER_ENDS*/
-
-/*@_init_PROLOG_BEGINS*/
- .section .init
- .align 4
- .globl _init
- .type _init,@function
-_init:
- stw %rp,-20(%sp)
- stwm %r4,64(%sp)
- stw %r19,-32(%sp)
- bl __gmon_start__,%rp
- copy %r19,%r4 /* delay slot */
- copy %r4,%r19
-/*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
- .text
- .align 4
- .weak __gmon_start__
- .type __gmon_start__,@function
-__gmon_start__:
- .proc
- .callinfo
- .entry
- bv,n %r0(%r2)
- .exit
- .procend
-
-/* Here is the tail end of _init. We put __gmon_start before this so
- that the assembler creates the .PARISC.unwind section for us, ie.
- with the right attributes. */
- .section .init
- ldw -84(%sp),%rp
- copy %r4,%r19
- bv %r0(%rp)
-_end_init:
- ldwm -64(%sp),%r4
-
-/* Our very own unwind info, because the assembler can't handle
- functions split into two or more pieces. */
- .section .PARISC.unwind
- .extern _init
- .word _init, _end_init
- .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
-
-/*@_init_EPILOG_ENDS*/
-
-/*@_fini_PROLOG_BEGINS*/
- .section .fini
- .align 4
- .globl _fini
- .type _fini,@function
-_fini:
- stw %rp,-20(%sp)
- stwm %r4,64(%sp)
- stw %r19,-32(%sp)
- copy %r19,%r4
-/*@_fini_PROLOG_ENDS*/
-
-/*@_fini_EPILOG_BEGINS*/
- .section .fini
- ldw -84(%sp),%rp
- copy %r4,%r19
- bv %r0(%rp)
-_end_fini:
- ldwm -64(%sp),%r4
-
- .section .PARISC.unwind
- .extern _fini
- .word _fini, _end_fini
- .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08
-
-/*@_fini_EPILOG_ENDS*/
-
-/*@TRAILER_BEGINS*/
+__asm__ ("\
+\n\
+#include \"defs.h\"\n\
+\n\
+/*@HEADER_ENDS*/\n\
+\n\
+/*@_init_PROLOG_BEGINS*/\n\
+ .section .init\n\
+ .align 4\n\
+ .globl _init\n\
+ .type _init,@function\n\
+_init:\n\
+ stw %rp,-20(%sp)\n\
+ stwm %r4,64(%sp)\n\
+ stw %r19,-32(%sp)\n\
+ bl __gmon_start__,%rp\n\
+ copy %r19,%r4 /* delay slot */\n\
+ copy %r4,%r19\n\
+/*@_init_PROLOG_ENDS*/\n\
+\n\
+/*@_init_EPILOG_BEGINS*/\n\
+ .text\n\
+ .align 4\n\
+ .weak __gmon_start__\n\
+ .type __gmon_start__,@function\n\
+__gmon_start__:\n\
+ .proc\n\
+ .callinfo\n\
+ .entry\n\
+ bv,n %r0(%r2)\n\
+ .exit\n\
+ .procend\n\
+\n\
+/* 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.\n\
+ with the right attributes. */\n\
+ .section .init\n\
+ ldw -84(%sp),%rp\n\
+ copy %r4,%r19\n\
+ bv %r0(%rp)\n\
+_end_init:\n\
+ ldwm -64(%sp),%r4\n\
+\n\
+/* Our very own unwind info, because the assembler can't handle\n\
+ functions split into two or more pieces. */\n\
+ .section .PARISC.unwind\n\
+ .extern _init\n\
+ .word _init, _end_init\n\
+ .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
+\n\
+/*@_init_EPILOG_ENDS*/\n\
+\n\
+/*@_fini_PROLOG_BEGINS*/\n\
+ .section .fini\n\
+ .align 4\n\
+ .globl _fini\n\
+ .type _fini,@function\n\
+_fini:\n\
+ stw %rp,-20(%sp)\n\
+ stwm %r4,64(%sp)\n\
+ stw %r19,-32(%sp)\n\
+ copy %r19,%r4\n\
+/*@_fini_PROLOG_ENDS*/\n\
+\n\
+/*@_fini_EPILOG_BEGINS*/\n\
+ .section .fini\n\
+ ldw -84(%sp),%rp\n\
+ copy %r4,%r19\n\
+ bv %r0(%rp)\n\
+_end_fini:\n\
+ ldwm -64(%sp),%r4\n\
+\n\
+ .section .PARISC.unwind\n\
+ .extern _fini\n\
+ .word _fini, _end_fini\n\
+ .byte 0x08, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08\n\
+\n\
+/*@_fini_EPILOG_ENDS*/\n\
+\n\
+/*@TRAILER_BEGINS*/\
");
jal preinit\n\
sd $28, 6*8($29)\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\
# Restore saved registers from the old stack.\n\
ld $28, 6*8($16)\n\
jal preinit\n\
sw $28, 24($29)\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\
# Restore saved registers from the old stack.\n\
lw $28, 24($16)\n\
.globl __libc_init_first\n\
__libc_init_first:\n\
dsubu $29, 8\n\
- sd $31, 0($29)
+ sd $31, 0($29)\n\
jal __mach_init\n\
- ld $4, 0($29)
- ld $5, 1*8($29)
- ld $6, 2*8($29)
- ld $7, 3*8($29)
+ ld $4, 0($29)\n\
+ ld $5, 1*8($29)\n\
+ ld $6, 2*8($29)\n\
+ ld $7, 3*8($29)\n\
j ___libc_init_first\n\
");
#else
.globl __libc_init_first\n\
__libc_init_first:\n\
subu $29, 4\n\
- sw $31, 0($29)
+ sw $31, 0($29)\n\
jal __mach_init\n\
- lw $4, 0($29)
- lw $5, 4($29)
- lw $6, 8($29)
- lw $7, 12($29)
+ lw $4, 0($29)\n\
+ lw $5, 4($29)\n\
+ lw $6, 8($29)\n\
+ lw $7, 12($29)\n\
j ___libc_init_first\n\
");
#endif
/* 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.
The GNU C Library is free software; you can redistribute it and/or
* crtn.s puts the corresponding function epilogues
in the .init and .fini sections. */
-__asm__ ("
-
-#include \"defs.h\"
-
-/*@HEADER_ENDS*/
-
-/*@TESTS_BEGIN*/
-
-/*@TESTS_END*/
-
-/*@_init_PROLOG_BEGINS*/
-
- .section .init
-#NO_APP
- .align 4
-.globl _init
- .type _init,@function
-_init:
-# leaf function 0
-# automatics 0
-# outgoing args 0
-# need frame pointer 0
-# call alloca 0
-# has varargs 0
-# incoming args (stack) 0
-# function length 36
- STM 6,15,24(15)
- BRAS 13,.LTN1_0
-.LT1_0:
-.LC14:
- .long __gmon_start__@GOT
-.LC15:
- .long _GLOBAL_OFFSET_TABLE_-.LT1_0
-.LTN1_0:
- LR 1,15
- AHI 15,-96
- ST 1,0(15)
- L 12,.LC15-.LT1_0(13)
- AR 12,13
- L 1,.LC14-.LT1_0(13)
- L 1,0(1,12)
- LTR 1,1
- JE .L22
- BASR 14,1
-.L22:
-#APP
- .align 4,0x07
- END_INIT
-
-/*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
- .align 4
- .section .init
-#NO_APP
- .align 4
- L 4,152(15)
- LM 6,15,120(15)
- BR 4
-#APP
- END_INIT
-
-/*@_init_EPILOG_ENDS*/
-
-/*@_fini_PROLOG_BEGINS*/
- .section .fini
-#NO_APP
- .align 4
-.globl _fini
- .type _fini,@function
-_fini:
-# leaf function 0
-# automatics 0
-# outgoing args 0
-# need frame pointer 0
-# call alloca 0
-# has varargs 0
-# incoming args (stack) 0
-# function length 30
- STM 6,15,24(15)
- BRAS 13,.LTN2_0
-.LT2_0:
-.LC17:
- .long _GLOBAL_OFFSET_TABLE_-.LT2_0
-.LTN2_0:
- LR 1,15
- AHI 15,-96
- ST 1,0(15)
- L 12,.LC17-.LT2_0(13)
- AR 12,13
-#APP
- .align 4,0x07
- END_FINI
-
-/*@_fini_PROLOG_ENDS*/
-
-/*@_fini_EPILOG_BEGINS*/
- .align 4
- .section .fini
-#NO_APP
- .align 4
- L 4,152(15)
- LM 6,15,120(15)
- BR 4
-#APP
- END_FINI
-
-/*@_fini_EPILOG_ENDS*/
-
-/*@TRAILER_BEGINS*/
+__asm__ ("\
+\n\
+#include \"defs.h\"\n\
+\n\
+/*@HEADER_ENDS*/\n\
+\n\
+/*@TESTS_BEGIN*/\n\
+\n\
+/*@TESTS_END*/\n\
+\n\
+/*@_init_PROLOG_BEGINS*/\n\
+\n\
+ .section .init\n\
+#NO_APP\n\
+ .align 4\n\
+.globl _init\n\
+ .type _init,@function\n\
+_init:\n\
+# leaf function 0\n\
+# automatics 0\n\
+# outgoing args 0\n\
+# need frame pointer 0\n\
+# call alloca 0\n\
+# has varargs 0\n\
+# incoming args (stack) 0\n\
+# function length 36\n\
+ STM 6,15,24(15)\n\
+ BRAS 13,.LTN1_0\n\
+.LT1_0:\n\
+.LC14:\n\
+ .long __gmon_start__@GOT\n\
+.LC15:\n\
+ .long _GLOBAL_OFFSET_TABLE_-.LT1_0\n\
+.LTN1_0:\n\
+ LR 1,15\n\
+ AHI 15,-96\n\
+ ST 1,0(15)\n\
+ L 12,.LC15-.LT1_0(13)\n\
+ AR 12,13\n\
+ L 1,.LC14-.LT1_0(13)\n\
+ L 1,0(1,12)\n\
+ LTR 1,1\n\
+ JE .L22\n\
+ BASR 14,1\n\
+.L22:\n\
+#APP\n\
+ .align 4,0x07\n\
+ END_INIT\n\
+\n\
+/*@_init_PROLOG_ENDS*/\n\
+\n\
+/*@_init_EPILOG_BEGINS*/\n\
+ .align 4\n\
+ .section .init\n\
+#NO_APP\n\
+ .align 4\n\
+ L 4,152(15)\n\
+ LM 6,15,120(15)\n\
+ BR 4\n\
+#APP\n\
+ END_INIT\n\
+\n\
+/*@_init_EPILOG_ENDS*/\n\
+\n\
+/*@_fini_PROLOG_BEGINS*/\n\
+ .section .fini\n\
+#NO_APP\n\
+ .align 4\n\
+.globl _fini\n\
+ .type _fini,@function\n\
+_fini:\n\
+# leaf function 0\n\
+# automatics 0\n\
+# outgoing args 0\n\
+# need frame pointer 0\n\
+# call alloca 0\n\
+# has varargs 0\n\
+# incoming args (stack) 0\n\
+# function length 30\n\
+ STM 6,15,24(15)\n\
+ BRAS 13,.LTN2_0\n\
+.LT2_0:\n\
+.LC17:\n\
+ .long _GLOBAL_OFFSET_TABLE_-.LT2_0\n\
+.LTN2_0:\n\
+ LR 1,15\n\
+ AHI 15,-96\n\
+ ST 1,0(15)\n\
+ L 12,.LC17-.LT2_0(13)\n\
+ AR 12,13\n\
+#APP\n\
+ .align 4,0x07\n\
+ END_FINI\n\
+\n\
+/*@_fini_PROLOG_ENDS*/\n\
+\n\
+/*@_fini_EPILOG_BEGINS*/\n\
+ .align 4\n\
+ .section .fini\n\
+#NO_APP\n\
+ .align 4\n\
+ L 4,152(15)\n\
+ LM 6,15,120(15)\n\
+ BR 4\n\
+#APP\n\
+ END_FINI\n\
+\n\
+/*@_fini_EPILOG_ENDS*/\n\
+\n\
+/*@TRAILER_BEGINS*/\
");
/* 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.
The GNU C Library is free software; you can redistribute it and/or
* crtn.s puts the corresponding function epilogues
in the .init and .fini sections. */
-__asm__ ("
-
-#include \"defs.h\"
-#define SHARED
-
-/*@HEADER_ENDS*/
-
-/*@TESTS_BEGIN*/
-
-/*@TESTS_END*/
-
-/*@_init_PROLOG_BEGINS*/
- .section .init
- .align 5
- .global _init
- .type _init,@function
-_init:
- mov.l r12,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
-#ifdef SHARED
- mova .L22,r0
- mov.l .L22,r12
- add r0,r12
- mova .L23,r0
- mov.l .L23,r1
- add r0,r1
-#else
- mov.l .L23,r1
-#endif
- jsr @r1
- mov r15,r14
- bra 1f
- nop
- .align 2
-#ifdef SHARED
-.L22:
- .long _GLOBAL_OFFSET_TABLE_
-.L23:
- .long __gmon_start__@PLT
-#else
-.L23:
- .long __gmon_start__
-#endif
-1:
- ALIGN
- END_INIT
-
-
-/*@_init_PROLOG_ENDS*/
-
-/*@_init_EPILOG_BEGINS*/
- .section .init
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- rts
- mov.l @r15+,r12
- END_INIT
- .section .text
- .align 5
- .weak __gmon_start__
- .type __gmon_start__,@function
-__gmon_start__:
- mov.l r14,@-r15
- mov r15,r14
- mov r14,r15
- rts
- mov.l @r15+,r14
-
-/*@_init_EPILOG_ENDS*/
-
-/*@_fini_PROLOG_BEGINS*/
- .section .fini
- .align 5
- .global _fini
- .type _fini,@function
-_fini:
- mov.l r12,@-r15
- mov.l r14,@-r15
- sts.l pr,@-r15
-#ifdef SHARED
- mova .L27,r0
- mov.l .L27,r12
- add r0,r12
-#endif
- mov r15,r14
- ALIGN
- END_FINI
-#ifdef SHARED
- bra 1f
- nop
- .align 2
-.L27:
- .long _GLOBAL_OFFSET_TABLE_
-#endif
-1:
-/*@_fini_PROLOG_ENDS*/
-
-/*@_fini_EPILOG_BEGINS*/
- .section .fini
- mov r14,r15
- lds.l @r15+,pr
- mov.l @r15+,r14
- rts
- mov.l @r15+,r12
-
- END_FINI
-
-/*@_fini_EPILOG_ENDS*/
-
-/*@TRAILER_BEGINS*/
+__asm__ ("\
+\n\
+#include \"defs.h\"\n\
+#define SHARED\n\
+\n\
+/*@HEADER_ENDS*/\n\
+\n\
+/*@TESTS_BEGIN*/\n\
+\n\
+/*@TESTS_END*/\n\
+\n\
+/*@_init_PROLOG_BEGINS*/\n\
+ .section .init\n\
+ .align 5\n\
+ .global _init\n\
+ .type _init,@function\n\
+_init:\n\
+ mov.l r12,@-r15\n\
+ mov.l r14,@-r15\n\
+ sts.l pr,@-r15\n\
+#ifdef SHARED\n\
+ mova .L22,r0\n\
+ mov.l .L22,r12\n\
+ add r0,r12\n\
+ mova .L23,r0\n\
+ mov.l .L23,r1\n\
+ add r0,r1\n\
+#else\n\
+ mov.l .L23,r1\n\
+#endif\n\
+ jsr @r1\n\
+ mov r15,r14\n\
+ bra 1f\n\
+ nop\n\
+ .align 2\n\
+#ifdef SHARED\n\
+.L22:\n\
+ .long _GLOBAL_OFFSET_TABLE_\n\
+.L23:\n\
+ .long __gmon_start__@PLT\n\
+#else\n\
+.L23:\n\
+ .long __gmon_start__\n\
+#endif\n\
+1:\n\
+ ALIGN\n\
+ END_INIT\n\
+\n\
+ \n\
+/*@_init_PROLOG_ENDS*/\n\
+\n\
+/*@_init_EPILOG_BEGINS*/\n\
+ .section .init\n\
+ mov r14,r15\n\
+ lds.l @r15+,pr\n\
+ mov.l @r15+,r14\n\
+ rts \n\
+ mov.l @r15+,r12\n\
+ END_INIT\n\
+ .section .text\n\
+ .align 5\n\
+ .weak __gmon_start__\n\
+ .type __gmon_start__,@function\n\
+__gmon_start__:\n\
+ mov.l r14,@-r15\n\
+ mov r15,r14\n\
+ mov r14,r15\n\
+ rts \n\
+ mov.l @r15+,r14\n\
+ \n\
+/*@_init_EPILOG_ENDS*/\n\
+\n\
+/*@_fini_PROLOG_BEGINS*/\n\
+ .section .fini\n\
+ .align 5\n\
+ .global _fini\n\
+ .type _fini,@function\n\
+_fini:\n\
+ mov.l r12,@-r15\n\
+ mov.l r14,@-r15\n\
+ sts.l pr,@-r15\n\
+#ifdef SHARED\n\
+ mova .L27,r0\n\
+ mov.l .L27,r12\n\
+ add r0,r12\n\
+#endif\n\
+ mov r15,r14\n\
+ ALIGN\n\
+ END_FINI\n\
+#ifdef SHARED\n\
+ bra 1f\n\
+ nop\n\
+ .align 2\n\
+.L27:\n\
+ .long _GLOBAL_OFFSET_TABLE_\n\
+#endif\n\
+1:\n\
+/*@_fini_PROLOG_ENDS*/\n\
+\n\
+/*@_fini_EPILOG_BEGINS*/\n\
+ .section .fini\n\
+ mov r14,r15\n\
+ lds.l @r15+,pr\n\
+ mov.l @r15+,r14\n\
+ rts \n\
+ mov.l @r15+,r12\n\
+\n\
+ END_FINI\n\
+ \n\
+/*@_fini_EPILOG_ENDS*/\n\
+\n\
+/*@TRAILER_BEGINS*/\
");
/* Machine-dependent software floating-point definitions.
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.
Contributed by Richard Henderson (rth@cygnus.com),
Jakub Jelinek (jj@ultra.linux.cz) and
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 <fpu_control.h>
#define _FP_W_TYPE_SIZE 32
/* Some assembly to speed things up. */
#define __FP_FRAC_ADD_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
- __asm__ ("addcc %r7,%8,%2
- addxcc %r5,%6,%1
+ __asm__ ("addcc %r7,%8,%2\n\
+ addxcc %r5,%6,%1\n\
addx %r3,%4,%0" \
: "=r" ((USItype)(r2)), \
"=&r" ((USItype)(r1)), \
: "cc")
#define __FP_FRAC_SUB_3(r2,r1,r0,x2,x1,x0,y2,y1,y0) \
- __asm__ ("subcc %r7,%8,%2
- subxcc %r5,%6,%1
+ __asm__ ("subcc %r7,%8,%2\n\
+ subxcc %r5,%6,%1\n\
subx %r3,%4,%0" \
: "=r" ((USItype)(r2)), \
"=&r" ((USItype)(r1)), \
/* We need to fool gcc, as we need to pass more than 10 \
input/outputs. */ \
register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \
- __asm__ __volatile__ ("
- addcc %r8,%9,%1
- addxcc %r6,%7,%0
- addxcc %r4,%5,%%g2
+ __asm__ __volatile__ ("\
+ addcc %r8,%9,%1\n\
+ addxcc %r6,%7,%0\n\
+ addxcc %r4,%5,%%g2\n\
addx %r2,%3,%%g1" \
: "=&r" ((USItype)(r1)), \
"=&r" ((USItype)(r0)) \
/* We need to fool gcc, as we need to pass more than 10 \
input/outputs. */ \
register USItype _t1 __asm__ ("g1"), _t2 __asm__ ("g2"); \
- __asm__ __volatile__ ("
- subcc %r8,%9,%1
- subxcc %r6,%7,%0
- subxcc %r4,%5,%%g2
+ __asm__ __volatile__ ("\
+ subcc %r8,%9,%1\n\
+ subxcc %r6,%7,%0\n\
+ subxcc %r4,%5,%%g2\n\
subx %r2,%3,%%g1" \
: "=&r" ((USItype)(r1)), \
"=&r" ((USItype)(r0)) \
#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) \
- __asm__ ("addcc %3,%4,%3
- addxcc %2,%%g0,%2
- addxcc %1,%%g0,%1
+ __asm__ ("addcc %3,%4,%3\n\
+ addxcc %2,%%g0,%2\n\
+ addxcc %1,%%g0,%1\n\
addx %0,%%g0,%0" \
: "=&r" ((USItype)(x3)), \
"=&r" ((USItype)(x2)), \
* We need to clear cexc bits if any. \
*/ \
extern unsigned long long ___Q_numbers[]; \
- __asm__ __volatile__("
- ldd [%0], %%f30
- faddd %%f30, %%f30, %%f30
+ __asm__ __volatile__("\
+ ldd [%0], %%f30\n\
+ faddd %%f30, %%f30, %%f30\
" : : "r" (___Q_numbers) : "f30"); \
} \
else \
{ \
- __asm__ __volatile__("
- mov %0, %%o0
- mov %%o7, %%g1
- call ___Q_simulate_exceptions
- mov %%g1, %%o7
+ __asm__ __volatile__("\
+ mov %0, %%o0\n\
+ mov %%o7, %%g1\n\
+ call ___Q_simulate_exceptions\n\
+ mov %%g1, %%o7\
" : : "r" (_fex) : \
"g1", "g2", "g3", "g4", "g5", "o0", \
"o1", "o2", "o3", "o4", "o5", "cc"); \
struct lastlog
{
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
- int32_t_t ll_time;
+ int32_t ll_time;
#else
__time_t ll_time;
#endif
struct lastlog
{
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
- int32_t_t ll_time;
+ int32_t ll_time;
#else
__time_t ll_time;
#endif
struct lastlog
{
#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
- int32_t_t ll_time;
+ int32_t ll_time;
#else
__time_t ll_time;
#endif