Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 1 Sep 2001 19:24:55 +0000 (19:24 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 1 Sep 2001 19:24:55 +0000 (19:24 +0000)
2001-09-01  Richard Henderson  <rth@redhat.com>

* sysdeps/alpha/elf/Dist: Remove file.
* sysdeps/alpha/elf/Makefile: Remove file.
* sysdeps/alpha/elf/crtbegin.S: Remove file.
* sysdeps/alpha/elf/crtend.S: Remove file.
* sysdeps/alpha/elf/initfini.c: New file.

2001-09-01  Mark Kettenis  <kettenis@gnu.org>

* iconv/tst-iconv1.c: Include <stddef.h> for wchar_t.
* iconv/tst-iconv3.c: Likewise.

2001-09-01  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/generic/inttypes.h (__gwchar_t): Define to wchar_t for C++.

handle it like 'I' for symmetry with strftime.

ChangeLog
iconv/tst-iconv1.c
iconv/tst-iconv3.c
sysdeps/alpha/elf/Dist [deleted file]
sysdeps/alpha/elf/Makefile [deleted file]
sysdeps/alpha/elf/crtbegin.S [deleted file]
sysdeps/alpha/elf/crtend.S [deleted file]
sysdeps/alpha/elf/initfini.c [new file with mode: 0644]
sysdeps/generic/inttypes.h

index 9c7fdd0..d33a7d1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2001-09-01  Richard Henderson  <rth@redhat.com>
+
+       * sysdeps/alpha/elf/Dist: Remove file.
+       * sysdeps/alpha/elf/Makefile: Remove file.
+       * sysdeps/alpha/elf/crtbegin.S: Remove file.
+       * sysdeps/alpha/elf/crtend.S: Remove file.
+       * sysdeps/alpha/elf/initfini.c: New file.
+
+2001-09-01  Mark Kettenis  <kettenis@gnu.org>
+
+       * iconv/tst-iconv1.c: Include <stddef.h> for wchar_t.
+       * iconv/tst-iconv3.c: Likewise.
+
+2001-09-01  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/generic/inttypes.h (__gwchar_t): Define to wchar_t for C++.
+
 2001-09-01  Ulrich Drepper  <drepper@redhat.com>
 
        * iconv/gconv_cache.c: Rename variable cache to __gconv_cache and
@@ -10,7 +27,7 @@
 2001-08-31  Ulrich Drepper  <drepper@redhat.com>
 
        * time/strptime.c (strptime_internal): Recognize 'l' format and
-       handle it like 'I' for symmatry with strftime.
+       handle it like 'I' for symmetry with strftime.
 
 2001-08-31  Richard Henderson  <rth@redhat.com>
 
index d40fe53..d806ce6 100644 (file)
@@ -1,6 +1,7 @@
 /* Test case by yaoz@nih.gov.  */
 
 #include <iconv.h>
+#include <stddef.h>
 #include <stdio.h>
 #include <string.h>
 
index 60aa5c3..f613ed9 100644 (file)
@@ -2,6 +2,7 @@
 
 #include <iconv.h>
 #include <errno.h>
+#include <stddef.h>
 #include <stdio.h>
 
 #define BUFSIZE 10000
diff --git a/sysdeps/alpha/elf/Dist b/sysdeps/alpha/elf/Dist
deleted file mode 100644 (file)
index 3e70101..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-crtbegin.S
-crtend.S
diff --git a/sysdeps/alpha/elf/Makefile b/sysdeps/alpha/elf/Makefile
deleted file mode 100644 (file)
index db849bd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-ifeq ($(subdir), csu)
-extra-objs += crtbegin.o crtend.o
-install-lib += crtbegin.o crtend.o
-endif
diff --git a/sysdeps/alpha/elf/crtbegin.S b/sysdeps/alpha/elf/crtbegin.S
deleted file mode 100644 (file)
index 08f6c04..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Richard Henderson (rth@tamu.edu)
-
-   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.  */
-
-
-/*
- * Heads of the constructor/destructor lists.
- */
-
-/* The __*TOR_LIST__ symbols are not global because when this file is used
-   in a shared library, we do not want the symbol to fall over to the
-   application's lists.  */
-
-.section .ctors,"aw"
-
-       .align 3
-__CTOR_LIST__:
-       .quad -1
-
-.section .dtors,"aw"
-
-       .align 3
-__DTOR_LIST__:
-       .quad -1
-
-
-/*
- * Fragment of the ELF _fini routine that invokes our dtor cleanup.
- */
-
-.section .fini,"ax"
-
-       /* Since the bits of the _fini function are spread across many
-          object files, each potentially with its own GP, we must
-          assume we need to load ours.  Further, our .fini section
-          can easily be more than 4MB away from our .text bits so we
-          can't use bsr.  */
-
-       br      $gp,1f
-1:     ldgp    $gp,0($gp)
-       jsr     $26,__do_global_dtors_aux
-
-       /* Must match the alignment we got from crti.o else we get
-         zero-filled holes in our _fini function and then SIGILL.  */
-       .align 3
-
-/*
- * Invoke our destructors in order.
- */
-
-.text
-
-       .align 3
-       .ent __do_global_dtors_aux
-
-__do_global_dtors_aux:
-       .frame  $sp,16,$26,0
-       /* GP already loaded in .fini */
-       lda     $sp,-16($sp)
-       stq     $9,8($sp)
-       stq     $26,0($sp)
-       .mask   (1<<26)|(1<<9), -16
-       .prologue 0
-
-       lda     $9,__DTOR_LIST__
-       br      1f
-0:     jsr     $26,($27)
-1:     ldq     $27,8($9)
-       addq    $9,8,$9
-       bne     $27,0b
-
-       ldq     $26,0($sp)
-       ldq     $9,8($sp)
-       lda     $sp,16($sp)
-       ret
-
-       .end __do_global_dtors_aux
diff --git a/sysdeps/alpha/elf/crtend.S b/sysdeps/alpha/elf/crtend.S
deleted file mode 100644 (file)
index 576b868..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by Richard Henderson (rth@tamu.edu)
-
-   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.  */
-
-
-/*
- * Tails of the constructor/destructor lists.
- */
-
-/* The __*TOR_END__ symbols are not global because when this file is used
-   in a shared library, we do not want the symbol to fall over to the
-   application's lists.  */
-
-.section .ctors,"aw"
-
-       .align 3
-__CTOR_END__:
-       .quad   0
-
-.section .dtors,"aw"
-
-       .align 3
-__DTOR_END__:
-       .quad   0
-
-
-/*
- * Fragment of the ELF _init routine that invokes our ctor startup
- */
-
-.section .init,"ax"
-
-       /* Since the bits of the _init function are spread across many
-          object files, each potentially with its own GP, we must
-          assume we need to load ours.  Further, our .init section
-          can easily be more than 4MB away from our .text bits so we
-          can't use bsr.  */
-
-       br      $gp,1f
-1:     ldgp    $gp,0($gp)
-       jsr     $26,__do_global_ctors_aux
-
-       /* Must match the alignment we got from crti.o else we get
-          zero-filled holes in our _init function and thense SIGILL.  */
-       .align 3
-
-/*
- * Invoke our destructors in order.
- */
-
-.text
-
-       .align 3
-       .ent __do_global_ctors_aux
-
-__do_global_ctors_aux:
-       .frame  $sp,16,$26,0
-       /* GP already loaded in .init.  */
-       lda     $sp,-16($sp)
-       stq     $9,8($sp)
-       stq     $26,0($sp)
-       .mask   (1<<26)|(1<<9), -16
-       .prologue 0
-
-       lda     $9,__CTOR_END__
-       br      1f
-0:     jsr     $26,($27)
-1:     ldq     $27,-8($9)
-       subq    $9,8,$9
-       not     $27,$0
-       bne     $0,0b
-
-       ldq     $26,0($sp)
-       ldq     $9,8($sp)
-       lda     $sp,16($sp)
-       ret
-
-       .end __do_global_ctors_aux
diff --git a/sysdeps/alpha/elf/initfini.c b/sysdeps/alpha/elf/initfini.c
new file mode 100644 (file)
index 0000000..e1c0f1c
--- /dev/null
@@ -0,0 +1,98 @@
+/* Special .init and .fini section support for Alpha.
+   Copyright (C) 2001 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.  */
+
+/* This file is compiled into assembly code which is then munged by a sed
+   script into two files: crti.s and crtn.s.
+
+   * crti.s puts a function prologue at the beginning of the .init and .fini
+   sections and defines global symbols for those addresses, so they can be
+   called as functions.
+
+   * crtn.s puts the corresponding function epilogues in the .init and .fini
+   sections.
+
+   This differs from what would be generated by the generic code in that
+   we save and restore the GP within the function.  In order for linker
+   relaxation to work, the value in the GP register on exit from a function
+   must be valid for the function entry point.  Normally, a function is
+   contained within one object file and this is not an issue, provided
+   that the function reloads the gp after making any function calls.
+   However, _init and _fini are constructed from pieces of many object
+   files, all of which may have different GP values.  So we must reload
+   the GP value from crti.o in crtn.o.  */
+
+__asm__ ("
+
+#include \"defs.h\"
+
+/*@HEADER_ENDS*/
+
+/*@_init_PROLOG_BEGINS*/
+       .section .init, \"ax\", @progbits
+       .globl  _init
+       .ent    _init
+_init:
+       ldgp    $29, 0($27)
+       subq    $30, 16, $30
+       lda     $27, __gmon_start__
+       stq     $26, 0($30)
+       stq     $29, 8($30)
+       .prologue 1
+       beq     $27, 1f
+       jsr     $26, ($27), __gmon_start__
+       ldq     $29, 8($30)
+1:
+       .align 3
+       .end    _init
+       .size   _init, 0
+/*@_init_PROLOG_ENDS*/
+
+/*@_init_EPILOG_BEGINS*/
+       .section .init, \"ax\", @progbits
+       ldq     $26, 0($30)
+       ldq     $29, 8($30)
+       addq    $30, 16, $30
+       ret
+/*@_init_EPILOG_ENDS*/
+
+/*@_fini_PROLOG_BEGINS*/
+       .section .fini, \"ax\", @progbits
+       .globl  _fini
+       .ent    _fini
+_fini:
+       ldgp    $29, 0($27)
+       subq    $30, 16, $30
+       stq     $26, 0($30)
+       stq     $29, 8($30)
+       .prologue 1
+       .align 3
+       .end    _fini
+       .size   _fini, 0
+/*@_fini_PROLOG_ENDS*/
+
+/*@_fini_EPILOG_BEGINS*/
+       .section .fini, \"ax\", @progbits
+       ldq     $26, 0($30)
+       ldq     $29, 8($30)
+       addq    $30, 16, $30
+       ret
+/*@_fini_EPILOG_ENDS*/
+
+/*@TRAILER_BEGINS*/
+");
index 0549a6a..f0ae774 100644 (file)
@@ -29,7 +29,9 @@
 
 /* Get a definition for wchar_t.  But we must not define wchar_t itself.  */
 #ifndef ____gwchar_t_defined
-# ifdef __WCHAR_TYPE__
+# ifdef __cplusplus
+#  define __gwchar_t wchar_t
+# elif defined __WCHAR_TYPE__
 typedef __WCHAR_TYPE__ __gwchar_t;
 # else
 #  defined __need_wchar_t