summaryrefslogtreecommitdiff
path: root/libc/sysdeps/s390
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2010-10-12 20:15:00 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2010-10-12 20:15:00 +0000
commit9a13037b9f1354b7405124e83087b72c4c44d388 (patch)
treeada19b076406948b19b9b522f233839986f3b26f /libc/sysdeps/s390
parentd98e5692a730c407beffb9c2b1e31ffb14197948 (diff)
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
Diffstat (limited to 'libc/sysdeps/s390')
-rw-r--r--libc/sysdeps/s390/fpu/feupdateenv.c3
-rw-r--r--libc/sysdeps/s390/fpu/ftestexcept.c3
-rw-r--r--libc/sysdeps/s390/s390-32/__longjmp.c13
-rw-r--r--libc/sysdeps/s390/s390-32/elf/start.S14
-rw-r--r--libc/sysdeps/s390/s390-64/__longjmp.c13
5 files changed, 25 insertions, 21 deletions
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,16 +29,19 @@
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"
"ld %%f4,40(%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,16 +29,19 @@
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"
"ld %%f5,96(%1)\n\t"