about summary refs log tree commit diff
path: root/sysdeps/hppa
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 /sysdeps/hppa
parent821fcfd5c3c0f3799b37fded7321199cdceade7e (diff)
downloadglibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.tar.gz
glibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.tar.xz
glibc-49547c68f9c2f0e524e64dc6ff8f43147907cae4.zip
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>.
Diffstat (limited to 'sysdeps/hppa')
-rw-r--r--sysdeps/hppa/Makefile8
-rw-r--r--sysdeps/hppa/elf/initfini.c44
2 files changed, 34 insertions, 18 deletions
diff --git a/sysdeps/hppa/Makefile b/sysdeps/hppa/Makefile
index f6ad84358a..e6fb771c7d 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 c058ed0425..d2e07ea373 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*/