aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-04-20 06:06:55 +0000
committerUlrich Drepper <drepper@redhat.com>2001-04-20 06:06:55 +0000
commit49547c68f9c2f0e524e64dc6ff8f43147907cae4 (patch)
tree4ddc654dfcd6c8c9e19330a94f50c537bd94f0b1
parent821fcfd5c3c0f3799b37fded7321199cdceade7e (diff)
downloadglibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.zip
glibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.tar.gz
glibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.tar.bz2
Update.
2001-04-19 Alan Modra <amodra@one.net.au> * Makerules (libc_pic.os): Add $(LDFLAGS-c_pic.os). * sysdeps/hppa/Makefile (LDFLAGS-c_pic.os): Define. (CFLAGS-.os): Remove. * sysdeps/unix/sysv/linux/hppa/sysdep.h (CALL_MCOUNT): Update comment. * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (NGREG, NFPREG, gregset): Correct for new kernel definitions. 2001-04-19 Alan Modra <alan@linuxcare.com.au> * sysdeps/hppa/elf/initfini.c: Change dlt reg save to r3 and generate unwind info by hand. 2001-04-19 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Optimize a bit. * configure.in: Correct regular expression for msgfmt. Patch by Bruno Haible <haible@ilog.fr>.
-rw-r--r--ChangeLog23
-rw-r--r--Makerules2
-rw-r--r--sysdeps/hppa/Makefile8
-rw-r--r--sysdeps/hppa/elf/initfini.c44
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sys/ucontext.h11
-rw-r--r--sysdeps/unix/sysv/linux/hppa/sysdep.h9
6 files changed, 66 insertions, 31 deletions
diff --git a/ChangeLog b/ChangeLog
index cfb3263..4331f8c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,26 @@
+2001-04-19 Alan Modra <amodra@one.net.au>
+
+ * Makerules (libc_pic.os): Add $(LDFLAGS-c_pic.os).
+ * sysdeps/hppa/Makefile (LDFLAGS-c_pic.os): Define.
+ (CFLAGS-.os): Remove.
+
+ * sysdeps/unix/sysv/linux/hppa/sysdep.h (CALL_MCOUNT): Update comment.
+
+ * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h (NGREG, NFPREG,
+ gregset): Correct for new kernel definitions.
+
+2001-04-19 Alan Modra <alan@linuxcare.com.au>
+
+ * sysdeps/hppa/elf/initfini.c: Change dlt reg save to r3 and
+ generate unwind info by hand.
+
+2001-04-19 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/mmap64.c (__mmap64): Optimize a bit.
+
+ * configure.in: Correct regular expression for msgfmt.
+ Patch by Bruno Haible <haible@ilog.fr>.
+
2001-04-19 Andreas Jaeger <aj@suse.de>
* po/el.po: Add comment explaining what's broken.
diff --git a/Makerules b/Makerules
index 77951f3..485b5c0 100644
--- a/Makerules
+++ b/Makerules
@@ -500,7 +500,7 @@ LDFLAGS-c.so += -u __register_frame
# between libc.so and ld.so, which can make it impossible to upgrade.
$(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
$(LINK.o) -nostdlib -nostartfiles -r -o $@ \
- -Wl,-d -Wl,--whole-archive $^
+ $(LDFLAGS-c_pic.os) -Wl,-d -Wl,--whole-archive $^
# Use our own special initializer and finalizer files for libc.so.
$(common-objpfx)libc.so: $(elfobjdir)/soinit.os \
$(common-objpfx)libc_pic.os \
diff --git a/sysdeps/hppa/Makefile b/sysdeps/hppa/Makefile
index f6ad843..e6fb771 100644
--- a/sysdeps/hppa/Makefile
+++ b/sysdeps/hppa/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 2000 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2001 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# Contributed by David Huggins-Daines (dhd@debian.org)
@@ -17,8 +17,10 @@
# write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
-# We need this for all shared objects since the build process uses ld -r
-CFLAGS-.os += -ffunction-sections
+# We used to need this since the build process uses ld -r. Now we use
+# ld -r --unique=.text* which does more or less the same thing, but better.
+# CFLAGS-.os += -ffunction-sections
+LDFLAGS-c_pic.os += -Wl,--unique=.text*
ifeq ($(subdir),elf)
dl-routines += dl-symaddr dl-fptr
diff --git a/sysdeps/hppa/elf/initfini.c b/sysdeps/hppa/elf/initfini.c
index c058ed0..d2e07ea 100644
--- a/sysdeps/hppa/elf/initfini.c
+++ b/sysdeps/hppa/elf/initfini.c
@@ -59,8 +59,6 @@ __asm__ ("
.align 4
.globl _init
.type _init,@function
- .proc
- .callinfo
_init:
stw %rp,-20(%sp)
stwm %r4,64(%sp)
@@ -68,25 +66,38 @@ _init:
bl __gmon_start__,%rp
copy %r19,%r4 /* delay slot */
copy %r4,%r19
- .align 4
- .procend
/*@_init_PROLOG_ENDS*/
/*@_init_EPILOG_BEGINS*/
- .section .init
- copy %r4,%r19
- ldw -84(%sp),%rp
- bv %r0(%rp)
- ldwm -64(%sp),%r4
.text
.align 4
.weak __gmon_start__
.type __gmon_start__,@function
+__gmon_start__:
.proc
.callinfo
-__gmon_start__:
+ .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*/
@@ -94,23 +105,26 @@ __gmon_start__:
.align 4
.globl _fini
.type _fini,@function
- .proc
- .callinfo
_fini:
stw %rp,-20(%sp)
stwm %r4,64(%sp)
stw %r19,-32(%sp)
copy %r19,%r4
- .align 4
- .procend
/*@_fini_PROLOG_ENDS*/
/*@_fini_EPILOG_BEGINS*/
.section .fini
- copy %r4,%r19
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*/
diff --git a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
index c819ab1..44108f0 100644
--- a/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/hppa/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2000, 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
@@ -33,15 +33,16 @@
typedef unsigned long int greg_t;
/* Number of general registers. */
-#define NGREG 42
-#define NFPREG 33
+#define NGREG 80
+#define NFPREG 32
/* Container for all general registers. */
typedef struct gregset
{
greg_t g_regs[32];
- greg_t sr_regs[5];
- greg_t g_pad[5];
+ greg_t sr_regs[8];
+ greg_t cr_regs[24];
+ greg_t g_pad[16];
} gregset_t;
/* Container for all FPU registers. */
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.h b/sysdeps/unix/sysv/linux/hppa/sysdep.h
index 1430642..20ec736 100644
--- a/sysdeps/unix/sysv/linux/hppa/sysdep.h
+++ b/sysdeps/unix/sysv/linux/hppa/sysdep.h
@@ -89,13 +89,8 @@
1: .size C_SYMBOL_NAME(name),1b-C_SYMBOL_NAME(name)
/* If compiled for profiling, call `mcount' at the start of each function. */
-#ifdef PROF
-/* The mcount code relies on a normal frame pointer being on the stack
- to locate our caller, so push one just for its benefit. */
-#define CALL_MCOUNT /* XXX */
-#else
+/* No, don't bother. gcc will put the call in for us. */
#define CALL_MCOUNT /* Do nothing. */
-#endif
/* syscall wrappers consist of
#include <sysdep.h>
@@ -231,7 +226,7 @@
register unsigned long __r21 __asm__("r21") = (unsigned long)r21; \
LOAD_ARGS_5(r26,r25,r24,r23,r22)
-#define ASM_ARGS_0
+#define ASM_ARGS_0
#define ASM_ARGS_1 , "r" (__r26)
#define ASM_ARGS_2 , "r" (__r26), "r" (__r25)
#define ASM_ARGS_3 , "r" (__r26), "r" (__r25), "r" (__r24)