aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sysdeps/s390/s390-32/bsd-_setjmp.S47
-rw-r--r--sysdeps/s390/s390-32/bsd-setjmp.S46
-rw-r--r--sysdeps/s390/s390-32/configure.in (renamed from sysdeps/s390/s390-32/elf/configure.in)2
-rw-r--r--sysdeps/s390/s390-32/elf/bsd-_setjmp.S1
-rw-r--r--sysdeps/s390/s390-32/elf/bsd-setjmp.S1
-rw-r--r--sysdeps/s390/s390-32/elf/configure127
-rw-r--r--sysdeps/s390/s390-32/elf/setjmp.S80
-rw-r--r--sysdeps/s390/s390-32/setjmp.S35
-rw-r--r--sysdeps/s390/s390-32/start.S (renamed from sysdeps/s390/s390-32/elf/start.S)0
9 files changed, 29 insertions, 310 deletions
diff --git a/sysdeps/s390/s390-32/bsd-_setjmp.S b/sysdeps/s390/s390-32/bsd-_setjmp.S
index 8dfa640a9f..1417270201 100644
--- a/sysdeps/s390/s390-32/bsd-_setjmp.S
+++ b/sysdeps/s390/s390-32/bsd-_setjmp.S
@@ -1,46 +1 @@
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. s390 version.
- Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This just does a tail-call to `__sigsetjmp (ARG, 0)'.
- We cannot do it in C because it must be a tail-call, so frame-unwinding
- in setjmp doesn't clobber the state restored by longjmp. */
-
-#include <sysdep.h>
-
-ENTRY(_setjmp)
-#ifdef PIC
- /* We cannot use the PLT, because it requires that %r12 be set, but
- we can't save and restore our caller's value. Instead, we do an
- indirect jump through the GOT. */
- basr %r1,0
-.L0: al %r1,.L1 - .L0(0,%r1) /* get address of global offset table */
- /* get address of __sigjmp_save from got */
- l %r1,__sigjmp_save@GOT12(0,%r1)
- lhi %r3,0 /* second argument of one */
- br %r1
-.L1: .long _GLOBAL_OFFSET_TABLE_ - .L0
-#else
- basr %r1,0
-.L0: l %r1,.L1 - .L0(0,%r1) /* load address of __sigsetjmp */
- lhi %r3,0 /* second argument of zero */
- br %r1 /* branch to __sigsetjmp */
-.L1: .long __sigsetjmp
-#endif
-END (_setjmp)
-libc_hidden_def (_setjmp)
+/* We don't need any code here since the setjmp.S file contains it. */
diff --git a/sysdeps/s390/s390-32/bsd-setjmp.S b/sysdeps/s390/s390-32/bsd-setjmp.S
index 93faf4cefc..1417270201 100644
--- a/sysdeps/s390/s390-32/bsd-setjmp.S
+++ b/sysdeps/s390/s390-32/bsd-setjmp.S
@@ -1,45 +1 @@
-/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'. s390 version.
- Copyright (C) 2000, 2001 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This just does a tail-call to `__sigsetjmp (ARG, 1)'.
- We cannot do it in C because it must be a tail-call, so frame-unwinding
- in setjmp doesn't clobber the state restored by longjmp. */
-
-#include <sysdep.h>
-
-ENTRY(setjmp)
-#ifdef PIC
- /* We cannot use the PLT, because it requires that %r12 be set, but
- we can't save and restore our caller's value. Instead, we do an
- indirect jump through the GOT. */
- basr %r1,0
-.L0: al %r1,.L1 - .L0(0,%r1) /* get address of global offset table */
- /* get address of __sigjmp_save from got */
- l %r1,__sigjmp_save@GOT12(0,%r1)
- lhi %r3,1 /* second argument of one */
- br %r1
-.L1: .long _GLOBAL_OFFSET_TABLE_ - .L0
-#else
- basr %r1,0
-.L0: l %r1,.L1 - .L0(0,%r1) /* load address of __sigsetjmp */
- lhi %r3,1 /* second argument of zero */
- br %r1 /* branch to __sigsetjmp */
-.L1: .long __sigsetjmp
-#endif
-END (setjmp)
+/* We don't need any code here since the setjmp.S file contains it. */
diff --git a/sysdeps/s390/s390-32/elf/configure.in b/sysdeps/s390/s390-32/configure.in
index d1f40a375a..529bdda36a 100644
--- a/sysdeps/s390/s390-32/elf/configure.in
+++ b/sysdeps/s390/s390-32/configure.in
@@ -1,5 +1,5 @@
GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
-# Local configure fragment for sysdeps/s390/elf.
+# Local configure fragment for sysdeps/s390.
# Check for support of thread-local storage handling in assembler and
# linker.
diff --git a/sysdeps/s390/s390-32/elf/bsd-_setjmp.S b/sysdeps/s390/s390-32/elf/bsd-_setjmp.S
deleted file mode 100644
index 1417270201..0000000000
--- a/sysdeps/s390/s390-32/elf/bsd-_setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* We don't need any code here since the setjmp.S file contains it. */
diff --git a/sysdeps/s390/s390-32/elf/bsd-setjmp.S b/sysdeps/s390/s390-32/elf/bsd-setjmp.S
deleted file mode 100644
index 1417270201..0000000000
--- a/sysdeps/s390/s390-32/elf/bsd-setjmp.S
+++ /dev/null
@@ -1 +0,0 @@
-/* We don't need any code here since the setjmp.S file contains it. */
diff --git a/sysdeps/s390/s390-32/elf/configure b/sysdeps/s390/s390-32/elf/configure
deleted file mode 100644
index 3012328834..0000000000
--- a/sysdeps/s390/s390-32/elf/configure
+++ /dev/null
@@ -1,127 +0,0 @@
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
- return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
- set +e
- as_fn_set_status $1
- exit $1
-} # as_fn_exit
-if expr a : '\(a\)' >/dev/null 2>&1 &&
- test "X`expr 00001 : '.*\(...\)'`" = X001; then
- as_expr=expr
-else
- as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
- as_basename=basename
-else
- as_basename=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
- X"$0" : 'X\(//\)$' \| \
- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
- sed '/^.*\/\([^/][^/]*\)\/*$/{
- s//\1/
- q
- }
- /^X\/\(\/\/\)$/{
- s//\1/
- q
- }
- /^X\/\(\/\).*/{
- s//\1/
- q
- }
- s/.*/./; q'`
-
-
- as_lineno_1=$LINENO as_lineno_1a=$LINENO
- as_lineno_2=$LINENO as_lineno_2a=$LINENO
- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
- sed -n '
- p
- /[$]LINENO/=
- ' <$as_myself |
- sed '
- s/[$]LINENO.*/&-/
- t lineno
- b
- :lineno
- N
- :loop
- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
- t loop
- s/-\n.*//
- ' >$as_me.lineno &&
- chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
-
- # Don't try to exec as it changes $[0], causing all sort of problems
- # (the dirname of $[0] is not the place where we might find the
- # original and so on. Autoconf is especially sensitive to this).
- . "./$as_me.lineno"
- # Exit status is that of the last command.
- exit
-}
-
-# This file is generated from configure.in by Autoconf. DO NOT EDIT!
- # Local configure fragment for sysdeps/s390/elf.
-
-# Check for support of thread-local storage handling in assembler and
-# linker.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for s390 TLS support" >&5
-$as_echo_n "checking for s390 TLS support... " >&6; }
-if ${libc_cv_390_tls+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat > conftest.S <<\EOF
- .section ".tdata", "awT", @progbits
-foo: .long 25
- .text
- .long foo@TLSGD
- .long foo@TLSLDM
- .long foo@DTPOFF
- .long foo@NTPOFF
- .long foo@GOTNTPOFF
- .long foo@INDNTPOFF
- l %r1,foo@GOTNTPOFF(%r12)
- l %r1,0(%r1):tls_load:foo
- bas %r14,0(%r1,%r13):tls_gdcall:foo
- bas %r14,0(%r1,%r13):tls_ldcall:foo
-EOF
-if { ac_try='${CC-cc} -S $CFLAGS conftest.S 1>&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- libc_cv_390_tls=yes
-else
- libc_cv_390_tls=no
-fi
-rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_390_tls" >&5
-$as_echo "$libc_cv_390_tls" >&6; }
-if test $libc_cv_390_tls = no; then
- as_fn_error $? "the assembler must support TLS" "$LINENO" 5
-fi
-
-$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h
-
diff --git a/sysdeps/s390/s390-32/elf/setjmp.S b/sysdeps/s390/s390-32/elf/setjmp.S
deleted file mode 100644
index c54620871e..0000000000
--- a/sysdeps/s390/s390-32/elf/setjmp.S
+++ /dev/null
@@ -1,80 +0,0 @@
-/* setjmp for s390, ELF version.
- Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
- Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#define _ASM
-#define _SETJMP_H
-#include <bits/setjmp.h>
-
- /* We include the BSD entry points here as well but we make
- them weak. */
-ENTRY (setjmp)
- .weak C_SYMBOL_NAME (setjmp)
- lhi %r3,1 /* second argument of one */
- j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
-END (setjmp)
-
- /* Binary compatibility entry point. */
-ENTRY(_setjmp)
- .weak C_SYMBOL_NAME (_setjmp)
- lhi %r3,0 /* second argument of zero */
- j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
-END (_setjmp)
-libc_hidden_def (_setjmp)
-
-ENTRY(__setjmp)
- lhi %r3,0 /* second argument of zero */
- j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
-END (__setjmp)
-
-ENTRY(__sigsetjmp)
-.Linternal_sigsetjmp:
-#ifdef PTR_MANGLE
- stm %r6,%r13,0(%r2) /* store registers in jmp_buf */
- lr %r4,%r14
- lr %r5,%r15
- PTR_MANGLE (%r4, %r1)
- PTR_MANGLE2 (%r5, %r1)
- stm %r4,%r5,32(%r2)
-#else
- stm %r6,%r15,0(%r2) /* store registers in jmp_buf */
-#endif
- std %f4,40(%r2)
- std %f6,48(%r2)
-#if defined NOT_IN_libc && defined IS_IN_rtld
- /* In ld.so we never save the signal mask. */
- lhi %r2,0
- br %r14
-#elif defined PIC
- /* We cannot use the PLT, because it requires that %r12 be set, but
- we can't save and restore our caller's value. Instead, we do an
- indirect jump through the GOT. */
- basr %r1,0
-.L0: al %r1,.L1 - .L0(0,%r1) /* get address of global offset table */
- /* get address of __sigjmp_save from got */
- l %r1,__sigjmp_save@GOT12(0,%r1)
- br %r1
-.L1: .long _GLOBAL_OFFSET_TABLE_ - .L0
-#else
- basr %r1,0
-.L0: l %r1,.L1-.L0(0,%r1) /* load address of __sigjmp_save */
- br %r1 /* tail-call __sigjmp_save */
-.L1: .long __sigjmp_save
-#endif
-END (__sigsetjmp)
diff --git a/sysdeps/s390/s390-32/setjmp.S b/sysdeps/s390/s390-32/setjmp.S
index 506772b95d..c54620871e 100644
--- a/sysdeps/s390/s390-32/setjmp.S
+++ b/sysdeps/s390/s390-32/setjmp.S
@@ -1,5 +1,5 @@
-/*
- Copyright (C) 2000, 2001, 2005 Free Software Foundation, Inc.
+/* setjmp for s390, ELF version.
+ Copyright (C) 2000, 2002, 2005 Free Software Foundation, Inc.
Contributed by Martin Schwidefsky (schwidefsky@de.ibm.com).
This file is part of the GNU C Library.
@@ -17,17 +17,34 @@
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
-#ifndef _ASM
-#define _ASM
-#endif
-
#include <sysdep.h>
+#define _ASM
+#define _SETJMP_H
#include <bits/setjmp.h>
-/* Save the current program position in ENV and return 0. */
-/* R2 = pointer to jmp_buf, R3 = savemask */
+ /* We include the BSD entry points here as well but we make
+ them weak. */
+ENTRY (setjmp)
+ .weak C_SYMBOL_NAME (setjmp)
+ lhi %r3,1 /* second argument of one */
+ j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
+END (setjmp)
+
+ /* Binary compatibility entry point. */
+ENTRY(_setjmp)
+ .weak C_SYMBOL_NAME (_setjmp)
+ lhi %r3,0 /* second argument of zero */
+ j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
+END (_setjmp)
+libc_hidden_def (_setjmp)
+
+ENTRY(__setjmp)
+ lhi %r3,0 /* second argument of zero */
+ j .Linternal_sigsetjmp /* branch relativ to __sigsetjmp */
+END (__setjmp)
ENTRY(__sigsetjmp)
+.Linternal_sigsetjmp:
#ifdef PTR_MANGLE
stm %r6,%r13,0(%r2) /* store registers in jmp_buf */
lr %r4,%r14
@@ -58,6 +75,6 @@ ENTRY(__sigsetjmp)
basr %r1,0
.L0: l %r1,.L1-.L0(0,%r1) /* load address of __sigjmp_save */
br %r1 /* tail-call __sigjmp_save */
-.L1: .long __sigjmp_save
+.L1: .long __sigjmp_save
#endif
END (__sigsetjmp)
diff --git a/sysdeps/s390/s390-32/elf/start.S b/sysdeps/s390/s390-32/start.S
index d7f3df7f66..d7f3df7f66 100644
--- a/sysdeps/s390/s390-32/elf/start.S
+++ b/sysdeps/s390/s390-32/start.S