From 9a13037b9f1354b7405124e83087b72c4c44d388 Mon Sep 17 00:00:00 2001 From: joseph Date: Tue, 12 Oct 2010 20:15:00 +0000 Subject: Merge changes between r11460 and r11760 from /fsf/trunk. * sysdeps/powerpc/powerpc32/e500/fpu/feupdateenv.c (feupdateenv): Add libm_hidden_ver. * sysdeps/powerpc/powerpc32/e500/fpu/ftestexcept.c (fetestexcept): Add libm_hidden_def. git-svn-id: svn://svn.eglibc.org/trunk@11761 7b3dc134-2b1b-0410-93df-9e9f96275f8d --- libc/sysdeps/s390/fpu/feupdateenv.c | 3 ++- libc/sysdeps/s390/fpu/ftestexcept.c | 3 ++- libc/sysdeps/s390/s390-32/__longjmp.c | 13 ++++++++----- libc/sysdeps/s390/s390-32/elf/start.S | 14 +++++--------- libc/sysdeps/s390/s390-64/__longjmp.c | 13 ++++++++----- 5 files changed, 25 insertions(+), 21 deletions(-) (limited to 'libc/sysdeps/s390') diff --git a/libc/sysdeps/s390/fpu/feupdateenv.c b/libc/sysdeps/s390/fpu/feupdateenv.c index 64411e880..80f9687d7 100644 --- a/libc/sysdeps/s390/fpu/feupdateenv.c +++ b/libc/sysdeps/s390/fpu/feupdateenv.c @@ -1,5 +1,5 @@ /* Install given floating-point environment and raise exceptions. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). @@ -38,3 +38,4 @@ feupdateenv (const fenv_t *envp) /* Success. */ return 0; } +libm_hidden_def (feupdateenv) diff --git a/libc/sysdeps/s390/fpu/ftestexcept.c b/libc/sysdeps/s390/fpu/ftestexcept.c index 51af57e90..50d5afe3e 100644 --- a/libc/sysdeps/s390/fpu/ftestexcept.c +++ b/libc/sysdeps/s390/fpu/ftestexcept.c @@ -1,5 +1,5 @@ /* Test exception in current environment. - Copyright (C) 2000 Free Software Foundation, Inc. + Copyright (C) 2000, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Denis Joseph Barrow (djbarrow@de.ibm.com). @@ -31,3 +31,4 @@ fetestexcept (int excepts) temp = (temp >> FPC_DXC_SHIFT) | (temp >> FPC_FLAGS_SHIFT); return temp & excepts & FE_ALL_EXCEPT; } +libm_hidden_def (fetestexcept) diff --git a/libc/sysdeps/s390/s390-32/__longjmp.c b/libc/sysdeps/s390/s390-32/__longjmp.c index 4abc0ec81..95f8b7101 100644 --- a/libc/sysdeps/s390/s390-32/__longjmp.c +++ b/libc/sysdeps/s390/s390-32/__longjmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000, 2001, 2005, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2001, 2005, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). @@ -29,15 +29,18 @@ void __longjmp (__jmp_buf env, int val) { - register int r2 __asm ("%r2") = val == 0 ? 1 : val; #ifdef PTR_DEMANGLE - register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD (); - register void *r1 __asm ("%r1") = (void *) env; + uintptr_t guard = THREAD_GET_POINTER_GUARD (); # ifdef CHECK_SP - CHECK_SP (env, r3); + CHECK_SP (env, guard); # endif #elif defined CHECK_SP CHECK_SP (env, 0); +#endif + register int r2 __asm ("%r2") = val == 0 ? 1 : val; +#ifdef PTR_DEMANGLE + register uintptr_t r3 __asm ("%r3") = guard; + register void *r1 __asm ("%r1") = (void *) env; #endif /* Restore registers and jump back. */ asm volatile ("ld %%f6,48(%1)\n\t" diff --git a/libc/sysdeps/s390/s390-32/elf/start.S b/libc/sysdeps/s390/s390-32/elf/start.S index 066f7f0aa..8e48abbcc 100644 --- a/libc/sysdeps/s390/s390-32/elf/start.S +++ b/libc/sysdeps/s390/s390-32/elf/start.S @@ -108,7 +108,7 @@ _start: jne .L20 cl %r8,4(%r4) /* p_offset == 0? */ jne .L20 - l %r9,8(%r4) /* r9 = p_vaddr <- ELF header address */ + l %r9,8(%r4) /* r9 = PT_LOAD.p_vaddr <- ELF header address */ j .L24 .L20: alr %r4,%r0 /* r4 += AT_PHENT value */ brct %r12,.L19 @@ -124,16 +124,12 @@ _start: .L22: alr %r4,%r0 /* r4 += AT_PHENT value */ brct %r12,.L23 - ltr %r9,%r9 /* Load address == 0? */ - jz .L14 /* No checking for PIE without PT_PHDR. */ - j .L21 + j .L14 /* No PT_PHDR found - skip checking. */ -.L25: clr %r3,%r11 /* PT_PHDR p_vaddr == AT_PHDR? */ - je .L21 - lr %r9,%r11 - slr %r9,%r3 /* elf_header_addr = AT_PHDR - PT_PHDR.p_vaddr */ +.L25: slr %r11,%r3 /* AT_PHDR - PT_PHDR.p_vaddr (relocation offset)*/ + alr %r9,%r11 /* PT_LOAD.p_vaddr += relocation offset */ -.L21: l %r5,36(%r9) /* Load the e_flags field. */ + l %r5,36(%r9) /* Load the e_flags field. */ tml %r5,1 jz .L14 /* Binary does not require highgprs facility. */ diff --git a/libc/sysdeps/s390/s390-64/__longjmp.c b/libc/sysdeps/s390/s390-64/__longjmp.c index 445bd3baf..313b33854 100644 --- a/libc/sysdeps/s390/s390-64/__longjmp.c +++ b/libc/sysdeps/s390/s390-64/__longjmp.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc. +/* Copyright (C) 2001, 2005, 2009, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com). @@ -29,15 +29,18 @@ void __longjmp (__jmp_buf env, int val) { - register long int r2 __asm ("%r2") = val == 0 ? 1 : val; #ifdef PTR_DEMANGLE - register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD (); - register void *r1 __asm ("%r1") = (void *) env; + uintptr_t guard = THREAD_GET_POINTER_GUARD (); # ifdef CHECK_SP - CHECK_SP (env, r3); + CHECK_SP (env, guard); # endif #elif defined CHECK_SP CHECK_SP (env, 0); +#endif + register long int r2 __asm ("%r2") = val == 0 ? 1 : val; +#ifdef PTR_DEMANGLE + register uintptr_t r3 __asm ("%r3") = guard; + register void *r1 __asm ("%r1") = (void *) env; #endif /* Restore registers and jump back. */ asm volatile ("ld %%f7,104(%1)\n\t" -- cgit v1.2.3