public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* [patch] s390: remove pc relativ relocation from start.S.
@ 2006-05-05 16:50 Martin Schwidefsky
  2006-05-05 18:26 ` Ulrich Drepper
  0 siblings, 1 reply; 2+ messages in thread
From: Martin Schwidefsky @ 2006-05-05 16:50 UTC (permalink / raw)
  To: libc-hacker

Hi,
while linking PIE executables an issue has been found with the startup
code for shared libs and pie executables. Scrt1.o is not position
independent since it contains a pc relative relocation against main()
in the .text segment. The attached patch fixes this.

blue skies,
  Martin.

2006-05-05  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* sysdeps/s390/s390-32/elf/start.S: Replace pc relative relocation
	by a GOT relocation to make Scrt1.o position independent.
	* sysdeps/s390/s390-64/elf/start.S: Likewise.

diff -urpN libc/sysdeps/s390/s390-32/elf/start.S libc-s390/sysdeps/s390/s390-32/elf/start.S
--- libc/sysdeps/s390/s390-32/elf/start.S	2004-08-16 06:50:59.000000000 +0200
+++ libc-s390/sysdeps/s390/s390-32/elf/start.S	2006-05-05 16:24:43.000000000 +0200
@@ -1,5 +1,6 @@
 /* Startup code compliant to the ELF s390 ABI.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2006
+   Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -88,9 +89,9 @@ _start:
 	l       %r12,.L5-.Llit(%r13)    # load .got pointer
 	la	%r6,0(%r13,%r6)
 	la	%r5,0(%r13,%r5)
-	la	%r2,0(%r13,%r2)
-	la	%r1,0(%r13,%r1)
 	la	%r12,0(%r13,%r12)
+	l	%r2,0(%r12,%r2)
+	la	%r1,0(%r13,%r1)
 #endif
 
 	/* ok, now branch to the libc main routine */
@@ -108,7 +109,7 @@ _start:
 #else
 .L1:    .long  __libc_csu_init-.Llit
 .L2:    .long  __libc_csu_fini-.Llit
-.L3:    .long  main-.Llit
+.L3:    .long  main@GOT
 .L4:    .long  __libc_start_main@plt-.Llit
 .L5:    .long  _GLOBAL_OFFSET_TABLE_-.Llit
 #endif
diff -urpN libc/sysdeps/s390/s390-64/elf/start.S libc-s390/sysdeps/s390/s390-64/elf/start.S
--- libc/sysdeps/s390/s390-64/elf/start.S	2004-08-16 06:50:55.000000000 +0200
+++ libc-s390/sysdeps/s390/s390-64/elf/start.S	2006-05-05 16:24:38.000000000 +0200
@@ -1,5 +1,5 @@
 /* Startup code compliant to the 64 bit S/390 ELF ABI.
-   Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
    Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
    This file is part of the GNU C Library.
 
@@ -78,12 +78,14 @@ _start:
 	la	%r7,160(%r15)
 	larl	%r6,__libc_csu_fini	# load pointer to __libc_csu_fini
 	larl	%r5,__libc_csu_init	# load pointer to __libc_csu_init
-	larl	%r2,main		# load pointer to main
 
 	/* Ok, now branch to the libc main routine.  */
 #ifdef PIC
+	larl	%r2,main@GOTENT		# load pointer to main
+	lg	%r2,0(%r2)
 	brasl	%r14,__libc_start_main@plt
 #else
+	larl	%r2,main		# load pointer to main
 	brasl	%r14,__libc_start_main
 #endif
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [patch] s390: remove pc relativ relocation from start.S.
  2006-05-05 16:50 [patch] s390: remove pc relativ relocation from start.S Martin Schwidefsky
@ 2006-05-05 18:26 ` Ulrich Drepper
  0 siblings, 0 replies; 2+ messages in thread
From: Ulrich Drepper @ 2006-05-05 18:26 UTC (permalink / raw)
  To: Martin Schwidefsky; +Cc: libc-hacker

[-- Attachment #1: Type: text/plain, Size: 101 bytes --]

Applied.

-- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2006-05-05 18:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-05 16:50 [patch] s390: remove pc relativ relocation from start.S Martin Schwidefsky
2006-05-05 18:26 ` Ulrich Drepper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).