[glibc] s390: Move files out of s390-64 folders
Stefan Liebler via Glibc-cvs <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2388cad009b773587e2dd9523d4db32085b18288 commit 2388cad009b773587e2dd9523d4db32085b18288 Author: Stefan Liebler <[email protected]> Date: Thu Apr 9 10:47:09 2026 +0200 s390: Move files out of s390-64 folders All the files in subfolders s390/s390-64 in sysdeps directory are moved up to the s390/ ones. If necessary the files were merged with the existing ones. sysdeps/s390/preconfigure.ac was updated to reflect the removal of s390-64 subdirectory. Reviewed-by: Adhemerval Zanella <[email protected]> Diff: --- sysdeps/s390/Implies | 1 + sysdeps/s390/Makefile | 89 +++++++++ sysdeps/s390/Versions | 3 + sysdeps/s390/{s390-64 => }/__longjmp.c | 2 +- sysdeps/s390/{s390-64 => }/add_n.S | 0 sysdeps/s390/{s390-64 => }/bsd-_setjmp.S | 0 sysdeps/s390/{s390-64 => }/bsd-setjmp.S | 0 sysdeps/s390/configure | 93 ++++++++- sysdeps/s390/configure.ac | 56 +++++- sysdeps/s390/{s390-64 => }/crti.S | 0 sysdeps/s390/{s390-64 => }/crtn.S | 0 sysdeps/s390/{s390-64 => }/dl-hwcap-check.h | 0 sysdeps/s390/{s390-64 => }/dl-hwcaps-subdirs.c | 0 sysdeps/s390/{s390-64 => }/dl-machine.h | 0 sysdeps/s390/{s390-64 => }/dl-trampoline.S | 0 sysdeps/s390/{s390-64 => }/dl-trampoline.h | 0 sysdeps/s390/preconfigure | 2 +- sysdeps/s390/preconfigure.ac | 2 +- sysdeps/s390/s390-64/Implies | 1 - sysdeps/s390/s390-64/Makefile | 92 --------- sysdeps/s390/s390-64/Versions | 5 - sysdeps/s390/s390-64/configure | 95 --------- sysdeps/s390/s390-64/configure.ac | 57 ------ sysdeps/s390/{s390-64 => }/s390x-mcount.S | 0 sysdeps/s390/{s390-64 => }/s390x-mcount.h | 0 sysdeps/s390/{s390-64 => }/setjmp.S | 0 sysdeps/s390/{s390-64 => }/stackguard-macros.h | 0 sysdeps/s390/{s390-64 => }/start.S | 0 sysdeps/s390/{s390-64 => }/strncpy-z900.S | 0 sysdeps/s390/{s390-64 => }/sub_n.S | 0 sysdeps/s390/{s390-64 => }/sysdep.h | 0 sysdeps/s390/{s390-64 => }/tst-audit.h | 0 sysdeps/s390/{s390-64 => }/tst-glibc-hwcaps.c | 0 sysdeps/unix/sysv/linux/s390/Implies | 1 + sysdeps/unix/sysv/linux/s390/Makefile | 10 + sysdeps/unix/sysv/linux/s390/Versions | 5 + .../linux/s390/{s390-64 => }/____longjmp_chk.c | 0 .../linux/s390/{s390-64 => }/__makecontext_ret.S | 0 .../sysv/linux/s390/{s390-64 => }/arch-syscall.h | 0 .../sysv/linux/s390/{s390-64 => }/c++-types.data | 0 sysdeps/unix/sysv/linux/s390/{s390-64 => }/clone.S | 0 .../unix/sysv/linux/s390/{s390-64 => }/clone3.S | 0 sysdeps/unix/sysv/linux/s390/configure | 13 ++ sysdeps/unix/sysv/linux/s390/configure.ac | 2 + sysdeps/unix/sysv/linux/s390/dl-cache.h | 23 +++ .../sysv/linux/s390/{s390-64 => }/getcontext.S | 0 .../unix/sysv/linux/s390/{s390-64 => }/ld.abilist | 0 .../s390/{s390-64 => }/libBrokenLocale.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libanl.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libc.abilist | 0 .../s390/{s390-64 => }/libc_malloc_debug.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libdl.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libm.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libnsl.abilist | 0 .../linux/s390/{s390-64 => }/libpthread.abilist | 0 .../linux/s390/{s390-64 => }/libresolv.abilist | 0 .../sysv/linux/s390/{s390-64 => }/librt.abilist | 0 .../linux/s390/{s390-64 => }/libthread_db.abilist | 0 .../sysv/linux/s390/{s390-64 => }/libutil.abilist | 0 .../sysv/linux/s390/{s390-64 => }/makecontext.c | 0 .../sysv/linux/s390/{s390-64 => }/pointer_guard.h | 0 sysdeps/unix/sysv/linux/s390/s390-64/Implies | 1 - sysdeps/unix/sysv/linux/s390/s390-64/Makefile | 15 -- sysdeps/unix/sysv/linux/s390/s390-64/Versions | 7 - sysdeps/unix/sysv/linux/s390/s390-64/configure | 16 -- sysdeps/unix/sysv/linux/s390/s390-64/configure.ac | 4 - sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h | 24 --- sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h | 178 ----------------- .../sysv/linux/s390/{s390-64 => }/setcontext.S | 0 .../sysv/linux/s390/{s390-64 => }/shlib-versions | 0 .../sysv/linux/s390/{s390-64 => }/single-thread.h | 0 .../sysv/linux/s390/{s390-64 => }/swapcontext.S | 0 .../unix/sysv/linux/s390/{s390-64 => }/syscall.S | 0 .../sysv/linux/s390/{s390-64 => }/syscall_cancel.S | 0 .../unix/sysv/linux/s390/{s390-64 => }/sysdep.S | 0 sysdeps/unix/sysv/linux/s390/sysdep.h | 218 ++++++++++++++++++--- .../s390/{s390-64 => }/timer_t_was_int_compat.h | 0 sysdeps/unix/sysv/linux/s390/{s390-64 => }/vfork.S | 0 78 files changed, 481 insertions(+), 534 deletions(-) diff --git a/sysdeps/s390/Implies b/sysdeps/s390/Implies index 1945b1f4bb..30800d54c3 100644 --- a/sysdeps/s390/Implies +++ b/sysdeps/s390/Implies @@ -1,3 +1,4 @@ +wordsize-64 ieee754/ldbl-128 ieee754/dbl-64 ieee754/flt-32 diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile index 985b4f25ee..29d11dfdab 100644 --- a/sysdeps/s390/Makefile +++ b/sysdeps/s390/Makefile @@ -1,3 +1,7 @@ +ifeq ($(subdir),gmon) +sysdep_routines += s390x-mcount +endif + ifeq ($(subdir),iconvdata) ISO-8859-1_CP037_Z900-routines := iso-8859-1_cp037_z900 ISO-8859-1_CP037_Z900-map := gconv.map @@ -43,6 +47,91 @@ $(modpfx)gconv-modules-s390.conf: ../sysdeps/s390/gconv-modules-s390.conf \ endif ifeq ($(subdir),elf) +CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused +CFLAGS-dl-load.c += -Wno-unused +CFLAGS-dl-reloc.c += -Wno-unused + +$(objpfx)tst-glibc-hwcaps: \ + $(objpfx)libmarkermod2-1.so \ + $(objpfx)libmarkermod3-1.so \ + $(objpfx)libmarkermod4-1.so \ + $(objpfx)libmarkermod5-1.so \ + $(objpfx)libmarkermod6-1.so +$(objpfx)tst-glibc-hwcaps.out: \ + $(objpfx)libmarkermod2.so \ + $(objpfx)glibc-hwcaps/z13/libmarkermod2.so \ + $(objpfx)libmarkermod3.so \ + $(objpfx)glibc-hwcaps/z13/libmarkermod3.so \ + $(objpfx)glibc-hwcaps/z14/libmarkermod3.so \ + $(objpfx)libmarkermod4.so \ + $(objpfx)glibc-hwcaps/z13/libmarkermod4.so \ + $(objpfx)glibc-hwcaps/z14/libmarkermod4.so \ + $(objpfx)glibc-hwcaps/z15/libmarkermod4.so \ + $(objpfx)libmarkermod5.so \ + $(objpfx)glibc-hwcaps/z13/libmarkermod5.so \ + $(objpfx)glibc-hwcaps/z14/libmarkermod5.so \ + $(objpfx)glibc-hwcaps/z15/libmarkermod5.so \ + $(objpfx)glibc-hwcaps/z16/libmarkermod5.so \ + $(objpfx)libmarkermod6.so \ + $(objpfx)glibc-hwcaps/z13/libmarkermod6.so \ + $(objpfx)glibc-hwcaps/z14/libmarkermod6.so \ + $(objpfx)glibc-hwcaps/z15/libmarkermod6.so \ + $(objpfx)glibc-hwcaps/z16/libmarkermod6.so \ + $(objpfx)glibc-hwcaps/z17/libmarkermod6.so + + +$(objpfx)glibc-hwcaps/z13/libmarkermod2.so: $(objpfx)libmarkermod2-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z13/libmarkermod3.so: $(objpfx)libmarkermod3-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z14/libmarkermod3.so: $(objpfx)libmarkermod3-3.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z13/libmarkermod4.so: $(objpfx)libmarkermod4-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z14/libmarkermod4.so: $(objpfx)libmarkermod4-3.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z15/libmarkermod4.so: $(objpfx)libmarkermod4-4.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z13/libmarkermod5.so: $(objpfx)libmarkermod5-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z14/libmarkermod5.so: $(objpfx)libmarkermod5-3.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z15/libmarkermod5.so: $(objpfx)libmarkermod5-4.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z16/libmarkermod5.so: $(objpfx)libmarkermod5-5.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z13/libmarkermod6.so: $(objpfx)libmarkermod6-2.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z14/libmarkermod6.so: $(objpfx)libmarkermod6-3.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z15/libmarkermod6.so: $(objpfx)libmarkermod6-4.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z16/libmarkermod6.so: $(objpfx)libmarkermod6-5.so + $(make-target-directory) + cp $< $@ +$(objpfx)glibc-hwcaps/z17/libmarkermod6.so: $(objpfx)libmarkermod6-6.so + $(make-target-directory) + cp $< $@ + + +ifeq (no,$(build-hardcoded-path-in-tests)) +# This is an ld.so.cache test, and RPATH/RUNPATH in the executable +# interferes with its test objectives. +tests-container += tst-glibc-hwcaps-cache +endif ifeq ($(build-shared),yes) tests += tst-dl-runtime-resolve-noaudit tst-dl-runtime-resolve-audit \ diff --git a/sysdeps/s390/Versions b/sysdeps/s390/Versions index 8417623353..d80d691817 100644 --- a/sysdeps/s390/Versions +++ b/sysdeps/s390/Versions @@ -3,6 +3,9 @@ libc { setjmp; _setjmp; __sigsetjmp; longjmp; _longjmp; siglongjmp; } + GLIBC_2.29 { + __fentry__; + } } ld { diff --git a/sysdeps/s390/s390-64/__longjmp.c b/sysdeps/s390/__longjmp.c similarity index 97% rename from sysdeps/s390/s390-64/__longjmp.c rename to sysdeps/s390/__longjmp.c index fabd5e0a4e..7c207e44c6 100644 --- a/sysdeps/s390/s390-64/__longjmp.c +++ b/sysdeps/s390/__longjmp.c @@ -24,7 +24,7 @@ #include <unistd.h> #include <stap-probe.h> -/* See sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h. */ +/* See sysdeps/unix/sysv/linux/s390/pointer_guard.h. */ #if IS_IN (rtld) # undef PTR_DEMANGLE #endif diff --git a/sysdeps/s390/s390-64/add_n.S b/sysdeps/s390/add_n.S similarity index 100% rename from sysdeps/s390/s390-64/add_n.S rename to sysdeps/s390/add_n.S diff --git a/sysdeps/s390/s390-64/bsd-_setjmp.S b/sysdeps/s390/bsd-_setjmp.S similarity index 100% rename from sysdeps/s390/s390-64/bsd-_setjmp.S rename to sysdeps/s390/bsd-_setjmp.S diff --git a/sysdeps/s390/s390-64/bsd-setjmp.S b/sysdeps/s390/bsd-setjmp.S similarity index 100% rename from sysdeps/s390/s390-64/bsd-setjmp.S rename to sysdeps/s390/bsd-setjmp.S diff --git a/sysdeps/s390/configure b/sysdeps/s390/configure index f4ec662610..e21a5ba3a7 100644 --- a/sysdeps/s390/configure +++ b/sysdeps/s390/configure @@ -269,6 +269,95 @@ then fi -test -n "$critic_missing" && as_fn_error $? " -*** $critic_missing" "$LINENO" 5 +# Minimal checking for static PIE support in ld. +# Compare to ld testcase/bugzilla: +# <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for s390-specific static PIE requirements" >&5 +printf %s "checking for s390-specific static PIE requirements... " >&6; } +if { as_var=\ +libc_cv_s390x_staticpie_req_runtime; eval test \${$as_var+y}; } +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat > conftest1.c <<EOF +__thread int * foo; + +void +bar (void) +{ + *foo = 1; +} + +void bar2 (void); +void* bar2_ifunc (void) __asm__ ("bar2"); +__asm__ (".type bar2, %gnu_indirect_function"); +void* bar2_ifunc (void) { return 0; } +EOF + cat > conftest2.c <<EOF +extern __thread int *foo; +extern void bar (void); +extern void bar2 (void); +static int x; + +int +main () +{ + foo = &x; + bar2 (); + return 0; +} +EOF + libc_cv_s390x_staticpie_req_runtime=no + # Check if the static linker does not generate dynamic TLS relocs in PIE + # (binutils PR ld/22263), if it accepts --no-dynamic-linker + # (by using -static-pie), and if it adds a DT_JMPREL pointing to .rela.iplt + # with static pie. + if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest1.c -o conftest1.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } \ + && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest2.c -o conftest2.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } \ + && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static-pie -nostartfiles -nostdlib -fPIE -o conftest conftest1.o conftest2.o' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } \ + && { ac_try='! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } \ + && { ac_try='LC_ALL=C $READELF -Wd conftest | grep JMPREL >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } + then + libc_cv_s390x_staticpie_req_runtime=yes + fi + rm -rf conftest.* ;; +esac +fi +eval ac_res=\$\ +libc_cv_s390x_staticpie_req_runtime + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } + +if test $libc_cv_s390x_staticpie_req_runtime = yes; then + # Some kernels might fail with /proc/sys/kernel/randomize_va_space set to 0 + # due not enough space for a brk call. However, there is no reliable way to + # test it. + printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h + +fi diff --git a/sysdeps/s390/configure.ac b/sysdeps/s390/configure.ac index 82e1a4445f..3c384f9670 100644 --- a/sysdeps/s390/configure.ac +++ b/sysdeps/s390/configure.ac @@ -133,5 +133,57 @@ then AC_DEFINE(HAVE_S390_MIN_ARCH13_ZARCH_ASM_SUPPORT) fi -test -n "$critic_missing" && AC_MSG_ERROR([ -*** $critic_missing]) +# Minimal checking for static PIE support in ld. +# Compare to ld testcase/bugzilla: +# <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd +AC_CACHE_CHECK([for s390-specific static PIE requirements], \ +[libc_cv_s390x_staticpie_req_runtime], [dnl + cat > conftest1.c <<EOF +__thread int * foo; + +void +bar (void) +{ + *foo = 1; +} + +void bar2 (void); +void* bar2_ifunc (void) __asm__ ("bar2"); +__asm__ (".type bar2, %gnu_indirect_function"); +void* bar2_ifunc (void) { return 0; } +EOF + cat > conftest2.c <<EOF +extern __thread int *foo; +extern void bar (void); +extern void bar2 (void); +static int x; + +int +main () +{ + foo = &x; + bar2 (); + return 0; +} +EOF + libc_cv_s390x_staticpie_req_runtime=no + # Check if the static linker does not generate dynamic TLS relocs in PIE + # (binutils PR ld/22263), if it accepts --no-dynamic-linker + # (by using -static-pie), and if it adds a DT_JMPREL pointing to .rela.iplt + # with static pie. + if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest1.c -o conftest1.o]) \ + && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest2.c -o conftest2.o]) \ + && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static-pie -nostartfiles -nostdlib -fPIE -o conftest conftest1.o conftest2.o]) \ + && AC_TRY_COMMAND([! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF] >&AS_MESSAGE_LOG_FD) \ + && AC_TRY_COMMAND([LC_ALL=C $READELF -Wd conftest | grep JMPREL >&AS_MESSAGE_LOG_FD]) + then + libc_cv_s390x_staticpie_req_runtime=yes + fi + rm -rf conftest.*]) + +if test $libc_cv_s390x_staticpie_req_runtime = yes; then + # Some kernels might fail with /proc/sys/kernel/randomize_va_space set to 0 + # due not enough space for a brk call. However, there is no reliable way to + # test it. + AC_DEFINE(SUPPORT_STATIC_PIE) +fi diff --git a/sysdeps/s390/s390-64/crti.S b/sysdeps/s390/crti.S similarity index 100% rename from sysdeps/s390/s390-64/crti.S rename to sysdeps/s390/crti.S diff --git a/sysdeps/s390/s390-64/crtn.S b/sysdeps/s390/crtn.S similarity index 100% rename from sysdeps/s390/s390-64/crtn.S rename to sysdeps/s390/crtn.S diff --git a/sysdeps/s390/s390-64/dl-hwcap-check.h b/sysdeps/s390/dl-hwcap-check.h similarity index 100% rename from sysdeps/s390/s390-64/dl-hwcap-check.h rename to sysdeps/s390/dl-hwcap-check.h diff --git a/sysdeps/s390/s390-64/dl-hwcaps-subdirs.c b/sysdeps/s390/dl-hwcaps-subdirs.c similarity index 100% rename from sysdeps/s390/s390-64/dl-hwcaps-subdirs.c rename to sysdeps/s390/dl-hwcaps-subdirs.c diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/dl-machine.h similarity index 100% rename from sysdeps/s390/s390-64/dl-machine.h rename to sysdeps/s390/dl-machine.h diff --git a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/dl-trampoline.S similarity index 100% rename from sysdeps/s390/s390-64/dl-trampoline.S rename to sysdeps/s390/dl-trampoline.S diff --git a/sysdeps/s390/s390-64/dl-trampoline.h b/sysdeps/s390/dl-trampoline.h similarity index 100% rename from sysdeps/s390/s390-64/dl-trampoline.h rename to sysdeps/s390/dl-trampoline.h diff --git a/sysdeps/s390/preconfigure b/sysdeps/s390/preconfigure index 0536f3eb80..39843cb365 100644 --- a/sysdeps/s390/preconfigure +++ b/sysdeps/s390/preconfigure @@ -4,7 +4,7 @@ case "$machine" in s390x) base_machine=s390 - machine=s390/s390-64 + machine=s390 ;; s390) as_fn_error $? "s390-32 is not supported anymore." "$LINENO" 5 diff --git a/sysdeps/s390/preconfigure.ac b/sysdeps/s390/preconfigure.ac index aee9e4e0cc..b75ad3be00 100644 --- a/sysdeps/s390/preconfigure.ac +++ b/sysdeps/s390/preconfigure.ac @@ -4,7 +4,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. case "$machine" in s390x) base_machine=s390 - machine=s390/s390-64 + machine=s390 ;; s390) AC_MSG_ERROR(s390-32 is not supported anymore.) diff --git a/sysdeps/s390/s390-64/Implies b/sysdeps/s390/s390-64/Implies deleted file mode 100644 index a8cae95f9d..0000000000 --- a/sysdeps/s390/s390-64/Implies +++ /dev/null @@ -1 +0,0 @@ -wordsize-64 diff --git a/sysdeps/s390/s390-64/Makefile b/sysdeps/s390/s390-64/Makefile deleted file mode 100644 index 991025cd2a..0000000000 --- a/sysdeps/s390/s390-64/Makefile +++ /dev/null @@ -1,92 +0,0 @@ -ifeq ($(subdir),gmon) -sysdep_routines += s390x-mcount -endif - -ifeq ($(subdir),elf) -CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused -CFLAGS-dl-load.c += -Wno-unused -CFLAGS-dl-reloc.c += -Wno-unused - -$(objpfx)tst-glibc-hwcaps: \ - $(objpfx)libmarkermod2-1.so \ - $(objpfx)libmarkermod3-1.so \ - $(objpfx)libmarkermod4-1.so \ - $(objpfx)libmarkermod5-1.so \ - $(objpfx)libmarkermod6-1.so -$(objpfx)tst-glibc-hwcaps.out: \ - $(objpfx)libmarkermod2.so \ - $(objpfx)glibc-hwcaps/z13/libmarkermod2.so \ - $(objpfx)libmarkermod3.so \ - $(objpfx)glibc-hwcaps/z13/libmarkermod3.so \ - $(objpfx)glibc-hwcaps/z14/libmarkermod3.so \ - $(objpfx)libmarkermod4.so \ - $(objpfx)glibc-hwcaps/z13/libmarkermod4.so \ - $(objpfx)glibc-hwcaps/z14/libmarkermod4.so \ - $(objpfx)glibc-hwcaps/z15/libmarkermod4.so \ - $(objpfx)libmarkermod5.so \ - $(objpfx)glibc-hwcaps/z13/libmarkermod5.so \ - $(objpfx)glibc-hwcaps/z14/libmarkermod5.so \ - $(objpfx)glibc-hwcaps/z15/libmarkermod5.so \ - $(objpfx)glibc-hwcaps/z16/libmarkermod5.so \ - $(objpfx)libmarkermod6.so \ - $(objpfx)glibc-hwcaps/z13/libmarkermod6.so \ - $(objpfx)glibc-hwcaps/z14/libmarkermod6.so \ - $(objpfx)glibc-hwcaps/z15/libmarkermod6.so \ - $(objpfx)glibc-hwcaps/z16/libmarkermod6.so \ - $(objpfx)glibc-hwcaps/z17/libmarkermod6.so - - -$(objpfx)glibc-hwcaps/z13/libmarkermod2.so: $(objpfx)libmarkermod2-2.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z13/libmarkermod3.so: $(objpfx)libmarkermod3-2.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z14/libmarkermod3.so: $(objpfx)libmarkermod3-3.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z13/libmarkermod4.so: $(objpfx)libmarkermod4-2.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z14/libmarkermod4.so: $(objpfx)libmarkermod4-3.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z15/libmarkermod4.so: $(objpfx)libmarkermod4-4.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z13/libmarkermod5.so: $(objpfx)libmarkermod5-2.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z14/libmarkermod5.so: $(objpfx)libmarkermod5-3.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z15/libmarkermod5.so: $(objpfx)libmarkermod5-4.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z16/libmarkermod5.so: $(objpfx)libmarkermod5-5.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z13/libmarkermod6.so: $(objpfx)libmarkermod6-2.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z14/libmarkermod6.so: $(objpfx)libmarkermod6-3.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z15/libmarkermod6.so: $(objpfx)libmarkermod6-4.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z16/libmarkermod6.so: $(objpfx)libmarkermod6-5.so - $(make-target-directory) - cp $< $@ -$(objpfx)glibc-hwcaps/z17/libmarkermod6.so: $(objpfx)libmarkermod6-6.so - $(make-target-directory) - cp $< $@ - - -ifeq (no,$(build-hardcoded-path-in-tests)) -# This is an ld.so.cache test, and RPATH/RUNPATH in the executable -# interferes with its test objectives. -tests-container += tst-glibc-hwcaps-cache -endif - -endif # $(subdir) == elf diff --git a/sysdeps/s390/s390-64/Versions b/sysdeps/s390/s390-64/Versions deleted file mode 100644 index ec1d68313d..0000000000 --- a/sysdeps/s390/s390-64/Versions +++ /dev/null @@ -1,5 +0,0 @@ -libc { - GLIBC_2.29 { - __fentry__; - } -} diff --git a/sysdeps/s390/s390-64/configure b/sysdeps/s390/s390-64/configure deleted file mode 100644 index 9ea6940c85..0000000000 --- a/sysdeps/s390/s390-64/configure +++ /dev/null @@ -1,95 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/s390/s390-64. - -# Minimal checking for static PIE support in ld. -# Compare to ld testcase/bugzilla: -# <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for s390-specific static PIE requirements" >&5 -printf %s "checking for s390-specific static PIE requirements... " >&6; } -if { as_var=\ -libc_cv_s390x_staticpie_req_runtime; eval test \${$as_var+y}; } -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat > conftest1.c <<EOF -__thread int * foo; - -void -bar (void) -{ - *foo = 1; -} - -void bar2 (void); -void* bar2_ifunc (void) __asm__ ("bar2"); -__asm__ (".type bar2, %gnu_indirect_function"); -void* bar2_ifunc (void) { return 0; } -EOF - cat > conftest2.c <<EOF -extern __thread int *foo; -extern void bar (void); -extern void bar2 (void); -static int x; - -int -main () -{ - foo = &x; - bar2 (); - return 0; -} -EOF - libc_cv_s390x_staticpie_req_runtime=no - # Check if the static linker does not generate dynamic TLS relocs in PIE - # (binutils PR ld/22263), if it accepts --no-dynamic-linker - # (by using -static-pie), and if it adds a DT_JMPREL pointing to .rela.iplt - # with static pie. - if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest1.c -o conftest1.o' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } \ - && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest2.c -o conftest2.o' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } \ - && { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static-pie -nostartfiles -nostdlib -fPIE -o conftest conftest1.o conftest2.o' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } \ - && { ac_try='! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } \ - && { ac_try='LC_ALL=C $READELF -Wd conftest | grep JMPREL >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 - (eval $ac_try) 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } - then - libc_cv_s390x_staticpie_req_runtime=yes - fi - rm -rf conftest.* ;; -esac -fi -eval ac_res=\$\ -libc_cv_s390x_staticpie_req_runtime - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - -if test $libc_cv_s390x_staticpie_req_runtime = yes; then - # Some kernels might fail with /proc/sys/kernel/randomize_va_space set to 0 - # due not enough space for a brk call. However, there is no reliable way to - # test it. - printf "%s\n" "#define SUPPORT_STATIC_PIE 1" >>confdefs.h - -fi - diff --git a/sysdeps/s390/s390-64/configure.ac b/sysdeps/s390/s390-64/configure.ac deleted file mode 100644 index aaf71eabb1..0000000000 --- a/sysdeps/s390/s390-64/configure.ac +++ /dev/null @@ -1,57 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/s390/s390-64. - -# Minimal checking for static PIE support in ld. -# Compare to ld testcase/bugzilla: -# <binutils-source>/ld/testsuite/ld-elf/pr22263-1.rd -AC_CACHE_CHECK([for s390-specific static PIE requirements], \ -[libc_cv_s390x_staticpie_req_runtime], [dnl - cat > conftest1.c <<EOF -__thread int * foo; - -void -bar (void) -{ - *foo = 1; -} - -void bar2 (void); -void* bar2_ifunc (void) __asm__ ("bar2"); -__asm__ (".type bar2, %gnu_indirect_function"); -void* bar2_ifunc (void) { return 0; } -EOF - cat > conftest2.c <<EOF -extern __thread int *foo; -extern void bar (void); -extern void bar2 (void); -static int x; - -int -main () -{ - foo = &x; - bar2 (); - return 0; -} -EOF - libc_cv_s390x_staticpie_req_runtime=no - # Check if the static linker does not generate dynamic TLS relocs in PIE - # (binutils PR ld/22263), if it accepts --no-dynamic-linker - # (by using -static-pie), and if it adds a DT_JMPREL pointing to .rela.iplt - # with static pie. - if AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest1.c -o conftest1.o]) \ - && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -fPIE -c conftest2.c -o conftest2.o]) \ - && AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -static-pie -nostartfiles -nostdlib -fPIE -o conftest conftest1.o conftest2.o]) \ - && AC_TRY_COMMAND([! LC_ALL=C $READELF -Wr conftest | grep R_390_TLS_TPOFF] >&AS_MESSAGE_LOG_FD) \ - && AC_TRY_COMMAND([LC_ALL=C $READELF -Wd conftest | grep JMPREL >&AS_MESSAGE_LOG_FD]) - then - libc_cv_s390x_staticpie_req_runtime=yes - fi - rm -rf conftest.*]) - -if test $libc_cv_s390x_staticpie_req_runtime = yes; then - # Some kernels might fail with /proc/sys/kernel/randomize_va_space set to 0 - # due not enough space for a brk call. However, there is no reliable way to - # test it. - AC_DEFINE(SUPPORT_STATIC_PIE) -fi diff --git a/sysdeps/s390/s390-64/s390x-mcount.S b/sysdeps/s390/s390x-mcount.S similarity index 100% rename from sysdeps/s390/s390-64/s390x-mcount.S rename to sysdeps/s390/s390x-mcount.S diff --git a/sysdeps/s390/s390-64/s390x-mcount.h b/sysdeps/s390/s390x-mcount.h similarity index 100% rename from sysdeps/s390/s390-64/s390x-mcount.h rename to sysdeps/s390/s390x-mcount.h diff --git a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/setjmp.S similarity index 100% rename from sysdeps/s390/s390-64/setjmp.S rename to sysdeps/s390/setjmp.S diff --git a/sysdeps/s390/s390-64/stackguard-macros.h b/sysdeps/s390/stackguard-macros.h similarity index 100% rename from sysdeps/s390/s390-64/stackguard-macros.h rename to sysdeps/s390/stackguard-macros.h diff --git a/sysdeps/s390/s390-64/start.S b/sysdeps/s390/start.S similarity index 100% rename from sysdeps/s390/s390-64/start.S rename to sysdeps/s390/start.S diff --git a/sysdeps/s390/s390-64/strncpy-z900.S b/sysdeps/s390/strncpy-z900.S similarity index 100% rename from sysdeps/s390/s390-64/strncpy-z900.S rename to sysdeps/s390/strncpy-z900.S diff --git a/sysdeps/s390/s390-64/sub_n.S b/sysdeps/s390/sub_n.S similarity index 100% rename from sysdeps/s390/s390-64/sub_n.S rename to sysdeps/s390/sub_n.S diff --git a/sysdeps/s390/s390-64/sysdep.h b/sysdeps/s390/sysdep.h similarity index 100% rename from sysdeps/s390/s390-64/sysdep.h rename to sysdeps/s390/sysdep.h diff --git a/sysdeps/s390/s390-64/tst-audit.h b/sysdeps/s390/tst-audit.h similarity index 100% rename from sysdeps/s390/s390-64/tst-audit.h rename to sysdeps/s390/tst-audit.h diff --git a/sysdeps/s390/s390-64/tst-glibc-hwcaps.c b/sysdeps/s390/tst-glibc-hwcaps.c similarity index 100% rename from sysdeps/s390/s390-64/tst-glibc-hwcaps.c rename to sysdeps/s390/tst-glibc-hwcaps.c diff --git a/sysdeps/unix/sysv/linux/s390/Implies b/sysdeps/unix/sysv/linux/s390/Implies index e6e51fa5a7..615f507831 100644 --- a/sysdeps/unix/sysv/linux/s390/Implies +++ b/sysdeps/unix/sysv/linux/s390/Implies @@ -1,4 +1,5 @@ s390/nptl +unix/sysv/linux/wordsize-64 # These supply the ABI compatibility for when long double was double. ieee754/ldbl-64-128 diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile index 218aff1aee..e9ef5c51ac 100644 --- a/sysdeps/unix/sysv/linux/s390/Makefile +++ b/sysdeps/unix/sysv/linux/s390/Makefile @@ -1,3 +1,11 @@ +ifeq ($(subdir),elf) +ifeq (yes,$(build-shared)) +# This is needed to support g++ v2 and v3. +sysdep_routines += framestate +shared-only-routines += framestate +endif +endif + ifeq ($(subdir),rt) librt-routines += rt-sysdep librt-shared-only-routines += rt-sysdep @@ -5,8 +13,10 @@ endif ifeq ($(subdir),stdlib) gen-as-const-headers += ucontext_i.sym +sysdep_routines += __makecontext_ret endif ifeq ($(subdir),misc) tests += tst-ptrace-singleblock +sysdep_headers += sys/elf.h endif diff --git a/sysdeps/unix/sysv/linux/s390/Versions b/sysdeps/unix/sysv/linux/s390/Versions index 548397fcff..d4b6a01950 100644 --- a/sysdeps/unix/sysv/linux/s390/Versions +++ b/sysdeps/unix/sysv/linux/s390/Versions @@ -1,4 +1,9 @@ libc { + GLIBC_2.2 { + # Exception handling support functions from libgcc + __register_frame; __register_frame_table; __deregister_frame; + __frame_state_for; __register_frame_info_table; + } GLIBC_2.19 { __longjmp_chk; getcontext; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c b/sysdeps/unix/sysv/linux/s390/____longjmp_chk.c similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/____longjmp_chk.c rename to sysdeps/unix/sysv/linux/s390/____longjmp_chk.c diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S b/sysdeps/unix/sysv/linux/s390/__makecontext_ret.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/__makecontext_ret.S rename to sysdeps/unix/sysv/linux/s390/__makecontext_ret.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/arch-syscall.h similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h rename to sysdeps/unix/sysv/linux/s390/arch-syscall.h diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/c++-types.data b/sysdeps/unix/sysv/linux/s390/c++-types.data similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/c++-types.data rename to sysdeps/unix/sysv/linux/s390/c++-types.data diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/clone.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/clone.S rename to sysdeps/unix/sysv/linux/s390/clone.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone3.S b/sysdeps/unix/sysv/linux/s390/clone3.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/clone3.S rename to sysdeps/unix/sysv/linux/s390/clone3.S diff --git a/sysdeps/unix/sysv/linux/s390/configure b/sysdeps/unix/sysv/linux/s390/configure index d8a14434c5..9b3a1c01d2 100644 --- a/sysdeps/unix/sysv/linux/s390/configure +++ b/sysdeps/unix/sysv/linux/s390/configure @@ -4,3 +4,16 @@ libc_cv_gcc_unwind_find_fde=yes ldd_rewrite_script=sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed +test -n "$libc_cv_slibdir" || +case "$prefix" in +/usr | /usr/) + libc_cv_slibdir='/lib64' + libc_cv_rtlddir='/lib' + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/lib64'; + # Locale data can be shared between 32-bit and 64-bit libraries. + libc_cv_complocaledir='${exec_prefix}/lib/locale' + fi + ;; +esac + diff --git a/sysdeps/unix/sysv/linux/s390/configure.ac b/sysdeps/unix/sysv/linux/s390/configure.ac index 978450c94b..28e1caff2f 100644 --- a/sysdeps/unix/sysv/linux/s390/configure.ac +++ b/sysdeps/unix/sysv/linux/s390/configure.ac @@ -3,3 +3,5 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. libc_cv_gcc_unwind_find_fde=yes ldd_rewrite_script=sysdeps/unix/sysv/linux/s390/ldd-rewrite.sed + +LIBC_SLIBDIR_RTLDDIR([lib64], [lib]) diff --git a/sysdeps/unix/sysv/linux/s390/dl-cache.h b/sysdeps/unix/sysv/linux/s390/dl-cache.h index 766bba4265..df1ef9155c 100644 --- a/sysdeps/unix/sysv/linux/s390/dl-cache.h +++ b/sysdeps/unix/sysv/linux/s390/dl-cache.h @@ -1 +1,24 @@ +/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. + Copyright (C) 2001-2026 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 + 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 + <https://www.gnu.org/licenses/>. */ + +#define _DL_CACHE_DEFAULT_ID 0x403 + +#define _dl_cache_check_flags(flags) \ + ((flags) == _DL_CACHE_DEFAULT_ID) + #include <sysdeps/unix/sysv/linux/sparc/dl-cache.h> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S b/sysdeps/unix/sysv/linux/s390/getcontext.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S rename to sysdeps/unix/sysv/linux/s390/getcontext.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist b/sysdeps/unix/sysv/linux/s390/ld.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist rename to sysdeps/unix/sysv/linux/s390/ld.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist b/sysdeps/unix/sysv/linux/s390/libBrokenLocale.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist rename to sysdeps/unix/sysv/linux/s390/libBrokenLocale.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libanl.abilist b/sysdeps/unix/sysv/linux/s390/libanl.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libanl.abilist rename to sysdeps/unix/sysv/linux/s390/libanl.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/libc.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist rename to sysdeps/unix/sysv/linux/s390/libc.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist b/sysdeps/unix/sysv/linux/s390/libc_malloc_debug.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libc_malloc_debug.abilist rename to sysdeps/unix/sysv/linux/s390/libc_malloc_debug.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist b/sysdeps/unix/sysv/linux/s390/libdl.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist rename to sysdeps/unix/sysv/linux/s390/libdl.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist b/sysdeps/unix/sysv/linux/s390/libm.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist rename to sysdeps/unix/sysv/linux/s390/libm.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist b/sysdeps/unix/sysv/linux/s390/libnsl.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist rename to sysdeps/unix/sysv/linux/s390/libnsl.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist b/sysdeps/unix/sysv/linux/s390/libpthread.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist rename to sysdeps/unix/sysv/linux/s390/libpthread.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist b/sysdeps/unix/sysv/linux/s390/libresolv.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist rename to sysdeps/unix/sysv/linux/s390/libresolv.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist b/sysdeps/unix/sysv/linux/s390/librt.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist rename to sysdeps/unix/sysv/linux/s390/librt.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist b/sysdeps/unix/sysv/linux/s390/libthread_db.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist rename to sysdeps/unix/sysv/linux/s390/libthread_db.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist b/sysdeps/unix/sysv/linux/s390/libutil.abilist similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist rename to sysdeps/unix/sysv/linux/s390/libutil.abilist diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c b/sysdeps/unix/sysv/linux/s390/makecontext.c similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/makecontext.c rename to sysdeps/unix/sysv/linux/s390/makecontext.c diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h b/sysdeps/unix/sysv/linux/s390/pointer_guard.h similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/pointer_guard.h rename to sysdeps/unix/sysv/linux/s390/pointer_guard.h diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Implies b/sysdeps/unix/sysv/linux/s390/s390-64/Implies deleted file mode 100644 index 8d91c80097..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/Implies +++ /dev/null @@ -1 +0,0 @@ -unix/sysv/linux/wordsize-64 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Makefile b/sysdeps/unix/sysv/linux/s390/s390-64/Makefile deleted file mode 100644 index 0c338cba36..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -ifeq ($(subdir),misc) -sysdep_headers += sys/elf.h -endif - -ifeq ($(subdir),elf) -ifeq (yes,$(build-shared)) -# This is needed to support g++ v2 and v3. -sysdep_routines += framestate -shared-only-routines += framestate -endif -endif - -ifeq ($(subdir),stdlib) -sysdep_routines += __makecontext_ret -endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions deleted file mode 100644 index 83092db48e..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions +++ /dev/null @@ -1,7 +0,0 @@ -libc { - GLIBC_2.2 { - # Exception handling support functions from libgcc - __register_frame; __register_frame_table; __deregister_frame; - __frame_state_for; __register_frame_info_table; - } -} diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/configure b/sysdeps/unix/sysv/linux/s390/s390-64/configure deleted file mode 100644 index 5490bc669e..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/configure +++ /dev/null @@ -1,16 +0,0 @@ -# This file is generated from configure.ac by Autoconf. DO NOT EDIT! - # Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64. - -test -n "$libc_cv_slibdir" || -case "$prefix" in -/usr | /usr/) - libc_cv_slibdir='/lib64' - libc_cv_rtlddir='/lib' - if test "$libdir" = '${exec_prefix}/lib'; then - libdir='${exec_prefix}/lib64'; - # Locale data can be shared between 32-bit and 64-bit libraries. - libc_cv_complocaledir='${exec_prefix}/lib/locale' - fi - ;; -esac - diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac b/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac deleted file mode 100644 index 8c75888b62..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/configure.ac +++ /dev/null @@ -1,4 +0,0 @@ -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -# Local configure fragment for sysdeps/unix/sysv/linux/s390/s390-64. - -LIBC_SLIBDIR_RTLDDIR([lib64], [lib]) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h b/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h deleted file mode 100644 index 0a334a9d9a..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/dl-cache.h +++ /dev/null @@ -1,24 +0,0 @@ -/* Support for reading /etc/ld.so.cache files written by Linux ldconfig. - Copyright (C) 2001-2026 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 - 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 - <https://www.gnu.org/licenses/>. */ - -#define _DL_CACHE_DEFAULT_ID 0x403 - -#define _dl_cache_check_flags(flags) \ - ((flags) == _DL_CACHE_DEFAULT_ID) - -#include_next <dl-cache.h> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h b/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h deleted file mode 100644 index 9c9e2a271f..0000000000 --- a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h +++ /dev/null @@ -1,178 +0,0 @@ -/* Assembler macros for 64 bit S/390. - Copyright (C) 2001-2026 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 - 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef _LINUX_S390_SYSDEP_H -#define _LINUX_S390_SYSDEP_H - -#include <sysdeps/s390/s390-64/sysdep.h> -#include <sysdeps/unix/sysdep.h> -#include <sysdeps/unix/sysv/linux/s390/sysdep.h> -#include <sysdeps/unix/sysv/linux/sysdep.h> -#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ -#include <tls.h> - -/* For Linux we can use the system call table in the header file - /usr/include/asm/unistd.h - of the kernel. But these symbols do not follow the SYS_* syntax - so we have to redefine the `SYS_ify' macro here. */ -/* In newer 2.1 kernels __NR_syscall is missing so we define it here. */ -#define __NR_syscall 0 - -#undef SYS_ify -#define SYS_ify(syscall_name) __NR_##syscall_name - -#ifdef __ASSEMBLER__ - -/* Linux uses a negative return value to indicate syscall errors, unlike - most Unices, which use the condition codes' carry flag. - - Since version 2.1 the return value of a system call might be negative - even if the call succeeded. E.g., the `lseek' system call might return - a large offset. Therefore we must not anymore test for < 0, but test - for a real error by making sure the value in gpr2 is a real error - number. Linus said he will make sure that no syscall returns a value - in -1 .. -4095 as a valid result so we can safely test with -4095. */ - -#undef PSEUDO -#define PSEUDO(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args); \ - lghi %r4,-4095 ; \ - clgr %r2,%r4 ; \ - jgnl SYSCALL_ERROR_LABEL - -#undef PSEUDO_END -#define PSEUDO_END(name) \ - SYSCALL_ERROR_HANDLER; \ - END (name) - -#undef PSEUDO_NOERRNO -#define PSEUDO_NOERRNO(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args) - -#undef PSEUDO_END_NOERRNO -#define PSEUDO_END_NOERRNO(name) \ - SYSCALL_ERROR_HANDLER; \ - END (name) - -#undef PSEUDO_ERRVAL -#define PSEUDO_ERRVAL(name, syscall_name, args) \ - .text; \ - ENTRY (name) \ - DO_CALL (syscall_name, args); \ - lcgr %r2,%r2 - -#undef PSEUDO_END_ERRVAL -#define PSEUDO_END_ERRVAL(name) \ - SYSCALL_ERROR_HANDLER; \ - END (name) - -#undef SYSCALL_ERROR_LABEL -#ifndef PIC -# undef SYSCALL_ERROR_LABEL -# define SYSCALL_ERROR_LABEL syscall_error -# define SYSCALL_ERROR_HANDLER -#else -# if RTLD_PRIVATE_ERRNO -# undef SYSCALL_ERROR_LABEL -# define SYSCALL_ERROR_LABEL 0f -# define SYSCALL_ERROR_HANDLER \ -0: larl %r1,rtld_errno; \ - lcr %r2,%r2; \ - st %r2,0(%r1); \ - lghi %r2,-1; \ - br %r14 -# elif defined _LIBC_REENTRANT -# if IS_IN (libc) -# define SYSCALL_ERROR_ERRNO __libc_errno -# else -# define SYSCALL_ERROR_ERRNO errno -# endif -# undef SYSCALL_ERROR_LABEL -# define SYSCALL_ERROR_LABEL 0f -# define SYSCALL_ERROR_HANDLER \ -0: lcr %r0,%r2; \ - larl %r1,SYSCALL_ERROR_ERRNO@indntpoff; \ - lg %r1,0(%r1); \ - ear %r2,%a0; \ - sllg %r2,%r2,32; \ - ear %r2,%a1; \ - st %r0,0(%r1,%r2); \ - lghi %r2,-1; \ - br %r14 -# else -# undef SYSCALL_ERROR_LABEL -# define SYSCALL_ERROR_LABEL 0f -# define SYSCALL_ERROR_HANDLER \ -0: larl %r1,_GLOBAL_OFFSET_TABLE_; \ - lg %r1,errno@GOT(%r1); \ - lcr %r2,%r2; \ - st %r2,0(%r1); \ - lghi %r2,-1; \ - br %r14 -# endif /* _LIBC_REENTRANT */ -#endif /* PIC */ - -/* Linux takes system call arguments in registers: - - syscall number 1 call-clobbered - arg 1 2 call-clobbered - arg 2 3 call-clobbered - arg 3 4 call-clobbered - arg 4 5 call-clobbered - arg 5 6 call-saved - arg 6 7 call-saved - - (Of course a function with say 3 arguments does not have entries for - arguments 4 and 5.) - For system calls with 6 parameters a stack operation is required - to load the 6th parameter to register 7. Call saved register 7 is - moved to register 0 and back to avoid an additional stack frame. - */ - -#define DO_CALL(syscall, args) \ - .if args > 5; \ - lgr %r0,%r7; \ - lg %r7,160(%r15); \ - .endif; \ - lghi %r1,SYS_ify (syscall); \ - svc 0; \ - .if args > 5; \ - lgr %r7,%r0; \ - .endif - -#define ret \ - br 14 - -#define ret_NOERRNO \ - br 14 - -#define ret_ERRVAL \ - br 14 - -#else - -# undef HAVE_INTERNAL_BRK_ADDR_SYMBOL -# define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 - -#endif /* __ASSEMBLER__ */ - -#endif /* _LINUX_S390_SYSDEP_H */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S b/sysdeps/unix/sysv/linux/s390/setcontext.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S rename to sysdeps/unix/sysv/linux/s390/setcontext.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions b/sysdeps/unix/sysv/linux/s390/shlib-versions similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions rename to sysdeps/unix/sysv/linux/s390/shlib-versions diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/single-thread.h b/sysdeps/unix/sysv/linux/s390/single-thread.h similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/single-thread.h rename to sysdeps/unix/sysv/linux/s390/single-thread.h diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/sysdeps/unix/sysv/linux/s390/swapcontext.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S rename to sysdeps/unix/sysv/linux/s390/swapcontext.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall.S b/sysdeps/unix/sysv/linux/s390/syscall.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/syscall.S rename to sysdeps/unix/sysv/linux/s390/syscall.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/syscall_cancel.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S rename to sysdeps/unix/sysv/linux/s390/syscall_cancel.S diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S b/sysdeps/unix/sysv/linux/s390/sysdep.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/sysdep.S rename to sysdeps/unix/sysv/linux/s390/sysdep.S diff --git a/sysdeps/unix/sysv/linux/s390/sysdep.h b/sysdeps/unix/sysv/linux/s390/sysdep.h index 593e70dc1e..42fb8aa469 100644 --- a/sysdeps/unix/sysv/linux/s390/sysdep.h +++ b/sysdeps/unix/sysv/linux/s390/sysdep.h @@ -1,5 +1,5 @@ -/* Syscall definitions, Linux s390 version. - Copyright (C) 2019-2026 Free Software Foundation, Inc. +/* Assembler macros for 64 bit S/390. + Copyright (C) 2001-2026 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 @@ -14,15 +14,163 @@ 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/>. */ + <https://www.gnu.org/licenses/>. */ -#ifndef __ASSEMBLY__ +#ifndef _LINUX_S390_SYSDEP_H +#define _LINUX_S390_SYSDEP_H + +#include <sysdeps/s390/sysdep.h> +#include <sysdeps/unix/sysdep.h> +#include <sysdeps/unix/sysv/linux/sysdep.h> +#include <dl-sysdep.h> /* For RTLD_PRIVATE_ERRNO. */ +#include <tls.h> + +/* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax + so we have to redefine the `SYS_ify' macro here. */ +/* In newer 2.1 kernels __NR_syscall is missing so we define it here. */ +#define __NR_syscall 0 #undef SYS_ify #define SYS_ify(syscall_name) __NR_##syscall_name -#undef INTERNAL_SYSCALL_NCS -#define INTERNAL_SYSCALL_NCS(no, nr, args...) \ +#ifdef __ASSEMBLER__ + +/* Linux uses a negative return value to indicate syscall errors, unlike + most Unices, which use the condition codes' carry flag. + + Since version 2.1 the return value of a system call might be negative + even if the call succeeded. E.g., the `lseek' system call might return + a large offset. Therefore we must not anymore test for < 0, but test + for a real error by making sure the value in gpr2 is a real error + number. Linus said he will make sure that no syscall returns a value + in -1 .. -4095 as a valid result so we can safely test with -4095. */ + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lghi %r4,-4095 ; \ + clgr %r2,%r4 ; \ + jgnl SYSCALL_ERROR_LABEL + +# undef PSEUDO_END +# define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +# undef PSEUDO_NOERRNO +# define PSEUDO_NOERRNO(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args) + +# undef PSEUDO_END_NOERRNO +# define PSEUDO_END_NOERRNO(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +# undef PSEUDO_ERRVAL +# define PSEUDO_ERRVAL(name, syscall_name, args) \ + .text; \ + ENTRY (name) \ + DO_CALL (syscall_name, args); \ + lcgr %r2,%r2 + +# undef PSEUDO_END_ERRVAL +# define PSEUDO_END_ERRVAL(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) + +# undef SYSCALL_ERROR_LABEL +# ifndef PIC +# undef SYSCALL_ERROR_LABEL +# define SYSCALL_ERROR_LABEL syscall_error +# define SYSCALL_ERROR_HANDLER +# else +# if RTLD_PRIVATE_ERRNO +# undef SYSCALL_ERROR_LABEL +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: larl %r1,rtld_errno; \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lghi %r2,-1; \ + br %r14 +# elif defined _LIBC_REENTRANT +# if IS_IN (libc) +# define SYSCALL_ERROR_ERRNO __libc_errno +# else +# define SYSCALL_ERROR_ERRNO errno +# endif +# undef SYSCALL_ERROR_LABEL +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: lcr %r0,%r2; \ + larl %r1,SYSCALL_ERROR_ERRNO@indntpoff; \ + lg %r1,0(%r1); \ + ear %r2,%a0; \ + sllg %r2,%r2,32; \ + ear %r2,%a1; \ + st %r0,0(%r1,%r2); \ + lghi %r2,-1; \ + br %r14 +# else +# undef SYSCALL_ERROR_LABEL +# define SYSCALL_ERROR_LABEL 0f +# define SYSCALL_ERROR_HANDLER \ +0: larl %r1,_GLOBAL_OFFSET_TABLE_; \ + lg %r1,errno@GOT(%r1); \ + lcr %r2,%r2; \ + st %r2,0(%r1); \ + lghi %r2,-1; \ + br %r14 +# endif /* _LIBC_REENTRANT */ +# endif /* PIC */ + +/* Linux takes system call arguments in registers: + + syscall number 1 call-clobbered + arg 1 2 call-clobbered + arg 2 3 call-clobbered + arg 3 4 call-clobbered + arg 4 5 call-clobbered + arg 5 6 call-saved + arg 6 7 call-saved + + (Of course a function with say 3 arguments does not have entries for + arguments 4 and 5.) + For system calls with 6 parameters a stack operation is required + to load the 6th parameter to register 7. Call saved register 7 is + moved to register 0 and back to avoid an additional stack frame. + */ + +# define DO_CALL(syscall, args) \ + .if args > 5; \ + lgr %r0,%r7; \ + lg %r7,160(%r15); \ + .endif; \ + lghi %r1,SYS_ify (syscall); \ + svc 0; \ + .if args > 5; \ + lgr %r7,%r0; \ + .endif + +# define ret \ + br 14 + +# define ret_NOERRNO \ + br 14 + +# define ret_ERRVAL \ + br 14 + +#else /* not __ASSEMBLER__ */ + +# undef INTERNAL_SYSCALL_NCS +# define INTERNAL_SYSCALL_NCS(no, nr, args...) \ ({ \ DECLARGS_##nr(args) \ register unsigned long int _nr __asm__("1") = (unsigned long int)(no); \ @@ -34,46 +182,52 @@ : "memory" ); \ _ret; }) -#undef INTERNAL_SYSCALL -#define INTERNAL_SYSCALL(name, nr, args...) \ +# undef INTERNAL_SYSCALL +# define INTERNAL_SYSCALL(name, nr, args...) \ INTERNAL_SYSCALL_NCS(__NR_##name, nr, args) -#define DECLARGS_0() -#define DECLARGS_1(arg1) \ +# define DECLARGS_0() +# define DECLARGS_1(arg1) \ register unsigned long int gpr2 __asm__ ("2") = (unsigned long int)(arg1); -#define DECLARGS_2(arg1, arg2) \ +# define DECLARGS_2(arg1, arg2) \ DECLARGS_1(arg1) \ register unsigned long int gpr3 __asm__ ("3") = (unsigned long int)(arg2); -#define DECLARGS_3(arg1, arg2, arg3) \ +# define DECLARGS_3(arg1, arg2, arg3) \ DECLARGS_2(arg1, arg2) \ register unsigned long int gpr4 __asm__ ("4") = (unsigned long int)(arg3); -#define DECLARGS_4(arg1, arg2, arg3, arg4) \ +# define DECLARGS_4(arg1, arg2, arg3, arg4) \ DECLARGS_3(arg1, arg2, arg3) \ register unsigned long int gpr5 __asm__ ("5") = (unsigned long int)(arg4); -#define DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ +# define DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ DECLARGS_4(arg1, arg2, arg3, arg4) \ register unsigned long int gpr6 __asm__ ("6") = (unsigned long int)(arg5); -#define DECLARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ +# define DECLARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ DECLARGS_5(arg1, arg2, arg3, arg4, arg5) \ register unsigned long int gpr7 __asm__ ("7") = (unsigned long int)(arg6); -#define ASMFMT_0 -#define ASMFMT_1 , "0" (gpr2) -#define ASMFMT_2 , "0" (gpr2), "d" (gpr3) -#define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4) -#define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5) -#define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) -#define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) +# define ASMFMT_0 +# define ASMFMT_1 , "0" (gpr2) +# define ASMFMT_2 , "0" (gpr2), "d" (gpr3) +# define ASMFMT_3 , "0" (gpr2), "d" (gpr3), "d" (gpr4) +# define ASMFMT_4 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5) +# define ASMFMT_5 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6) +# define ASMFMT_6 , "0" (gpr2), "d" (gpr3), "d" (gpr4), "d" (gpr5), "d" (gpr6), "d" (gpr7) -#define VDSO_NAME "LINUX_2.6.29" -#define VDSO_HASH 123718585 +# define VDSO_NAME "LINUX_2.6.29" +# define VDSO_HASH 123718585 /* List of system calls which are supported as vsyscalls. */ -#define HAVE_CLOCK_GETRES64_VSYSCALL "__kernel_clock_getres" -#define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" -#define HAVE_GETRANDOM_VSYSCALL "__kernel_getrandom" -#define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" -#define HAVE_GETCPU_VSYSCALL "__kernel_getcpu" - -#define HAVE_CLONE3_WRAPPER 1 -#endif +# define HAVE_CLOCK_GETRES64_VSYSCALL "__kernel_clock_getres" +# define HAVE_CLOCK_GETTIME64_VSYSCALL "__kernel_clock_gettime" +# define HAVE_GETRANDOM_VSYSCALL "__kernel_getrandom" +# define HAVE_GETTIMEOFDAY_VSYSCALL "__kernel_gettimeofday" +# define HAVE_GETCPU_VSYSCALL "__kernel_getcpu" + +# define HAVE_CLONE3_WRAPPER 1 + +# undef HAVE_INTERNAL_BRK_ADDR_SYMBOL +# define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 + +#endif /* __ASSEMBLER__ */ + +#endif /* _LINUX_S390_SYSDEP_H */ diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/timer_t_was_int_compat.h b/sysdeps/unix/sysv/linux/s390/timer_t_was_int_compat.h similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/timer_t_was_int_compat.h rename to sysdeps/unix/sysv/linux/s390/timer_t_was_int_compat.h diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/vfork.S b/sysdeps/unix/sysv/linux/s390/vfork.S similarity index 100% rename from sysdeps/unix/sysv/linux/s390/s390-64/vfork.S rename to sysdeps/unix/sysv/linux/s390/vfork.S