From d555194cb3d236bda07fa9ef08f4f7020421763a Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 7 Feb 2002 17:54:45 +0000 Subject: [PATCH] Update. 2002-02-07 Andreas Schwab * configure.in: Fix check for -zcombreloc. 2002-02-06 H.J. Lu * config.h.in (HAVE_BUILTIN_MEMSET): New. * configure.in: Check if __builtin_memset really works. * elf/rtld.c (_dl_start): Check HAVE_BUILTIN_MEMSET instead of __GNUC_PREREQ (2, 96) before using __builtin_memset. 2002-02-06 Jakub Jelinek * io/bug-ftw3.c (main): Don't try the test if root. 2002-02-06 Martin Schwidefsky * sysdeps/unix/sysv/linux/s390/brk.c (__brk): Correct inline assembly constraints. * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h (RLIMIT_LOCKS): Add RLIMIT_LOCKS and adjust RLIMIT_NLIMITS. * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h (RLIMIT_LOCKS): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (clone): Make clone a weak alias for __clone. * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (clone): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h: Fix typo. * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Add framestate. * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file. * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap64): Make __mmap a weak alias for __mmap64. * sysdeps/mips/atomicity.h (exchange_and_add): Not use branch likely. * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise. * sysdeps/generic/dl-tls.c: Don't read TLS header if TLS is not needed. --- ChangeLog | 40 +++++- config.h.in | 3 + configure | 123 +++++++++++------- configure.in | 24 +++- elf/rtld.c | 10 +- io/bug-ftw3.c | 6 + sysdeps/generic/dl-tls.c | 2 +- sysdeps/unix/sysv/linux/s390/brk.c | 7 +- .../sysv/linux/s390/s390-32/bits/resource.h | 8 +- sysdeps/unix/sysv/linux/s390/s390-32/clone.S | 1 + .../sysv/linux/s390/s390-32/profil-counter.h | 4 +- sysdeps/unix/sysv/linux/s390/s390-64/Makefile | 8 ++ sysdeps/unix/sysv/linux/s390/s390-64/Versions | 7 + .../sysv/linux/s390/s390-64/bits/resource.h | 9 +- sysdeps/unix/sysv/linux/s390/s390-64/clone.S | 1 + sysdeps/unix/sysv/linux/s390/s390-64/mmap.S | 2 +- 16 files changed, 188 insertions(+), 67 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/s390/s390-64/Versions diff --git a/ChangeLog b/ChangeLog index a18e9d2aa1..4778ce527f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,14 +1,46 @@ +2002-02-07 Andreas Schwab + + * configure.in: Fix check for -zcombreloc. + +2002-02-06 H.J. Lu + + * config.h.in (HAVE_BUILTIN_MEMSET): New. + * configure.in: Check if __builtin_memset really works. + * elf/rtld.c (_dl_start): Check HAVE_BUILTIN_MEMSET instead of + __GNUC_PREREQ (2, 96) before using __builtin_memset. + +2002-02-06 Jakub Jelinek + + * io/bug-ftw3.c (main): Don't try the test if root. + +2002-02-06 Martin Schwidefsky + + * sysdeps/unix/sysv/linux/s390/brk.c (__brk): Correct inline assembly + constraints. + * sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h (RLIMIT_LOCKS): + Add RLIMIT_LOCKS and adjust RLIMIT_NLIMITS. + * sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h (RLIMIT_LOCKS): + Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S (clone): Make clone + a weak alias for __clone. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S (clone): Likewise. + * sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h: Fix typo. + * sysdeps/unix/sysv/linux/s390/s390-64/Makefile: Add framestate. + * sysdeps/unix/sysv/linux/s390/s390-64/Versions: New file. + * sysdeps/unix/sysv/linux/s390/s390-64/mmap.S (__mmap64): Make __mmap + a weak alias for __mmap64. + 2002-02-05 H.J. Lu - * sysdeps/mips/atomicity.h (exchange_and_add): Not use branch - likely. + * sysdeps/mips/atomicity.h (exchange_and_add): Not use branch likely. (atomic_add): Likewise. (compare_and_swap): Likewise. - * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): - Likewise. + * sysdeps/unix/sysv/linux/mips/sys/tas.h (_test_and_set): Likewise. 2002-02-07 Ulrich Drepper + * sysdeps/generic/dl-tls.c: Don't read TLS header if TLS is not needed. + * sysdeps/generic/dl-tls.c (_dl_determine_tlsoffset): Account for alignment of the TCB and store total size and alignment of static TLS block in _dl_tls_static_size and _dl_tls_static_align. diff --git a/config.h.in b/config.h.in index 88a65aa093..b15e8f15ce 100644 --- a/config.h.in +++ b/config.h.in @@ -85,6 +85,9 @@ /* Define if the compiler supports __builtin_expect. */ #undef HAVE_BUILTIN_EXPECT +/* Define if the compiler supports __builtin_memset. */ +#undef HAVE_BUILTIN_MEMSET + /* Define if the regparm attribute shall be used for local functions (gcc on ix86 only). */ #undef USE_REGPARMS diff --git a/configure b/configure index 70ae9ebbe0..4d567b5491 100755 --- a/configure +++ b/configure @@ -2897,12 +2897,13 @@ if eval "test \"`echo '$''{'libc_cv_z_combreloc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } + -Wl,-z,combreloc 1>&5'; { (eval echo configure:2907: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } then if readelf -S conftest.so | grep '\.rel\(a\|\)\.dyn' > /dev/null; then libc_cv_z_combreloc=yes @@ -2927,12 +2928,12 @@ fi if test $elf != yes; then echo $ac_n "checking for .init and .fini sections""... $ac_c" 1>&6 -echo "configure:2931: checking for .init and .fini sections" >&5 +echo "configure:2932: checking for .init and .fini sections" >&5 if eval "test \"`echo '$''{'libc_cv_have_initfini'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_have_initfini=yes else @@ -2964,7 +2965,7 @@ fi if test $elf = yes -a $gnu_ld = yes; then echo $ac_n "checking whether cc puts quotes around section names""... $ac_c" 1>&6 -echo "configure:2968: checking whether cc puts quotes around section names" >&5 +echo "configure:2969: checking whether cc puts quotes around section names" >&5 if eval "test \"`echo '$''{'libc_cv_have_section_quotes'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3001,19 +3002,19 @@ if test $elf = yes; then else if test $ac_cv_prog_cc_works = yes; then echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:3005: checking for _ prefix on C symbol names" >&5 +echo "configure:3006: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* libc_cv_asm_underscores=yes else @@ -3028,17 +3029,17 @@ fi echo "$ac_t""$libc_cv_asm_underscores" 1>&6 else echo $ac_n "checking for _ prefix on C symbol names""... $ac_c" 1>&6 -echo "configure:3032: checking for _ prefix on C symbol names" >&5 +echo "configure:3033: checking for _ prefix on C symbol names" >&5 if eval "test \"`echo '$''{'libc_cv_asm_underscores'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3043: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then if grep _underscore_test conftest* >/dev/null; then rm -f conftest* libc_cv_asm_underscores=yes @@ -3070,7 +3071,7 @@ if test $elf = yes; then fi echo $ac_n "checking for assembler .weak directive""... $ac_c" 1>&6 -echo "configure:3074: checking for assembler .weak directive" >&5 +echo "configure:3075: checking for assembler .weak directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weak_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3093,7 +3094,7 @@ echo "$ac_t""$libc_cv_asm_weak_directive" 1>&6 if test $libc_cv_asm_weak_directive = no; then echo $ac_n "checking for assembler .weakext directive""... $ac_c" 1>&6 -echo "configure:3097: checking for assembler .weakext directive" >&5 +echo "configure:3098: checking for assembler .weakext directive" >&5 if eval "test \"`echo '$''{'libc_cv_asm_weakext_directive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3140,14 +3141,14 @@ EOF ;; hppa*linux*) echo $ac_n "checking for assembler line separator""... $ac_c" 1>&6 -echo "configure:3144: checking for assembler line separator" >&5 +echo "configure:3145: checking for assembler line separator" >&5 if eval "test \"`echo '$''{'libc_cv_asm_line_sep'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.s <&5; (eval $ac_try) 2>&5; }; }; then + if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'; { (eval echo configure:3152: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_asm_line_sep='!' else if test -z "$enable_hacker_mode"; then @@ -3169,7 +3170,7 @@ EOF esac echo $ac_n "checking for ld --no-whole-archive""... $ac_c" 1>&6 -echo "configure:3173: checking for ld --no-whole-archive" >&5 +echo "configure:3174: checking for ld --no-whole-archive" >&5 if eval "test \"`echo '$''{'libc_cv_ld_no_whole_archive'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3180,7 +3181,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -Wl,--no-whole-archive - -o conftest conftest.c 1>&5'; { (eval echo configure:3184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:3185: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_ld_no_whole_archive=yes else libc_cv_ld_no_whole_archive=no @@ -3194,7 +3195,7 @@ if test $libc_cv_ld_no_whole_archive = yes; then fi echo $ac_n "checking for gcc -fexceptions""... $ac_c" 1>&6 -echo "configure:3198: checking for gcc -fexceptions" >&5 +echo "configure:3199: checking for gcc -fexceptions" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_exceptions'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3205,7 +3206,7 @@ __throw () {} EOF if { ac_try='${CC-cc} $CFLAGS -nostdlib -nostartfiles -fexceptions - -o conftest conftest.c 1>&5'; { (eval echo configure:3209: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c 1>&5'; { (eval echo configure:3210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_exceptions=yes else libc_cv_gcc_exceptions=no @@ -3220,14 +3221,14 @@ fi if test "$base_machine" = alpha ; then echo $ac_n "checking for function ..ng prefix""... $ac_c" 1>&6 -echo "configure:3224: checking for function ..ng prefix" >&5 +echo "configure:3225: checking for function ..ng prefix" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_alpha_ng_prefix'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <<\EOF foo () { } EOF -if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3231: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; +if { ac_try='${CC-cc} -S conftest.c -o - | fgrep "\$foo..ng" > /dev/null'; { (eval echo configure:3232: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_alpha_ng_prefix=yes else @@ -3254,19 +3255,19 @@ if test "$host_cpu" = powerpc ; then # Check for a bug present in at least versions 2.8.x of GCC # and versions 1.0.x of EGCS. echo $ac_n "checking whether clobbering cr0 causes problems""... $ac_c" 1>&6 -echo "configure:3258: checking whether clobbering cr0 causes problems" >&5 +echo "configure:3259: checking whether clobbering cr0 causes problems" >&5 if eval "test \"`echo '$''{'libc_cv_c_asmcr0_bug'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* libc_cv_c_asmcr0_bug='no' else @@ -3288,12 +3289,12 @@ fi fi echo $ac_n "checking for DWARF2 unwind info support""... $ac_c" 1>&6 -echo "configure:3292: checking for DWARF2 unwind info support" >&5 +echo "configure:3293: checking for DWARF2 unwind info support" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_dwarf2_unwind_info'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3325: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=static else libc_cv_gcc_dwarf2_unwind_info=no @@ -3328,7 +3329,7 @@ fi if test $libc_cv_gcc_dwarf2_unwind_info = no; then if { ac_try='${CC-cc} $CFLAGS -DCHECK__register_frame -nostdlib -nostartfiles - -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3332: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3333: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_dwarf2_unwind_info=yes else libc_cv_gcc_dwarf2_unwind_info=no @@ -3358,12 +3359,12 @@ EOF esac echo $ac_n "checking for __builtin_expect""... $ac_c" 1>&6 -echo "configure:3362: checking for __builtin_expect" >&5 +echo "configure:3363: checking for __builtin_expect" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_builtin_expect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3376: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_builtin_expect=yes else libc_cv_gcc_builtin_expect=no @@ -3387,13 +3388,41 @@ EOF fi +echo $ac_n "checking for __builtin_memset""... $ac_c" 1>&6 +echo "configure:3393: checking for __builtin_memset" >&5 +if eval "test \"`echo '$''{'libc_cv_gcc_builtin_memset'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <<\EOF +void zero (void *x) +{ + __builtin_memset (x, 0, 4); +} +EOF +if { ac_try='${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null'; { (eval echo configure:3403: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; +then + libc_cv_gcc_builtin_memset=no +else + libc_cv_gcc_builtin_memset=yes +fi +rm -f conftest* +fi + +echo "$ac_t""$libc_cv_gcc_builtin_memset" 1>&6 +if test "$libc_cv_gcc_builtin_memset" = yes ; then + cat >> confdefs.h <<\EOF +#define HAVE_BUILTIN_MEMSET 1 +EOF + +fi + echo $ac_n "checking for local label subtraction""... $ac_c" 1>&6 -echo "configure:3392: checking for local label subtraction" >&5 +echo "configure:3421: checking for local label subtraction" >&5 if eval "test \"`echo '$''{'libc_cv_gcc_subtract_local_labels'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.c <&5; (eval $ac_try) 2>&5; }; }; then + -o conftest conftest.c -lgcc >&5'; { (eval echo configure:3439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then libc_cv_gcc_subtract_local_labels=yes else libc_cv_gcc_subtract_local_labels=no @@ -3423,7 +3452,7 @@ EOF fi echo $ac_n "checking for libgd""... $ac_c" 1>&6 -echo "configure:3427: checking for libgd" >&5 +echo "configure:3456: checking for libgd" >&5 if test "$with_gd" != "no"; then old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $libgd_include" @@ -3432,14 +3461,14 @@ if test "$with_gd" != "no"; then old_LIBS="$LIBS" LIBS="$LIBS -lgd -lpng -lz -lm" cat > conftest.$ac_ext < int main() { gdImagePng (0, 0) ; return 0; } EOF -if { (eval echo configure:3443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3472: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBGD=yes else @@ -3459,7 +3488,7 @@ echo "$ac_t""$LIBGD" 1>&6 echo $ac_n "checking size of long double""... $ac_c" 1>&6 -echo "configure:3463: checking size of long double" >&5 +echo "configure:3492: checking size of long double" >&5 if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3467,7 +3496,7 @@ else ac_cv_sizeof_long_double=0 else cat > conftest.$ac_ext < int main() @@ -3478,7 +3507,7 @@ int main() return(0); } EOF -if { (eval echo configure:3482: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_sizeof_long_double=`cat conftestval` else @@ -3556,7 +3585,7 @@ if test "$uname" = "sysdeps/generic"; then fi echo $ac_n "checking OS release for uname""... $ac_c" 1>&6 -echo "configure:3560: checking OS release for uname" >&5 +echo "configure:3589: checking OS release for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_release'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3578,7 +3607,7 @@ echo "$ac_t""$libc_cv_uname_release" 1>&6 uname_release="$libc_cv_uname_release" echo $ac_n "checking OS version for uname""... $ac_c" 1>&6 -echo "configure:3582: checking OS version for uname" >&5 +echo "configure:3611: checking OS version for uname" >&5 if eval "test \"`echo '$''{'libc_cv_uname_version'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -3600,7 +3629,7 @@ else fi echo $ac_n "checking stdio selection""... $ac_c" 1>&6 -echo "configure:3604: checking stdio selection" >&5 +echo "configure:3633: checking stdio selection" >&5 case $stdio in libio) cat >> confdefs.h <<\EOF @@ -3614,7 +3643,7 @@ echo "$ac_t""$stdio" 1>&6 # Test for old glibc 2.0.x headers so that they can be removed properly # Search only in includedir. echo $ac_n "checking for old glibc 2.0.x headers""... $ac_c" 1>&6 -echo "configure:3618: checking for old glibc 2.0.x headers" >&5 +echo "configure:3647: checking for old glibc 2.0.x headers" >&5 if eval test -f "${includedir}/elfclass.h" -a -f "${includedir}/fcntlbits.h" then old_glibc_headers=yes @@ -3675,7 +3704,7 @@ if test $shared = default; then fi echo $ac_n "checking whether -fPIC is default""... $ac_c" 1>&6 -echo "configure:3679: checking whether -fPIC is default" >&5 +echo "configure:3708: checking whether -fPIC is default" >&5 if eval "test \"`echo '$''{'pic_default'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else diff --git a/configure.in b/configure.in index 5299146cdd..9c627c5611 100644 --- a/configure.in +++ b/configure.in @@ -1065,8 +1065,9 @@ EOF AC_CACHE_CHECK(for -z combreloc, libc_cv_z_combreloc, [dnl cat > conftest.c < conftest.c <<\EOF +void zero (void *x) +{ + __builtin_memset (x, 0, 4); +} +EOF +dnl +if AC_TRY_COMMAND([${CC-cc} -O3 -S conftest.c -o - | fgrep "memset" > /dev/null]); +then + libc_cv_gcc_builtin_memset=no +else + libc_cv_gcc_builtin_memset=yes +fi +rm -f conftest* ]) +if test "$libc_cv_gcc_builtin_memset" = yes ; then + AC_DEFINE(HAVE_BUILTIN_MEMSET) +fi + dnl Check whether the compiler supports subtraction of local labels. AC_CACHE_CHECK(for local label subtraction, libc_cv_gcc_subtract_local_labels, [cat > conftest.c <l_tls_nextimage); + + /* Construct the static TLS block and the dtv for the initial + thread. For some platforms this will include allocating memory + for the thread descriptor. The memory for the TLS block will + never be freed. It should be allocated accordingly. The dtv + array can be changed if dynamic loading requires it. */ #endif { diff --git a/io/bug-ftw3.c b/io/bug-ftw3.c index fcc2ca7bba..19740f49f3 100644 --- a/io/bug-ftw3.c +++ b/io/bug-ftw3.c @@ -25,6 +25,12 @@ main (void) int r; int e; + if (getuid () == 0) + { + puts ("this test needs to be run by ordinary user"); + exit (0); + } + dname = mkdtemp (tmp); if (dname == NULL) { diff --git a/sysdeps/generic/dl-tls.c b/sysdeps/generic/dl-tls.c index d5163c6325..5b4fdd8cf1 100644 --- a/sysdeps/generic/dl-tls.c +++ b/sysdeps/generic/dl-tls.c @@ -19,11 +19,11 @@ #include +#include /* We don't need any of this if TLS is not supported. */ #ifdef USE_TLS -#include #include #include diff --git a/sysdeps/unix/sysv/linux/s390/brk.c b/sysdeps/unix/sysv/linux/s390/brk.c index f2baf2af71..ae6af21784 100644 --- a/sysdeps/unix/sysv/linux/s390/brk.c +++ b/sysdeps/unix/sysv/linux/s390/brk.c @@ -35,14 +35,13 @@ __brk (void *addr) void *newbrk; { - register long r0 asm ("2"); register void *__addr asm("2") = addr; asm ("svc %b1\n\t" /* call sys_brk */ - : "=d" (r0) + : "=d" (__addr) : "I" (SYS_ify(brk)), "r" (__addr) - : _svc_clobber ); - newbrk = (void *) r0; + : "cc", "memory" ); + newbrk = __addr; } __curbrk = newbrk; diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h b/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h index 36b5355f71..204c293584 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. Linux version. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002 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 @@ -76,7 +76,11 @@ enum __rlimit_resource RLIMIT_MEMLOCK = 8, #define RLIMIT_MEMLOCK RLIMIT_MEMLOCK - RLIMIT_NLIMITS = 10, + /* Maximum number of file locks. */ + RLIMIT_LOCKS = 10, +#define RLIMIT_LOCKS RLIMIT_LOCKS + + RLIMIT_NLIMITS = 11, RLIM_NLIMITS = RLIMIT_NLIMITS #define RLIMIT_NLIMITS RLIMIT_NLIMITS #define RLIM_NLIMITS RLIM_NLIMITS diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S index 4131ce2a51..c93570ed72 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-32/clone.S @@ -65,3 +65,4 @@ thread_start: .L1: .long _exit - .L0 #endif PSEUDO_END (__clone) +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h b/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h index 5500adff8b..d913dbb617 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/profil-counter.h @@ -1,5 +1,5 @@ /* Low-level statistical profiling support function. Linux/s390 version. - Copyright (C) 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002 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 @@ -23,5 +23,5 @@ static void profil_counter (int signo, SIGCONTEXT scp) { - profile_count((void *) ((unsigned long) GET_PC (scp) & 0x7fffffffUL)); + profil_count((void *) ((unsigned long) GET_PC (scp) & 0x7fffffffUL)); } diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Makefile b/sysdeps/unix/sysv/linux/s390/s390-64/Makefile index e3c048b5a4..e4ed635725 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/Makefile +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Makefile @@ -2,3 +2,11 @@ ifeq ($(subdir),misc) sysdep_routines += setfsgid setfsuid setresgid setresuid 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 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions new file mode 100644 index 0000000000..83092db48e --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions @@ -0,0 +1,7 @@ +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/bits/resource.h b/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h index 3ff76479e1..1df6871813 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/bits/resource.h @@ -1,5 +1,5 @@ /* Bit values & structures for resource limits. 64 bit S/390 version. - Copyright (C) 2001 Free Software Foundation, Inc. + Copyright (C) 2001, 2002 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 @@ -76,7 +76,12 @@ enum __rlimit_resource RLIMIT_AS = 9, #define RLIMIT_AS RLIMIT_AS - RLIM_NLIMITS = 10 + /* Maximum number of file locks. */ + RLIMIT_LOCKS = 10, +#define RLIMIT_LOCKS RLIMIT_LOCKS + + RLIMIT_NLIMITS = 11, + RLIM_NLIMITS = RLIMIT_NLIMITS #define RLIMIT_NLIMITS RLIMIT_NLIMITS #define RLIM_NLIMITS RLIM_NLIMITS }; diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S index f409fb5d02..992cb2f10f 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/clone.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/clone.S @@ -53,3 +53,4 @@ thread_start: #endif jg _exit@PLT /* branch to _exit -> thread termination */ PSEUDO_END (__clone) +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S index 6002fd12c0..23205901d4 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S +++ b/sysdeps/unix/sysv/linux/s390/s390-64/mmap.S @@ -64,4 +64,4 @@ PSEUDO_END (__mmap) weak_alias (__mmap, mmap) weak_alias (__mmap, mmap64) - +weak_alias (__mmap, __mmap64)