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> 2003-07-07 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/kernel-features.h: Version * 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> 2003-07-05 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end. * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.

View File

@ -38,6 +38,11 @@ ENTRY (name) \
cmp.eq p6,p0=-1,r10; \ cmp.eq p6,p0=-1,r10; \
(p6) br.cond.spnt.few __syscall_error; \ (p6) br.cond.spnt.few __syscall_error; \
ret;; \ ret;; \
.endp name; \
.proc __GC_##name; \
.globl __GC_##name; \
.hidden __GC_##name; \
__GC_##name: \
.Lpseudo_cancel: \ .Lpseudo_cancel: \
.prologue; \ .prologue; \
.regstk args, 5, args, 0; \ .regstk args, 5, args, 0; \
@ -62,12 +67,13 @@ ENTRY (name) \
mov ar.pfs = loc0; \ mov ar.pfs = loc0; \
.Lpseudo_end: \ .Lpseudo_end: \
ret; \ ret; \
.endp name; \ .endp __GC_##name; \
.section .gnu.linkonce.t.__syscall_error_##args, "ax"; \ .section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
.align 32; \ .align 32; \
.proc __syscall_error_##args; \ .proc __syscall_error_##args; \
.global __syscall_error_##args; \ .global __syscall_error_##args; \
.hidden __syscall_error_##args; \ .hidden __syscall_error_##args; \
.size __syscall_error_##args, 64; \
__syscall_error_##args: \ __syscall_error_##args: \
.prologue; \ .prologue; \
.regstk args, 5, args, 0; \ .regstk args, 5, args, 0; \
@ -82,6 +88,9 @@ __syscall_error_##args: \
mov r8 = -1; \ mov r8 = -1; \
mov ar.pfs = loc0 mov ar.pfs = loc0
#undef PSEUDO_END
#define PSEUDO_END(name) .endp
# ifdef IS_IN_libpthread # ifdef IS_IN_libpthread
# define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel # define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
# define CDISABLE br.call.sptk.many b0 = __pthread_disable_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> 2003-07-05 Richard Henderson <rth@redhat.com>
* sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end. * sysdeps/alpha/elf/pt-initfini.c: Avoid .ent/.end.

View File

@ -38,6 +38,11 @@ ENTRY (name) \
cmp.eq p6,p0=-1,r10; \ cmp.eq p6,p0=-1,r10; \
(p6) br.cond.spnt.few __syscall_error; \ (p6) br.cond.spnt.few __syscall_error; \
ret;; \ ret;; \
.endp name; \
.proc __GC_##name; \
.globl __GC_##name; \
.hidden __GC_##name; \
__GC_##name: \
.Lpseudo_cancel: \ .Lpseudo_cancel: \
.prologue; \ .prologue; \
.regstk args, 5, args, 0; \ .regstk args, 5, args, 0; \
@ -62,12 +67,13 @@ ENTRY (name) \
mov ar.pfs = loc0; \ mov ar.pfs = loc0; \
.Lpseudo_end: \ .Lpseudo_end: \
ret; \ ret; \
.endp name; \ .endp __GC_##name; \
.section .gnu.linkonce.t.__syscall_error_##args, "ax"; \ .section .gnu.linkonce.t.__syscall_error_##args, "ax"; \
.align 32; \ .align 32; \
.proc __syscall_error_##args; \ .proc __syscall_error_##args; \
.global __syscall_error_##args; \ .global __syscall_error_##args; \
.hidden __syscall_error_##args; \ .hidden __syscall_error_##args; \
.size __syscall_error_##args, 64; \
__syscall_error_##args: \ __syscall_error_##args: \
.prologue; \ .prologue; \
.regstk args, 5, args, 0; \ .regstk args, 5, args, 0; \
@ -82,6 +88,9 @@ __syscall_error_##args: \
mov r8 = -1; \ mov r8 = -1; \
mov ar.pfs = loc0 mov ar.pfs = loc0
#undef PSEUDO_END
#define PSEUDO_END(name) .endp
# ifdef IS_IN_libpthread # ifdef IS_IN_libpthread
# define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel # define CENABLE br.call.sptk.many b0 = __pthread_enable_asynccancel
# define CDISABLE br.call.sptk.many b0 = __pthread_disable_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. /* 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. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -21,7 +21,11 @@
#include "bp-sym.h" #include "bp-sym.h"
/* These are the various addresses we require. */ /* These are the various addresses we require. */
#ifdef PIC
.section ".data.rel.ro.local"
#else
.section ".rodata" .section ".rodata"
#endif
.align 3 .align 3
L(start_addresses): L(start_addresses):
.quad 0 /* was _SDA_BASE_ but not in 64-bit ABI*/ .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. /* 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). Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library. 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 %r6,.L2-.Llit(%r13) # load pointer to __libc_csu_fini
l %r5,.L1-.Llit(%r13) # load pointer to __libc_csu_init l %r5,.L1-.Llit(%r13) # load pointer to __libc_csu_init
l %r2,.L3-.Llit(%r13) # load pointer to main 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 */ /* ok, now branch to the libc main routine */
l %r1,.L4-.Llit(%r13)
basr %r14,%r1 basr %r14,%r1
/* crash if __libc_start_main returns */ /* crash if __libc_start_main returns */
.word 0 .word 0
.Llit: .Llit:
#ifndef PIC
.L1: .long __libc_csu_init .L1: .long __libc_csu_init
.L2: .long __libc_csu_fini .L2: .long __libc_csu_fini
.L3: .long main .L3: .long main
.L4: .long __libc_start_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 ?!? */ /* FIXME: FPU flags or what ?!? */

View File

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