Bug#427990: glibc: PIE executables core dumps on hppa

2007-06-08 Thread Aurelien Jarno
Hi!

Sébastien Bernard a écrit :
> Package: glibc
> Severity: important
> Tags: patch
> 
> start.S file is messing up the paramaters when using the -pie option.
> This causes instant segfault on hppa when trying to run an pie executable.
> 
> This causes portmap and nscd to break on this arch and maybe many other
> executables.
> 
> Here is a patch that fix the start problem, but all pie programs must
> be relinked to fix the segfault.

I have seen this patch on the mailing list and I have tried it, but
unfortunately the glibc is currently not buildable (even without this
patch), due to a unidentified toolchain breakage.

This patch will have to wait until it is fixed.

-- 
  .''`.  Aurelien Jarno | GPG: 1024D/F1BCDB73
 : :' :  Debian developer   | Electrical Engineer
 `. `'   [EMAIL PROTECTED] | [EMAIL PROTECTED]
   `-people.debian.org/~aurel32 | www.aurel32.net


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Bug#427990: glibc: PIE executables core dumps on hppa

2007-06-07 Thread Sébastien Bernard
Package: glibc
Severity: important
Tags: patch

start.S file is messing up the paramaters when using the -pie option.
This causes instant segfault on hppa when trying to run an pie executable.

This causes portmap and nscd to break on this arch and maybe many other
executables.

Here is a patch that fix the start problem, but all pie programs must
be relinked to fix the segfault.

-- System Information:
Debian Release: lenny/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'stable')
Architecture: hppa (parisc64)

Kernel: Linux 2.6.18-4-parisc64
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
--- ports/sysdeps/hppa/elf/start.S.orig	2007-06-02 12:27:53.0 +0200
+++ ports/sysdeps/hppa/elf/start.S	2007-06-02 12:27:49.0 +0200
@@ -96,16 +96,16 @@ _start:
 
 #if SHARED
 	/* load main (1st argument) */
-	addil	LR'.Lpmain, %r19
-	ldw	RR'.Lpmain(%r1), %r26
+	addil	LT'.Lpmain, %r19
+	ldw	RT'.Lpmain(%r1), %r26
 	ldw	0(%r26),%r26
 	/* void (*init) (void) (4th argument) */
-	addil	LR'.Lp__libc_csu_init, %r19
-	ldw	RR'.Lp__libc_csu_init(%r1), %r23
+	addil	LT'.Lp__libc_csu_init, %r19
+	ldw	RT'.Lp__libc_csu_init(%r1), %r23
 	ldw	0(%r23), %r23
 	/* void (*fini) (void) (5th argument) */
-	addil	LR'.Lp__libc_csu_fini, %r19
-	ldw	RR'.Lp__libc_csu_fini(%r1), %r22
+	addil	LT'.Lp__libc_csu_fini, %r19
+	ldw	RT'.Lp__libc_csu_fini(%r1), %r22
 	ldw	0(%r22), %r22
 #else
 	/* load main (1st argument) */