2003-07-04  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/s390/s390-32/elf/start.S: Emit position independent code
	if PIC.
	* sysdeps/s390/s390-64/elf/start.S: Likewise.

2003-07-07  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
	into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
This commit is contained in:
Ulrich Drepper 2003-07-08 03:49:44 +00:00
parent d810b3584c
commit 57a5ea0215
8 changed files with 73 additions and 6 deletions

View File

@ -1,3 +1,14 @@
2003-07-04 Jakub Jelinek <jakub@redhat.com>
* sysdeps/s390/s390-32/elf/start.S: Emit position independent code
if PIC.
* sysdeps/s390/s390-64/elf/start.S: Likewise.
2003-07-07 Jakub Jelinek <jakub@redhat.com>
* sysdeps/powerpc/powerpc64/elf/start.S: Put L(start_address)
into .data.rel.ro.local section if PIC to avoid DT_TEXTREL.
2003-07-07 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h: Version

View File

@ -1,3 +1,10 @@
2003-07-04 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
different symbol for the cancellation syscall wrapper and
non-cancellation syscall wrapper.
(PSEUDO_END): Define.
2003-07-05 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.

View File

@ -38,6 +38,11 @@ ENTRY (name) \
cmp.eq p6,p0=-1,r10; \
(p6) br.cond.spnt.few __syscall_error; \
ret;; \
.endp name; \
.proc __GC_##name; \
.globl __GC_##name; \
.hidden __GC_##name; \
__GC_##name: \
.Lpseudo_cancel: \
.prologue; \
.regstk args, 5, args, 0; \
@ -62,12 +67,13 @@ ENTRY (name) \
mov ar.pfs = loc0; \
.Lpseudo_end: \
ret; \
.endp name; \
.endp __GC_##name; \
.section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
.align 32; \
.proc __syscall_error_##args; \
.global __syscall_error_##args; \
.hidden __syscall_error_##args; \
.size __syscall_error_##args, 64; \
__syscall_error_##args: \
.prologue; \
.regstk args, 5, args, 0; \
@ -82,6 +88,9 @@ __syscall_error_##args: \
mov r8 = -1; \
mov ar.pfs = loc0
#undef PSEUDO_END
#define PSEUDO_END(name) .endp
# ifdef IS_IN_libpthread
# define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
# define CDISABLE br.call.sptk.many b0 = __pthread_disable_asynccancel

View File

@ -1,3 +1,10 @@
2003-07-04 Jakub Jelinek <jakub@redhat.com>
* sysdeps/unix/sysv/linux/ia64/sysdep-cancel.h (PSEUDO): Use
different symbol for the cancellation syscall wrapper and
non-cancellation syscall wrapper.
(PSEUDO_END): Define.
2003-07-05 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.

View File

@ -38,6 +38,11 @@ ENTRY (name) \
cmp.eq p6,p0=-1,r10; \
(p6) br.cond.spnt.few __syscall_error; \
ret;; \
.endp name; \
.proc __GC_##name; \
.globl __GC_##name; \
.hidden __GC_##name; \
__GC_##name: \
.Lpseudo_cancel: \
.prologue; \
.regstk args, 5, args, 0; \
@ -62,12 +67,13 @@ ENTRY (name) \
mov ar.pfs = loc0; \
.Lpseudo_end: \
ret; \
.endp name; \
.endp __GC_##name; \
.section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
.align 32; \
.proc __syscall_error_##args; \
.global __syscall_error_##args; \
.hidden __syscall_error_##args; \
.size __syscall_error_##args, 64; \
__syscall_error_##args: \
.prologue; \
.regstk args, 5, args, 0; \
@ -82,6 +88,9 @@ __syscall_error_##args: \
mov r8 = -1; \
mov ar.pfs = loc0
#undef PSEUDO_END
#define PSEUDO_END(name) .endp
# ifdef IS_IN_libpthread
# define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
# define CDISABLE br.call.sptk.many b0 = __pthread_disable_asynccancel

View File

@ -1,5 +1,5 @@
/* Startup code for programs linked with GNU libc. PowerPC64 version.
Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 1998,1999,2000,2001,2002,2003 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
@ -21,7 +21,11 @@
#include "bp-sym.h"
/* These are the various addresses we require. */
#ifdef PIC
.section ".data.rel.ro.local"
#else
.section ".rodata"
#endif
.align 3
L(start_addresses):
.quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/

View File

@ -1,5 +1,5 @@
/* Startup code compliant to the ELF s390 ABI.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@ -66,19 +66,35 @@ _start:
l %r6,.L2-.Llit(%r13) # load pointer to __libc_csu_fini
l %r5,.L1-.Llit(%r13) # load pointer to __libc_csu_init
l %r2,.L3-.Llit(%r13) # load pointer to main
l %r1,.L4-.Llit(%r13) # load pointer to __libc_start_main
#ifdef PIC
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)
#endif
/* ok, now branch to the libc main routine */
l %r1,.L4-.Llit(%r13)
basr %r14,%r1
/* crash if __libc_start_main returns */
.word 0
.Llit:
#ifndef PIC
.L1: .long __libc_csu_init
.L2: .long __libc_csu_fini
.L3: .long main
.L4: .long __libc_start_main
#else
.L1: .long __libc_csu_init-.Llit
.L2: .long __libc_csu_fini-.Llit
.L3: .long main-.Llit
.L4: .long __libc_start_main@plt-.Llit
.L5: .long _GLOBAL_OFFSET_TABLE_-.Llit
#endif
/* FIXME: FPU flags or what ?!? */

View File

@ -1,5 +1,5 @@
/* Startup code compliant to the 64 bit S/390 ELF ABI.
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@ -64,7 +64,11 @@ _start:
larl %r2,main # load pointer to main
/* Ok, now branch to the libc main routine. */
#ifdef PIC
brasl %r14,__libc_start_main@plt
#else
brasl %r14,__libc_start_main
#endif
/* Crash if __libc_start_main returns. */
.word 0