From a95aa87d100837eb32746bd0ddf7701e75e8d2df Mon Sep 17 00:00:00 2001 From: GNU Libc Maintainers Date: Sun, 4 Dec 2016 21:49:53 +0000 Subject: [PATCH] git-updates GIT update of git://sourceware.org/git/glibc.git/release/2.24/master from glibc-2.24 Gbp-Pq: Name git-updates.diff --- ChangeLog | 211 ++++++++++++++++++ NEWS | 11 + argp/argp-fmtstream.h | 19 +- argp/argp.h | 42 +--- configure | 8 +- configure.ac | 8 +- conform/Makefile | 1 + iconv/gconv.h | 2 +- malloc/arena.c | 41 +++- nptl/Makefile | 2 +- nptl/tst-exec5.c | 196 ++++++++++++++++ nptl/tst-once5.cc | 2 + po/de.po | 6 +- po/fi.po | 90 ++++---- po/sv.po | 143 ++++++------ posix/execvpe.c | 15 +- sysdeps/arm/nacl/libc.abilist | 1 + sysdeps/ia64/nptl/Makefile | 1 + sysdeps/mips/Makefile | 1 + sysdeps/mips/mips32/crti.S | 1 + sysdeps/mips/mips64/n32/crti.S | 1 + sysdeps/mips/mips64/n64/crti.S | 1 + sysdeps/mips/nptl/Makefile | 1 + sysdeps/nacl/clock.c | 2 +- sysdeps/nacl/dup.c | 1 + sysdeps/posix/wait3.c | 2 +- sysdeps/powerpc/fpu/libm-test-ulps | 106 ++++----- sysdeps/powerpc/ifunc-sel.h | 13 +- sysdeps/powerpc/powerpc32/power6/memset.S | 2 +- .../powerpc32/power9/multiarch/Implies | 2 +- sysdeps/powerpc/powerpc64/power6/memset.S | 2 +- sysdeps/powerpc/powerpc64/power9/fpu/Implies | 1 - sysdeps/s390/nptl/Makefile | 1 + sysdeps/sparc/sparc32/fpu/s_fdim.S | 42 ---- sysdeps/sparc/sparc32/fpu/s_fdimf.S | 35 --- .../sparc32/sparcv9/fpu/multiarch/Makefile | 4 +- .../sparcv9/fpu/multiarch/s_fdim-vis3.S | 34 --- .../sparc32/sparcv9/fpu/multiarch/s_fdim.S | 19 -- .../sparcv9/fpu/multiarch/s_fdimf-vis3.S | 32 --- .../sparc32/sparcv9/fpu/multiarch/s_fdimf.S | 12 - .../sparcv9/fpu/multiarch/s_nearbyint-vis3.S | 6 +- .../sparcv9/fpu/multiarch/s_nearbyintf-vis3.S | 2 +- sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S | 40 ---- sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S | 35 --- .../sparc/sparc32/sparcv9/fpu/s_nearbyint.S | 8 +- .../sparc/sparc32/sparcv9/fpu/s_nearbyintf.S | 4 +- sysdeps/sparc/sparc64/fpu/s_fdim.S | 32 --- sysdeps/sparc/sparc64/fpu/s_fdimf.S | 31 --- sysdeps/unix/alpha/Makefile | 1 + sysdeps/unix/sysv/linux/alpha/Makefile | 1 + sysdeps/unix/sysv/linux/arm/setcontext.S | 7 + sysdeps/unix/sysv/linux/i386/Makefile | 3 + sysdeps/unix/sysv/linux/ia64/Makefile | 1 + sysdeps/unix/sysv/linux/microblaze/Makefile | 3 +- sysdeps/unix/sysv/linux/powerpc/Makefile | 2 + sysdeps/unix/sysv/linux/pread.c | 3 +- sysdeps/unix/sysv/linux/pread64.c | 3 +- sysdeps/unix/sysv/linux/pwrite.c | 3 +- sysdeps/unix/sysv/linux/pwrite64.c | 3 +- sysdeps/unix/sysv/linux/s390/Makefile | 1 + sysdeps/unix/sysv/linux/sh/kernel-features.h | 5 + sysdeps/unix/sysv/linux/sh/pread.c | 23 -- sysdeps/unix/sysv/linux/sh/pread64.c | 23 -- sysdeps/unix/sysv/linux/sh/pwrite.c | 23 -- sysdeps/unix/sysv/linux/sh/pwrite64.c | 23 -- sysdeps/unix/sysv/linux/sparc/Makefile | 2 + sysdeps/unix/sysv/linux/spawni.c | 14 +- sysdeps/unix/sysv/linux/sysdep.h | 10 + sysdeps/unix/sysv/linux/tile/Makefile | 1 + sysdeps/x86_64/memcpy_chk.S | 2 +- 70 files changed, 727 insertions(+), 702 deletions(-) create mode 100644 nptl/tst-exec5.c delete mode 100644 sysdeps/sparc/sparc32/fpu/s_fdim.S delete mode 100644 sysdeps/sparc/sparc32/fpu/s_fdimf.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S delete mode 100644 sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S delete mode 100644 sysdeps/sparc/sparc64/fpu/s_fdim.S delete mode 100644 sysdeps/sparc/sparc64/fpu/s_fdimf.S delete mode 100644 sysdeps/unix/sysv/linux/sh/pread.c delete mode 100644 sysdeps/unix/sysv/linux/sh/pread64.c delete mode 100644 sysdeps/unix/sysv/linux/sh/pwrite.c delete mode 100644 sysdeps/unix/sysv/linux/sh/pwrite64.c diff --git a/ChangeLog b/ChangeLog index c44c92609..e6ea2dfe4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,214 @@ +2016-11-24 Aurelien Jarno + + * sysdeps/x86_64/memcpy_chk.S (__memcpy_chk): Check for SHARED + instead of PIC. + +2016-11-23 Matthew Fortune + Maciej W. Rozycki + + * sysdeps/mips/mips32/crti.S (_init): Add `.insn' pseudo-op at + `.Lno_weak_fn' label. + * sysdeps/mips/mips64/n32/crti.S (_init): Likewise. + * sysdeps/mips/mips64/n64/crti.S (_init): Likewise. + +2016-11-22 Adhemerval Zanella + + [BZ #20847] + * posix/execvpe.c (maybe_script_execute): Remove write past allocated + array bounds. + (__execvpe): Likewise. + +2016-11-15 Denis Kaganovich + Magnus Granberg + Mike Frysinger + + [BZ #20662] + * configure.ac (libc_cv_predef_stack_protector): Also check for + __stack_chk_fail_local symbols. + * configure: Regenerated. + +2016-11-03 Joseph Myers + + * conform/Makefile ($(linknamespace-header-tests)): Also depend on + $(linknamespace-symlists-tests). + +2016-11-06 Aurelien Jarno + + * iconv/gconv.h (__gconv_info): Define __data element using a + zero-length array. + +2016-10-25 Joseph Myers + + * sysdeps/powerpc/powerpc32/power6/memset.S (memset): Use cmplwi + instead of cmpli. + * sysdeps/powerpc/powerpc64/power6/memset.S (memset): Use cmpldi + instead of cmpli. + +2016-10-24 Adhemerval Zanella + + * sysdeps/unix/sysv/linux/pread.c (__libc_pread): Use SYSCALL_LL_PRW. + * sysdeps/unix/sysv/linux/pwrite.c (__libc_pwrite): Likewise. + * sysdeps/unix/sysv/linux/pread64.c (__libc_pread64): Use + SYSCALL_LL64_PRW. + * sysdeps/unix/sysv/linux/pwrite64.c (__libc_pwrite64): Likewise. + * sysdeps/unix/sysv/linux/sh/kernel-features.h: Define + __ASSUME_PRW_DUMMY_ARG. + * sysdeps/unix/sysv/linux/sh/pread.c: Remove file. + * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. + * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. + * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. + * sysdeps/unix/sysv/linux/sysdep.h: Define SYSCALL_LL_PRW and + SYSCALL_LL_PRW64 based on __ASSUME_PRW_DUMMY_ARG. + +2016-10-05 Tulio Magno Quites Machado Filho + + * sysdeps/powerpc/fpu/libm-test-ulps: Regenerated. + +2016-09-20 Adhemerval Zanella + + * sysdeps/unix/sysv/linux/spawni.c (__spawnix): Correctly block and unblock + all signals when executing the clone vfork child. + (SIGALL_SET): Remove macro. + + * nptl/Makefile (tests): Add tst-exec5. + * nptl/tst-exec5.c: New file. + * sysdeps/unix/sysv/linux/spawni.c (__spawni): Correctly enable and disable + asynchronous cancellation. + +2016-09-19 Tulio Magno Quites Machado Filho + + [BZ #20615] + * sysdeps/powerpc/powerpc32/power9/multiarch/Implies: Replace + fpu directory by non-fpu. + * sysdeps/powerpc/powerpc64/power9/fpu/Implies: Remove dependency + on non-fpu directory from a fpu directory. + +2016-09-02 Roland McGrath + + * sysdeps/arm/nacl/libc.abilist: Add GLIBC_2.24 A. + + * sysdeps/nacl/dup.c: Add libc_hidden_def. + +2016-09-02 Roland McGrath + + * sysdeps/posix/wait3.c: Don't treat STAT_LOC as a union, since it's + not any more. + +2016-09-02 Roland McGrath + + * sysdeps/nacl/clock.c (clock): nacl_abi_clock_t -> nacl_irt_clock_t + +2016-08-17 Florian Weimer + + Reduce time to expected nptl/tst-once5 failure. + * nptl/tst-once5.cc (TIMEOUT): Define. + +2016-08-18 Florian Weimer + + [BZ #16907] + * argp/argp.h: Switch to __BEGIN_DECLS and __END_DECLS. + (__THROW, __NTH, __attribute__, __restrict): Remove definitions. + * argp/argp-fmtstream.h: Add __BEGIN_DECLS and __END_DECLS. + (__attribute__): Remove definition. + +2016-08-15 Andreas Schwab + + [BZ #20435] + * sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Mark + as .cantunwind. + +2016-08-17 Florian Weimer + + [BZ #20452] + Avoid additional copies of objects in libc.a in static libraries. + * sysdeps/ia64/nptl/Makefile (libpthread-shared-only-routines): + Add ptw-sysdep, ptw-sigblock, ptw-sigprocmask. + * sysdeps/mips/Makefile (librt-shared-only-routines): Add + rt-sysdep. + * sysdeps/mips/nptl/Makefile (libpthread-shared-only-routines): + Add nptl-sysdep. + * sysdeps/s390/nptl/Makefile (libpthread-shared-only-routines): + Add ptw-sysdep. + * sysdeps/unix/alpha/Makefile (librt-shared-only-routines): Add + rt-sysdep. + * sysdeps/unix/sysv/linux/alpha/Makefile + (libpthread-shared-only-routines): Add ptw-sysdep, + ptw-sigprocmask, ptw-rt_sigaction. + * sysdeps/unix/sysv/linux/ia64/Makefile + (librt-shared-only-routines): Add rt-sysdep. + * sysdeps/unix/sysv/linux/i386/Makefile + (libpthread-shared-only-routines): Add libc-do-syscall. + * sysdeps/unix/sysv/linux/microblaze/Makefile + (libpthread-shared-only-routines): Add sysdep. + * sysdeps/unix/sysv/linux/powerpc/Makefile + (librt-shared-only-routines): Add rt-sysdep. + (libpthread-shared-only-routines): Add sysdep. + * sysdeps/unix/sysv/linux/s390/Makefile + (librt-shared-only-routines): Add rt-sysdep. + * sysdeps/unix/sysv/linux/sparc/Makefile + (librt-shared-only-routines): Add rt-sysdep. + (libpthread-shared-only-routines): Add sysdep. + * sysdeps/unix/sysv/linux/tile/Makefile + (libpthread-shared-only-routines): Likewise. + +2016-08-05 Aurelien Jarno + + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile + [$(subdir) = math && $(have-as-vis3) = yes] (libm-sysdep_routines): + Remove s_fdimf-vis3, s_fdim-vis3. + * sysdeps/sparc/sparc32/fpu/s_fdim.S: Delete file. + * sysdeps/sparc/sparc32/fpu/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S: Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S: Likewise. + * sysdeps/sparc/sparc64/fpu/s_fdim.S: Likewise. + * sysdeps/sparc/sparc64/fpu/s_fdimf.S: Likewise. + +2016-08-02 David S. Miller + + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S + (__nearbyint_vis3): Don't check for sNaN before float register is + loaded with the incoming argument. + * sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S + (__nearbyintf_vis3): Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S (__nearbyint): + Likewise. + * sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S (__nearbyintf): + Likewise. + +2016-08-03 Aurelien Jarno + + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Replace beqlr instructions + by beq instructions jumping to the end of the function. + * sysdeps/powerpc/ifunc-sel.h (ifunc_sel): Add "11", "12", "cr0" to the + clobber list. Use "i" constraint instead of "X". + (ifunc_one): Add "12" to the clobber list. Use "i" constraint instead + of "X". + +2016-08-04 Carlos O'Donell + + * po/de.po: Update from Translation Project. + * po/fi.po: Likewise. + * po/sv.po: Likewise. + +2016-08-02 Florian Weimer + + [BZ #20370] + * malloc/arena.c (get_free_list): Update comment. Assert that + arenas on the free list have no attached threads. + (remove_from_free_list): New function. + (reused_arena): Call it. + +2016-08-04 Florian Weimer + + Use sysdep.o from libc.a in static libraries. + * sysdeps/unix/sysv/linux/i386/Makefile + (libpthread-shared-only-routines): Add sysdep. + (librt-shared-only-routines): Likewise. + 2016-08-01 Carlos O'Donell * version.h (RELEASE): Set to "stable" diff --git a/NEWS b/NEWS index b0447e716..4a042dbe2 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,17 @@ See the end for copying conditions. Please send GNU C library bug reports via using `glibc' in the "product" field. + +Version 2.24.1 + +Security related changes: + +* On ARM EABI (32-bit), generating a backtrace for execution contexts which + have been created with makecontext could fail to terminate due to a + missing .cantunwind annotation. This has been observed to lead to a hang + (denial of service) in some Go applications compiled with gccgo. Reported + by Andreas Schwab. (CVE-2016-6323) + Version 2.24 diff --git a/argp/argp-fmtstream.h b/argp/argp-fmtstream.h index bdeaa54dc..e8c5797f3 100644 --- a/argp/argp-fmtstream.h +++ b/argp/argp-fmtstream.h @@ -29,21 +29,6 @@ #include #include -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \ - defined __STRICT_ANSI__ -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \ - defined __STRICT_ANSI__ -# define __format__ format -# define __printf__ printf -# endif -#endif - #if defined (__GNU_LIBRARY__) && defined (HAVE_LINEWRAP_H) /* line_wrap_stream is available, so use that. */ #define ARGP_FMTSTREAM_USE_LINEWRAP @@ -111,6 +96,8 @@ struct argp_fmtstream typedef struct argp_fmtstream *argp_fmtstream_t; +__BEGIN_DECLS + /* Return an argp_fmtstream that outputs to STREAM, and which prefixes lines written on it with LMARGIN spaces and limits them to RMARGIN columns total. If WMARGIN >= 0, words that extend past RMARGIN are wrapped by @@ -297,6 +284,8 @@ __argp_fmtstream_point (argp_fmtstream_t __fs) #endif /* __OPTIMIZE__ */ +__END_DECLS + #endif /* ARGP_FMTSTREAM_USE_LINEWRAP */ #endif /* argp-fmtstream.h */ diff --git a/argp/argp.h b/argp/argp.h index e67bbef73..7cb5a69f0 100644 --- a/argp/argp.h +++ b/argp/argp.h @@ -28,48 +28,12 @@ #define __need_error_t #include -#ifndef __THROW -# define __THROW -#endif -#ifndef __NTH -# define __NTH(fct) fct __THROW -#endif - -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || \ - defined __STRICT_ANSI__ -# define __attribute__(Spec) /* empty */ -# endif -/* The __-protected variants of `format' and `printf' attributes - are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \ - defined __STRICT_ANSI__ -# define __format__ format -# define __printf__ printf -# endif -#endif - -/* GCC 2.95 and later have "__restrict"; C99 compilers have - "restrict", and "configure" may have defined "restrict". */ -#ifndef __restrict -# if ! (2 < __GNUC__ || (2 == __GNUC__ && 95 <= __GNUC_MINOR__)) -# if defined restrict || 199901L <= __STDC_VERSION__ -# define __restrict restrict -# else -# define __restrict -# endif -# endif -#endif - #ifndef __error_t_defined typedef int error_t; # define __error_t_defined #endif -#ifdef __cplusplus -extern "C" { -#endif +__BEGIN_DECLS /* A description of a particular option. A pointer to an array of these is passed in the OPTIONS field of an argp structure. Each option @@ -590,8 +554,6 @@ __NTH (__option_is_end (const struct argp_option *__opt)) # endif #endif /* Use extern inlines. */ -#ifdef __cplusplus -} -#endif +__END_DECLS #endif /* argp.h */ diff --git a/configure b/configure index 17625e104..9b5a48604 100755 --- a/configure +++ b/configure @@ -6289,12 +6289,14 @@ echo >&5 "libc_undefs='$libc_undefs'" # symbols (resolved by the linker), so filter out unknown symbols. # This will fail to produce the correct result if the compiler # defaults to -fstack-protector but this produces an undefined symbol -# other than __stack_chk_fail. However, compilers like that have not -# been encountered in practice. -libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'` +# other than __stack_chk_fail or __stack_chk_fail_local. However, +# compilers like that have not been encountered in practice. +libc_undefs=`echo "$libc_undefs" | \ + egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'` case "$libc_undefs" in foobar) libc_cv_predef_stack_protector=no ;; '__stack_chk_fail +foobar'|'__stack_chk_fail_local foobar') libc_cv_predef_stack_protector=yes ;; *) as_fn_error $? "unexpected symbols in test: $libc_undefs" "$LINENO" 5 ;; esac diff --git a/configure.ac b/configure.ac index 33bcd6218..8277d9f72 100644 --- a/configure.ac +++ b/configure.ac @@ -1626,12 +1626,14 @@ echo >&AS_MESSAGE_LOG_FD "libc_undefs='$libc_undefs'" # symbols (resolved by the linker), so filter out unknown symbols. # This will fail to produce the correct result if the compiler # defaults to -fstack-protector but this produces an undefined symbol -# other than __stack_chk_fail. However, compilers like that have not -# been encountered in practice. -libc_undefs=`echo "$libc_undefs" | egrep '^(foobar|__stack_chk_fail)$'` +# other than __stack_chk_fail or __stack_chk_fail_local. However, +# compilers like that have not been encountered in practice. +libc_undefs=`echo "$libc_undefs" | \ + egrep '^(foobar|__stack_chk_fail|__stack_chk_fail_local)$'` case "$libc_undefs" in foobar) libc_cv_predef_stack_protector=no ;; '__stack_chk_fail +foobar'|'__stack_chk_fail_local foobar') libc_cv_predef_stack_protector=yes ;; *) AC_MSG_ERROR([unexpected symbols in test: $libc_undefs]) ;; esac], diff --git a/conform/Makefile b/conform/Makefile index 32a0937b0..762aac98f 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -229,6 +229,7 @@ $(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \ $(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \ linknamespace.pl \ + $(linknamespace-symlists-tests) \ $(linknamespace-symlist-stdlibs-tests) (set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \ mkdir -p $(@D)/scratch; \ diff --git a/iconv/gconv.h b/iconv/gconv.h index 8d8ce5813..a87028047 100644 --- a/iconv/gconv.h +++ b/iconv/gconv.h @@ -139,7 +139,7 @@ typedef struct __gconv_info { size_t __nsteps; struct __gconv_step *__steps; - __extension__ struct __gconv_step_data __data __flexarr; + __extension__ struct __gconv_step_data __data[0]; } *__gconv_t; /* Transliteration using the locale's data. */ diff --git a/malloc/arena.c b/malloc/arena.c index 229783f3b..4e16593d8 100644 --- a/malloc/arena.c +++ b/malloc/arena.c @@ -702,8 +702,7 @@ _int_new_arena (size_t size) } -/* Remove an arena from free_list. The arena may be in use because it - was attached concurrently to a thread by reused_arena below. */ +/* Remove an arena from free_list. */ static mstate get_free_list (void) { @@ -718,7 +717,8 @@ get_free_list (void) free_list = result->next_free; /* The arena will be attached to this thread. */ - ++result->attached_threads; + assert (result->attached_threads == 0); + result->attached_threads = 1; detach_arena (replaced_arena); } @@ -735,6 +735,26 @@ get_free_list (void) return result; } +/* Remove the arena from the free list (if it is present). + free_list_lock must have been acquired by the caller. */ +static void +remove_from_free_list (mstate arena) +{ + mstate *previous = &free_list; + for (mstate p = free_list; p != NULL; p = p->next_free) + { + assert (p->attached_threads == 0); + if (p == arena) + { + /* Remove the requested arena from the list. */ + *previous = p->next_free; + break; + } + else + previous = &p->next_free; + } +} + /* Lock and return an arena that can be reused for memory allocation. Avoid AVOID_ARENA as we have already failed to allocate memory in it and it is currently locked. */ @@ -782,14 +802,25 @@ reused_arena (mstate avoid_arena) (void) mutex_lock (&result->mutex); out: - /* Attach the arena to the current thread. Note that we may have - selected an arena which was on free_list. */ + /* Attach the arena to the current thread. */ { /* Update the arena thread attachment counters. */ mstate replaced_arena = thread_arena; (void) mutex_lock (&free_list_lock); detach_arena (replaced_arena); + + /* We may have picked up an arena on the free list. We need to + preserve the invariant that no arena on the free list has a + positive attached_threads counter (otherwise, + arena_thread_freeres cannot use the counter to determine if the + arena needs to be put on the free list). We unconditionally + remove the selected arena from the free list. The caller of + reused_arena checked the free list and observed it to be empty, + so the list is very short. */ + remove_from_free_list (result); + ++result->attached_threads; + (void) mutex_unlock (&free_list_lock); } diff --git a/nptl/Makefile b/nptl/Makefile index 0d8aadebe..fa925819c 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -268,7 +268,7 @@ tests = tst-typesizes \ tst-flock1 tst-flock2 \ tst-signal1 tst-signal2 tst-signal3 tst-signal4 tst-signal5 \ tst-signal6 tst-signal7 \ - tst-exec1 tst-exec2 tst-exec3 tst-exec4 \ + tst-exec1 tst-exec2 tst-exec3 tst-exec4 tst-exec5 \ tst-exit1 tst-exit2 tst-exit3 \ tst-stdio1 tst-stdio2 \ tst-stack1 tst-stack2 tst-stack3 tst-stack4 tst-pthread-getattr \ diff --git a/nptl/tst-exec5.c b/nptl/tst-exec5.c new file mode 100644 index 000000000..4327d8d41 --- /dev/null +++ b/nptl/tst-exec5.c @@ -0,0 +1,196 @@ +/* Check if posix_spawn does not act as a cancellation entrypoint. + Copyright (C) 2016 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 + . */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static int do_test (void); +#define TEST_FUNCTION do_test () +#include + +static pthread_barrier_t b; + +static pid_t pid; +static int pipefd[2]; + +static void * +tf (void *arg) +{ + int r = pthread_barrier_wait (&b); + if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) + { + puts ("error: pthread_barrier_wait failed"); + exit (1); + } + + posix_spawn_file_actions_t a; + if (posix_spawn_file_actions_init (&a) != 0) + { + puts ("error: spawn_file_actions_init failed"); + exit (1); + } + + if (posix_spawn_file_actions_adddup2 (&a, pipefd[1], STDOUT_FILENO) != 0) + { + puts ("error: spawn_file_actions_adddup2 failed"); + exit (1); + } + + if (posix_spawn_file_actions_addclose (&a, pipefd[0]) != 0) + { + puts ("error: spawn_file_actions_addclose"); + exit (1); + } + + char *argv[] = { (char *) _PATH_BSHELL, (char *) "-c", (char *) "echo $$", + NULL }; + if (posix_spawn (&pid, _PATH_BSHELL, &a, NULL, argv, NULL) != 0) + { + puts ("error: spawn failed"); + exit (1); + } + + return NULL; +} + + +static int +do_test (void) +{ + /* The test basically pipe a 'echo $$' created by a thread with a + cancellation pending. It then checks if the thread is not cancelled, + the process is created and if the output is the expected one. */ + + if (pipe (pipefd) != 0) + { + puts ("error: pipe failed"); + exit (1); + } + + /* Not interested in knowing when the pipe is closed. */ + if (sigignore (SIGPIPE) != 0) + { + puts ("error: sigignore failed"); + exit (1); + } + + /* To synchronize with the thread. */ + if (pthread_barrier_init (&b, NULL, 2) != 0) + { + puts ("error: pthread_barrier_init failed"); + exit (1); + } + + pthread_t th; + if (pthread_create (&th, NULL, &tf, NULL) != 0) + { + puts ("error: pthread_create failed"); + exit (1); + } + + if (pthread_cancel (th) != 0) + { + puts ("error: pthread_cancel failed"); + exit (1); + } + + int r = pthread_barrier_wait (&b); + if (r != 0 && r != PTHREAD_BARRIER_SERIAL_THREAD) + { + puts ("error: pthread_barrier_wait"); + exit (1); + } + + void *retval; + if (pthread_join (th, &retval) != 0) + { + puts ("error: pthread_join failed\n"); + } + if (retval == PTHREAD_CANCELED) + { + puts ("error: thread cancelled"); + exit (1); + } + + close (pipefd[1]); + + /* The global 'pid' should be set by thread posix_spawn calling. Check + below if it was executed correctly and with expected output. */ + + char buf[64]; + ssize_t n; + bool seen_pid = false; + while (TEMP_FAILURE_RETRY ((n = read (pipefd[0], buf, sizeof (buf)))) > 0) + { + /* We only expect to read the PID. */ + char *endp; + long int rpid = strtol (buf, &endp, 10); + + if (*endp != '\n') + { + printf ("error: didn't parse whole line: \"%s\"\n", buf); + exit (1); + } + if (endp == buf) + { + puts ("error: read empty line"); + exit (1); + } + + if (rpid != pid) + { + printf ("error: found \"%s\", expected PID %ld\n", buf, + (long int) pid); + exit (1); + } + + if (seen_pid) + { + puts ("error: found more than one PID line"); + exit (1); + } + + seen_pid = true; + } + + close (pipefd[0]); + + int status; + int err = waitpid (pid, &status, 0); + if (err != pid) + { + puts ("errnor: waitpid failed"); + exit (1); + } + + if (!seen_pid) + { + puts ("error: didn't get PID"); + exit (1); + } + + return 0; +} diff --git a/nptl/tst-once5.cc b/nptl/tst-once5.cc index 978d8271b..513ac53f6 100644 --- a/nptl/tst-once5.cc +++ b/nptl/tst-once5.cc @@ -75,5 +75,7 @@ do_test (void) return result; } +// The test currently hangs and is XFAILed. Reduce the timeout. +#define TIMEOUT 1 #define TEST_FUNCTION do_test () #include "../test-skeleton.c" diff --git a/po/de.po b/po/de.po index 1383e8c4a..ca14c7e38 100644 --- a/po/de.po +++ b/po/de.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU libc 2.22-pre1\n" "POT-Creation-Date: 2015-07-31 00:10-0400\n" -"PO-Revision-Date: 2015-08-31 18:30+0200\n" +"PO-Revision-Date: 2016-04-22 18:44+0200\n" "Last-Translator: Jochen Hein \n" "Language-Team: German \n" "Language: de\n" @@ -4479,13 +4479,13 @@ msgstr "" "%15s Cache ist dauerhaft\n" "%15s Cache wird gemeinsam verwendet\n" "%15Zu vorgeschlagene Größe\n" -"%15Zu Gesamtröße des Data-Pools\n" +"%15Zu Gesamtgröße des Data-Pools\n" "%15Zu Benutzter Speicher im Data-Pool\n" "%15lu Time to Live für positive Einträge in Sekunden\n" "%15lu Time to Live für negative Einträge in Sekunden\n" "%15 Cache-Hits bei positiven Einträgen\n" "%15 Cache-Hits bei positiven Einträgen\n" -"%15 Cache-Misses bei positiven Einträgen\n" +"%15 Cache-Misses bei positiven Einträgen\n" "%15 Cache-Misses bei negativen Einträgen\n" "%15lu%% Cache-Hit Verhältnis\n" "%15zu aktuelle Anzahl der Werte im Cache\n" diff --git a/po/fi.po b/po/fi.po index 17cb3e3e1..8a2ab8358 100644 --- a/po/fi.po +++ b/po/fi.po @@ -24,16 +24,16 @@ # msgid "" msgstr "" -"Project-Id-Version: libc 2.21-pre1\n" +"Project-Id-Version: libc 2.22-pre1\n" "POT-Creation-Date: 2015-07-31 00:10-0400\n" -"PO-Revision-Date: 2015-07-28 20:29+0300\n" +"PO-Revision-Date: 2016-05-26 21:14+0300\n" "Last-Translator: Lauri Nurmi \n" "Language-Team: Finnish \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.3\n" +"X-Generator: Poedit 1.8.7\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: argp/argp-help.c:227 @@ -126,7 +126,7 @@ msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n" msgstr "%s%s%s:%u: %s%sOdottamaton virhe: %s.\n" #: assert/assert.c:101 -#, fuzzy, c-format +#, c-format msgid "" "%s%s%s:%u: %s%sAssertion `%s' failed.\n" "%n" @@ -169,12 +169,12 @@ msgstr "" #: malloc/memusagestat.c:563 nss/getent.c:973 nss/makedb.c:369 #: posix/getconf.c:486 sunrpc/rpcinfo.c:691 #: sysdeps/unix/sysv/linux/lddlibc4.c:61 -#, fuzzy, c-format +#, c-format msgid "" "For bug reporting instructions, please see:\n" "%s.\n" msgstr "" -"Ohjeet ohjelmistovioista ilmoittamiseen ovat osoitteessa\n" +"Katso ohjeet vikailmoitusten tekemiseen osoitteesta:\n" "%s.\n" #: catgets/gencat.c:245 debug/pcprofiledump.c:225 debug/xtrace.sh:64 @@ -321,9 +321,8 @@ msgstr "Käyttö: xtrace [VALITSIN]... OHJELMA [OHJELMANVALITSIN]...\\n" #: debug/xtrace.sh:32 elf/sotruss.sh:56 elf/sotruss.sh:67 elf/sotruss.sh:135 #: malloc/memusage.sh:26 -#, fuzzy msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n" -msgstr "Kokeile ”%s --help” tai ”%s --usage” saadaksesi lisää tietoa.\n" +msgstr "Kokeile ”%s --help” tai ”%s --usage” saadaksesi lisää tietoa.\\n" #: debug/xtrace.sh:38 #, fuzzy @@ -594,9 +593,8 @@ msgid "cannot enable executable stack as shared object requires" msgstr "jaettua objektikahvaa ei voi luoda" #: elf/dl-load.c:1339 -#, fuzzy msgid "cannot close file descriptor" -msgstr "tiedostoa %s ei voi sulkea" +msgstr "tiedostokahvaa ei voi sulkea" #: elf/dl-load.c:1568 msgid "file too short" @@ -796,9 +794,8 @@ msgid "Format to use: new, old or compat (default)" msgstr "Käytettävä muoto: ”new”, ”old” tai ”compat” (oletus)" #: elf/ldconfig.c:151 -#, fuzzy msgid "Ignore auxiliary cache file" -msgstr "Käytä CACHEa välimuistitiedostona" +msgstr "Jätä huomiotta apuvälimuistitiedosto" #: elf/ldconfig.c:159 msgid "Configure Dynamic Linker Run Time Bindings." @@ -1087,9 +1084,9 @@ msgid "invalid process ID '%s'" msgstr "virheellinen prosessi-ID ”%s”" #: elf/pldd.c:120 -#, fuzzy, c-format +#, c-format msgid "cannot open %s" -msgstr "laitetta %s ei voi avata" +msgstr "tiedostoa %s ei voi avata" #: elf/pldd.c:152 #, fuzzy, c-format @@ -1102,24 +1099,24 @@ msgid "cannot prepare reading %s/task" msgstr "ei voi avata laitetta %s lukutilaan" #: elf/pldd.c:168 -#, fuzzy, c-format +#, c-format msgid "invalid thread ID '%s'" -msgstr "virheellinen prosessi-ID ”%s”" +msgstr "virheellinen säie-ID ”%s”" #: elf/pldd.c:179 -#, fuzzy, c-format +#, c-format msgid "cannot attach to process %lu" -msgstr "tiedostoa ”%s” ei voi avata" +msgstr "ei voida kiinnittyä prosessiin %lu" #: elf/pldd.c:294 #, c-format msgid "cannot get information about process %lu" -msgstr "" +msgstr "tietojen saaminen prosessista %lu ei onnistu" #: elf/pldd.c:307 -#, fuzzy, c-format +#, c-format msgid "process %lu is no ELF program" -msgstr "ohjelma %lu ei ole käytettävissä\n" +msgstr "prosessi %lu ei ole ELF-ohjelma" #: elf/readelflib.c:34 #, c-format @@ -1203,7 +1200,7 @@ msgstr "%s kohde ei saa olla hakemisto\n" #: elf/sln.c:184 #, c-format msgid "%s: failed to remove the old destination\n" -msgstr "" +msgstr "%s: vanhan kohteen poistaminen epäonnistui\n" #: elf/sln.c:192 #, c-format @@ -1237,9 +1234,8 @@ msgid "Mandatory arguments to long options are also mandatory for any correspond msgstr "Pakolliset argumentit pitkille valitsimille ovat pakollisia kaikille vastaaville lyhyille valitsimille.\\n" #: elf/sotruss.sh:55 -#, fuzzy msgid "%s: option requires an argument -- '%s'\\n" -msgstr "%s: valitsin ”%s” vaatii argumentin\n" +msgstr "%s: valitsin vaatii argumentin -- ”%c”\\n" #: elf/sotruss.sh:61 msgid "%s: option is ambiguous; possibilities:" @@ -1507,7 +1503,6 @@ msgid "unknown iconv() error %d" msgstr "tuntematon iconv()-virhe %d" #: iconv/iconv_prog.c:791 -#, fuzzy msgid "" "The following list contains all the coded character sets known. This does\n" "not necessarily mean that all combinations of these names can be used for\n" @@ -1516,9 +1511,9 @@ msgid "" "\n" " " msgstr "" -"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Se ei\n" +"Seuraavassa listassa ovat kaikki tunnetut koodatut merkistöt. Tämä ei\n" "kuitenkaan välttämättä tarkoita sitä, että kaikkia näiden nimien\n" -"yhdistelmiä voidaan käyttää FROM- ja TO-komentoriviparametreina. Yksi\n" +"yhdistelmiä voisi käyttää FROM- ja TO-komentoriviparametreina. Yksi\n" "koodattu merkistö voi olla listalla useilla eri nimillä (aliaksilla).\n" "\n" " " @@ -2733,14 +2728,12 @@ msgid "locale.alias file to consult when making archive" msgstr "Arkistoa luotaessa käytettävä locale.alias-tiedosto" #: locale/programs/localedef.c:150 -#, fuzzy msgid "Generate little-endian output" -msgstr "Tuota little-endian-koodia" +msgstr "Tuota little-endian-muotoa" #: locale/programs/localedef.c:152 -#, fuzzy msgid "Generate big-endian output" -msgstr "Tuota big-endian-koodia" +msgstr "Tuota big-endian-muotoa" #: locale/programs/localedef.c:157 msgid "Compile locale specification" @@ -4275,10 +4268,9 @@ msgid "" msgstr "" #: nscd/nscd.c:635 -#, fuzzy, c-format -#| msgid "lstat failed" +#, c-format msgid "'wait' failed\n" -msgstr "tiedoston tilan luku epäonnistui" +msgstr "”wait” epäonnistui\n" #: nscd/nscd.c:642 #, c-format @@ -4670,9 +4662,9 @@ msgid "cannot create temporary file" msgstr "tilapäistä tiedostoa ei voi luoda" #: nss/makedb.c:304 -#, fuzzy, c-format +#, c-format msgid "cannot stat newly created file" -msgstr "tiedoston ”%s” tilaa ei voi lukea: %s" +msgstr "juuri luodun tiedoston tilaa ei voi lukea" #: nss/makedb.c:315 #, c-format @@ -4680,9 +4672,9 @@ msgid "cannot rename temporary file" msgstr "tilapäistä tiedostoa ei voi nimetä uudelleen" #: nss/makedb.c:531 nss/makedb.c:554 -#, fuzzy, c-format +#, c-format msgid "cannot create search tree" -msgstr "hakupolulle ei voi luoda välimuistia" +msgstr "hakupuuta ei voi luoda" #: nss/makedb.c:560 msgid "duplicate key" @@ -4699,9 +4691,9 @@ msgid "failed to write new database file" msgstr "uuden tietokantatiedoston kirjoittaminen epäonnistui" #: nss/makedb.c:812 -#, fuzzy, c-format +#, c-format msgid "cannot stat database file" -msgstr "tiedoston ”%s” tilaa ei voi lukea: %s" +msgstr "tietokantatiedoston tilaa ei voi lukea" #: nss/makedb.c:817 #, fuzzy, c-format @@ -4709,9 +4701,9 @@ msgid "cannot map database file" msgstr "Karttatietokannassa ei ole enempää tietueita" #: nss/makedb.c:820 -#, fuzzy, c-format +#, c-format msgid "file not a database file" -msgstr "luettaessa profilointidatatiedoston tilaa" +msgstr "tiedosto ei ole tietokantatiedosto" #: nss/makedb.c:871 #, fuzzy, c-format @@ -4726,7 +4718,7 @@ msgstr "Käyttö: %s [-v määrittely] muuttujanimi [polku]\n" #: posix/getconf.c:403 #, c-format msgid " %s -a [pathname]\n" -msgstr "" +msgstr " %s -a [polku]\n" #: posix/getconf.c:479 #, c-format @@ -5094,11 +5086,11 @@ msgstr "Laitetta irrotettu" #: stdio-common/psiginfo.c:139 msgid "Signal sent by kill()" -msgstr "" +msgstr "Signaalin lähetti kill()" #: stdio-common/psiginfo.c:142 msgid "Signal sent by sigqueue()" -msgstr "" +msgstr "Signaalin lähetti sigqueue()" #: stdio-common/psiginfo.c:145 msgid "Signal generated by the expiration of a timer" @@ -5114,7 +5106,7 @@ msgstr "" #: stdio-common/psiginfo.c:157 msgid "Signal sent by tkill()" -msgstr "" +msgstr "Signaalin lähetti tkill()" #: stdio-common/psiginfo.c:162 msgid "Signal generated by the completion of an asynchronous name lookup request" @@ -5296,9 +5288,8 @@ msgid "Failed (unspecified error)" msgstr "Epäonnistui (määrittelemätön virhe)" #: sunrpc/clnt_raw.c:115 -#, fuzzy msgid "clnt_raw.c: fatal header serialization error" -msgstr "clnt_raw.c: vakava otsikon serialisointivirhe" +msgstr "clnt_raw.c: vakava otsikon sarjallistamisvirhe" #: sunrpc/pm_getmaps.c:77 msgid "pmap_getmaps.c: rpc problem" @@ -6825,9 +6816,8 @@ msgid "Interrupted by a signal" msgstr "Signaalin keskeyttämä" #: sysdeps/posix/gai_strerror-strs.h:17 -#, fuzzy msgid "Parameter string not correctly encoded" -msgstr "Parametrimerkkijono on väärin koodattu" +msgstr "Parametrimerkkijono ei ole koodattu oikein" #: sysdeps/unix/sysv/linux/i386/readelflib.c:65 #, c-format diff --git a/po/sv.po b/po/sv.po index 49d1f2390..e046577b0 100644 --- a/po/sv.po +++ b/po/sv.po @@ -1,13 +1,17 @@ # GNU libc message catalog for Swedish -# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc. +# Copyright © 1996, 1998, 2001, 2002, 2003, 2006, 2008, 2009, 2011, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the glibc package. -# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015 +# +# Jan Djärv , 1996, 1998, 2001, 2002, 2003, 2006, 2007, 2008, 2009, 2011, 2012, 2013, 2014, 2015. +# Göran Uddeborg , 2016. +# +# $Revision: 1.3 $ msgid "" msgstr "" -"Project-Id-Version: libc 2.21-pre1\n" +"Project-Id-Version: libc 2.22-pre1\n" "POT-Creation-Date: 2015-07-31 00:10-0400\n" -"PO-Revision-Date: 2015-01-24 10:35+0100\n" -"Last-Translator: Jan Djärv \n" +"PO-Revision-Date: 2016-08-02 17:17+0200\n" +"Last-Translator: Göran Uddeborg \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" @@ -48,7 +52,7 @@ msgstr " [FLAGGA...]" #: argp/argp-help.c:1643 #, c-format msgid "Try `%s --help' or `%s --usage' for more information.\n" -msgstr "Försök med \"%s --help\" eller \"%s --usage\" för mer information\n" +msgstr "Försök med ”%s --help” eller ”%s --usage” för mer information.\n" #: argp/argp-help.c:1671 #, c-format @@ -304,11 +308,11 @@ msgstr "Användning: xtrace [FLAGGA]... PROGRAM [PROGRAMFLAGGA}...\\n" #: debug/xtrace.sh:32 elf/sotruss.sh:56 elf/sotruss.sh:67 elf/sotruss.sh:135 #: malloc/memusage.sh:26 msgid "Try \\`%s --help' or \\`%s --usage' for more information.\\n" -msgstr "Försök med \\\"%s --help\\\" eller \\\"%s --usage\\\" för mer information\\n" +msgstr "Försök med ”%s --help” eller ”%s --usage” för mer information\\n" #: debug/xtrace.sh:38 msgid "%s: option '%s' requires an argument.\\n" -msgstr "%s: flaggan \\\"%s\\\" kräver ett argument\\n" +msgstr "%s: flaggan ”%s” kräver ett argument.\\n" #: debug/xtrace.sh:45 msgid "" @@ -332,19 +336,17 @@ msgstr "" " --usage Visa en kort hjälptext\n" " -V,--version Visa versionsinformation och avsluta\n" "\n" -"Obligatoriska argument för långa flaggor är obligatoriska även för\n" +"Obligatoriska argument för långa flaggor är obligatoriska även för\n" "motsvarande korta.\n" #: debug/xtrace.sh:57 elf/ldd.bash.in:55 elf/sotruss.sh:49 #: malloc/memusage.sh:64 msgid "For bug reporting instructions, please see:\\\\n%s.\\\\n" -msgstr "" -"För felrapporteringsinstruktioner, se:\\\\n%s.\\\\n\n" -"Rapportera fel eller synpunkter på översättningen till .\\\\n" +msgstr "För felrapporteringsinstruktioner, se:\\\\n%s.\\\\nRapportera fel eller synpunkter på översättningen till:\\\\n.\\\\n" #: debug/xtrace.sh:125 msgid "xtrace: unrecognized option \\`$1'\\n" -msgstr "xtrace: okänd flagga \"$1\"\\n" +msgstr "xtrace: okänd flagga ”$1”\\n" #: debug/xtrace.sh:138 msgid "No program name given\\n" @@ -353,12 +355,12 @@ msgstr "Inget programnamn givet\\n" #: debug/xtrace.sh:146 #, sh-format msgid "executable \\`$program' not found\\n" -msgstr "program \"$program\" hittades inte\\n" +msgstr "program ”$program” hittades inte\\n" #: debug/xtrace.sh:150 #, sh-format msgid "\\`$program' is no executable\\n" -msgstr "\"$program\" är inte en körbar binär\\n" +msgstr "”$program” är inte en körbar binär\\n" #: dlfcn/dlinfo.c:63 msgid "RTLD_SELF used in code not dynamically loaded" @@ -396,7 +398,7 @@ msgstr ", OS ABI: %s %d.%d.%d" #: elf/cache.c:157 elf/ldconfig.c:1340 #, c-format msgid "Can't open cache file %s\n" -msgstr "Kan inte öppna cache-fil \"%s\"\n" +msgstr "Kan inte öppna cache-filen %s\n" #: elf/cache.c:171 #, c-format @@ -416,7 +418,7 @@ msgstr "%d bibliotek hittades i cache \"%s\"\n" #: elf/cache.c:426 #, c-format msgid "Can't create temporary cache file %s" -msgstr "Kan inte skapa temporär cache-fil \"%s\"" +msgstr "Kan inte skapa en temporär cache-fil %s" #: elf/cache.c:434 elf/cache.c:444 elf/cache.c:448 elf/cache.c:453 #, c-format @@ -829,7 +831,7 @@ msgstr "Kan inte ta status (lstat) på %s" #: elf/ldconfig.c:609 #, c-format msgid "Ignored file %s since it is not a regular file." -msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil" +msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil." #: elf/ldconfig.c:618 #, c-format @@ -951,7 +953,7 @@ msgstr "" #: elf/ldd.bash.in:80 msgid "ldd: option \\`$1' is ambiguous" -msgstr "ldd: flaggan \"$1\" är tvetydig" +msgstr "ldd: flaggan ”$1” är tvetydig" #: elf/ldd.bash.in:87 msgid "unrecognized option" @@ -959,7 +961,7 @@ msgstr "okänd flagga" #: elf/ldd.bash.in:88 elf/ldd.bash.in:125 msgid "Try \\`ldd --help' for more information." -msgstr "Försök med \"ldd --help\" för mer information" +msgstr "Försök med \"ldd --help\" för mer information." #: elf/ldd.bash.in:124 msgid "missing file arguments" @@ -1028,10 +1030,9 @@ msgid "cannot read object name" msgstr "kan inte läsa objektnamn" #: elf/pldd-xx.c:219 -#, fuzzy, c-format -#| msgid "cannot allocate memory for program header" +#, c-format msgid "cannot allocate buffer for object name" -msgstr "kan inte allokera minne för programhuvud" +msgstr "kan inte allokera en buffert för objektnamn" #: elf/pldd.c:64 msgid "List dynamic shared objects loaded into process." @@ -1212,11 +1213,11 @@ msgstr "" #: elf/sotruss.sh:46 msgid "Mandatory arguments to long options are also mandatory for any corresponding\\nshort options.\\n" -msgstr "Obligatoriska respektive valfria argument för långa flaggor är obligatoriska respektive\\nvalfria även för korta.\\n" +msgstr "Obligatoriska respektive valfria argument för långa flaggor är obligatoriska\\nrespektive valfria även för korta.\\n" #: elf/sotruss.sh:55 msgid "%s: option requires an argument -- '%s'\\n" -msgstr "%s: flaggan kräver ett argument -- \\\"%s\\\"\\n" +msgstr "%s: flaggan kräver ett argument — ”%s”\\n" #: elf/sotruss.sh:61 msgid "%s: option is ambiguous; possibilities:" @@ -1240,7 +1241,7 @@ msgstr "" #: elf/sotruss.sh:134 msgid "%s: unrecognized option '%c%s'\\n" -msgstr "%s: okänd flagga \\\"%c%s\\\"\\n" +msgstr "%s: okänd flagga ”%c%s”\\n" #: elf/sprof.c:77 msgid "Output selection:" @@ -1260,7 +1261,7 @@ msgstr "generera anropsgraf" #: elf/sprof.c:89 msgid "Read and display shared object profiling data." -msgstr "Läs och visa profildata för delat objekt" +msgstr "Läs och visa profildata för delat objekt." #: elf/sprof.c:94 msgid "SHOBJ [PROFDATA]" @@ -1622,7 +1623,7 @@ msgstr "Fel: .netrc kan läsas av andra." #: inet/ruserpass.c:185 msgid "Remove password or make file unreadable by others." -msgstr "Ta bort lösenord eller gör filen oläsbar för andra" +msgstr "Ta bort lösenord eller gör filen oläsbar för andra." #: inet/ruserpass.c:277 #, c-format @@ -2182,12 +2183,12 @@ msgstr "Inget namn definierat i teckenuppsättning" #: locale/programs/ld-ctype.c:479 #, c-format msgid "character L'\\u%0*x' in class `%s' must be in class `%s'" -msgstr "tecken L\"\\u%0*x\" i klass \"%s\" måste vara i klass \"%s\"" +msgstr "tecken L'\\u%0*x' i klassen ”%s” måste vara i klassen ”%s”" #: locale/programs/ld-ctype.c:494 #, c-format msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'" -msgstr "tecken L\"\\u%0*x\" i klass \"%s\" får inte vara i klass \"%s\"" +msgstr "tecken L'\\u%0*x' i klassen ”%s” får inte vara i klassen ”%s”" #: locale/programs/ld-ctype.c:508 locale/programs/ld-ctype.c:566 #, c-format @@ -2611,7 +2612,7 @@ msgstr "Skriv mer information" #: locale/programs/locale.c:85 msgid "Get locale-specific information." -msgstr "Hämta lokalspecifik information" +msgstr "Hämta lokalspecifik information." #: locale/programs/locale.c:88 msgid "" @@ -3022,7 +3023,7 @@ msgstr "felaktig mcheck_status, biblioteket är felaktigt\n" #: malloc/memusage.sh:32 msgid "%s: option '%s' requires an argument\\n" -msgstr "%s: flaggan \\\"%s\\\" kräver ett argument\\n" +msgstr "%s: flaggan ”%s” kräver ett argument\\n" #: malloc/memusage.sh:38 msgid "" @@ -3091,11 +3092,11 @@ msgstr "" #: malloc/memusage.sh:191 msgid "memusage: option \\`${1##*=}' is ambiguous" -msgstr "memusage: flaggan \"${1##*=}\" är tvetydig" +msgstr "memusage: flaggan ”${1##*=}” är tvetydig" #: malloc/memusage.sh:200 msgid "memusage: unrecognized option \\`$1'" -msgstr "memusage: okänd flagga \"$1\"" +msgstr "memusage: okänd flagga ”$1”" #: malloc/memusage.sh:213 msgid "No program name given" @@ -3341,7 +3342,7 @@ msgstr "Kan inte skapa process hos server" #: nis/nis_error.h:48 msgid "Master server busy, full dump rescheduled." -msgstr "Huvudserver är upptagen, full dump åter schemalagd" +msgstr "Huvudserver är upptagen, full dump åter schemalagd." #: nis/nis_local_names.c:121 #, c-format @@ -3511,7 +3512,7 @@ msgstr "\t\tRättigheter : " #: nis/nis_print.c:290 msgid "Linked Object Type : " -msgstr "Länkad objekttyp: " +msgstr "Länkad objekttyp : " #: nis/nis_print.c:292 #, c-format @@ -3802,15 +3803,14 @@ msgid " (first)" msgstr " (första)" #: nscd/cache.c:288 -#, fuzzy, c-format -#| msgid "cannot stat() file `%s': %s" +#, c-format msgid "checking for monitored file `%s': %s" -msgstr "kan inte ta status på fil \"%s\": %s" +msgstr "kontrollerar den övervakade filen ”%s”: %s" #: nscd/cache.c:298 #, c-format msgid "monitored file `%s` changed (mtime)" -msgstr "" +msgstr "den övervakade filen ”%s” ändrades (mtime)" #: nscd/cache.c:341 #, c-format @@ -3906,34 +3906,32 @@ msgstr "kan inte få uttag (socket) att acceptera förbindelser: %s" #: nscd/connections.c:973 #, c-format msgid "disabled inotify-based monitoring for file `%s': %s" -msgstr "" +msgstr "avaktiverade inotify-baserad övervakning för filen ”%s”: %s" #: nscd/connections.c:977 #, c-format msgid "monitoring file `%s` (%d)" -msgstr "" +msgstr "övervakar filen ”%s” (%d)" #: nscd/connections.c:990 #, c-format msgid "disabled inotify-based monitoring for directory `%s': %s" -msgstr "" +msgstr "avaktiverade inotify-baserad övervakning av katalogen ”%s”: %s" #: nscd/connections.c:994 -#, fuzzy, c-format -#| msgid "Can't open directory %s" +#, c-format msgid "monitoring directory `%s` (%d)" -msgstr "Kan inte öppna katalog %s" +msgstr "övervakar katalogen ”%s” (%d)" #: nscd/connections.c:1022 -#, fuzzy, c-format -#| msgid "register trace file %s for database %s" +#, c-format msgid "monitoring file %s for database %s" -msgstr "registrera spårningsfil %s för databas %s" +msgstr "övervakar filen %s för databas %s" #: nscd/connections.c:1032 #, c-format msgid "stat failed for file `%s'; will try again later: %s" -msgstr "" +msgstr "stat misslyckades för filen ”%s”; kommer försöka igen senare: %s" #: nscd/connections.c:1151 #, c-format @@ -4032,44 +4030,42 @@ msgstr "handle_request: begäran mottagen (Version = %d)" #: nscd/connections.c:1963 #, c-format msgid "ignored inotify event for `%s` (file exists)" -msgstr "" +msgstr "ignorerade inotify-händelse för ”%s” (filen finns)" #: nscd/connections.c:1968 #, c-format msgid "monitored file `%s` was %s, removing watch" -msgstr "" +msgstr "den övervakade filen ”%s” var %s, tar bort vakten" #: nscd/connections.c:1976 nscd/connections.c:2018 #, c-format msgid "failed to remove file watch `%s`: %s" -msgstr "" +msgstr "misslyckades att ta bort filvakt ”%s”: %s" #: nscd/connections.c:1991 #, c-format msgid "monitored file `%s` was written to" -msgstr "" +msgstr "den övervakade filen ”%s” skrevs till" #: nscd/connections.c:2015 #, c-format msgid "monitored parent directory `%s` was %s, removing watch on `%s`" -msgstr "" +msgstr "den övervakade föräldrakatalogen ”%s” var %s, tar bort vakten av ”%s”" #: nscd/connections.c:2041 #, c-format msgid "monitored file `%s` was %s, adding watch" -msgstr "" +msgstr "den övervakade filen ”%s” var %s, lägger till vakt" #: nscd/connections.c:2053 -#, fuzzy, c-format -#| msgid "failed to load shared object `%s'" +#, c-format msgid "failed to add file watch `%s`: %s" -msgstr "misslyckades med att ladda delat objekt \"%s\"" +msgstr "misslyckades med att lägga till filvakt ”%s”: %s" #: nscd/connections.c:2247 nscd/connections.c:2428 -#, fuzzy, c-format -#| msgid "disabled inotify after read error %d" +#, c-format msgid "disabled inotify-based monitoring after read error %d" -msgstr "inaktiverade inotify efter läsfel %d" +msgstr "avaktiverade inotify-baserad övervakning efter läsfel %d" #: nscd/connections.c:2543 msgid "could not initialize conditional variable" @@ -4199,7 +4195,7 @@ msgstr "Använd separat cache för varje användare" #: nscd/nscd.c:122 msgid "Name Service Cache Daemon." -msgstr "Namntjänst cache-demon" +msgstr "Cache-demon för namntjänsten." #: nscd/nscd.c:155 nss/getent.c:1007 nss/makedb.c:206 #, c-format @@ -4531,11 +4527,11 @@ msgstr "Access Vector Cache (AVC) startad" #: nscd/selinux.c:368 msgid "Error querying policy for undefined object classes or permissions." -msgstr "Fel när policy för odefinierade objektklasser eller rättigheter hämtades" +msgstr "Fel när policy för odefinierade objektklasser eller rättigheter hämtades." #: nscd/selinux.c:375 msgid "Error getting security class for nscd." -msgstr "Fel när säkerhetsklass för nscd hämtades" +msgstr "Fel när säkerhetsklass för nscd hämtades." #: nscd/selinux.c:380 #, c-format @@ -4609,7 +4605,7 @@ msgstr "inaktivera DIN-kodning" #: nss/getent.c:64 msgid "Get entries from administrative database." -msgstr "Hämta poster från den administrativa databasen" +msgstr "Hämta poster från den administrativa databasen." #: nss/getent.c:148 nss/getent.c:477 nss/getent.c:522 #, c-format @@ -4652,7 +4648,7 @@ msgstr "Genererad rad som inte ingår i iterationen" #: nss/makedb.c:131 msgid "Create simple database from textual input." -msgstr "Skapa en enkel databas från textuell indata" +msgstr "Skapa en enkel databas från textuell indata." #: nss/makedb.c:134 msgid "" @@ -5412,7 +5408,7 @@ msgstr "Kan inte ange netid-flaggan utan TIRPC!\n" #: sunrpc/rpc_main.c:1374 #, c-format msgid "Cannot use table flags with newstyle!\n" -msgstr "Kan inte ange tabellflaggor med ny stil\n" +msgstr "Kan inte ange tabellflaggor med ny stil!\n" #: sunrpc/rpc_main.c:1393 #, c-format @@ -7270,18 +7266,9 @@ msgstr "tidszonsförkortning skiljer sig från POSIX-standarden" #: timezone/zic.c:2789 msgid "too many, or too long, time zone abbreviations" -msgstr "för många eller för långa tidszonförkortningar" +msgstr "för många eller för långa tidszonsförkortningar" #: timezone/zic.c:2829 #, c-format msgid "%s: Can't create directory %s: %s\n" msgstr "%s: Kan inte skapa katalog %s: %s\n" - -#~ msgid "cannot load any more object with static TLS" -#~ msgstr "kan inte ladda fler objekt med statiskt TLS" - -#~ msgid "%s: no PLTREL found in object %s\n" -#~ msgstr "%s: hittade inga PLTREL i objekt %s\n" - -#~ msgid "cannot create internal descriptors" -#~ msgstr "kan inte skapa interna deskriptorer" diff --git a/posix/execvpe.c b/posix/execvpe.c index d933f9c92..7cdb06a61 100644 --- a/posix/execvpe.c +++ b/posix/execvpe.c @@ -48,12 +48,13 @@ maybe_script_execute (const char *file, char *const argv[], char *const envp[]) } } - /* Construct an argument list for the shell. */ + /* Construct an argument list for the shell. It will contain at minimum 3 + arguments (current shell, script, and an ending NULL. */ char *new_argv[argc + 1]; new_argv[0] = (char *) _PATH_BSHELL; new_argv[1] = (char *) file; if (argc > 1) - memcpy (new_argv + 2, argv + 1, argc * sizeof(char *)); + memcpy (new_argv + 2, argv + 1, (argc - 1) * sizeof(char *)); else new_argv[2] = NULL; @@ -91,10 +92,11 @@ __execvpe (const char *file, char *const argv[], char *const envp[]) /* Although GLIBC does not enforce NAME_MAX, we set it as the maximum size to avoid unbounded stack allocation. Same applies for PATH_MAX. */ - size_t file_len = __strnlen (file, NAME_MAX + 1); + size_t file_len = __strnlen (file, NAME_MAX) + 1; size_t path_len = __strnlen (path, PATH_MAX - 1) + 1; - if ((file_len > NAME_MAX) + /* NAME_MAX does not include the terminating null character. */ + if (((file_len-1) > NAME_MAX) || !__libc_alloca_cutoff (path_len + file_len + 1)) { errno = ENAMETOOLONG; @@ -103,6 +105,9 @@ __execvpe (const char *file, char *const argv[], char *const envp[]) const char *subp; bool got_eacces = false; + /* The resulting string maximum size would be potentially a entry + in PATH plus '/' (path_len + 1) and then the the resulting file name + plus '\0' (file_len since it already accounts for the '\0'). */ char buffer[path_len + file_len + 1]; for (const char *p = path; ; p = subp) { @@ -123,7 +128,7 @@ __execvpe (const char *file, char *const argv[], char *const envp[]) execute. */ char *pend = mempcpy (buffer, p, subp - p); *pend = '/'; - memcpy (pend + (p < subp), file, file_len + 1); + memcpy (pend + (p < subp), file, file_len); __execve (buffer, argv, envp); diff --git a/sysdeps/arm/nacl/libc.abilist b/sysdeps/arm/nacl/libc.abilist index 2f7751d16..dfa719830 100644 --- a/sysdeps/arm/nacl/libc.abilist +++ b/sysdeps/arm/nacl/libc.abilist @@ -1840,4 +1840,5 @@ GLIBC_2.23 fts64_close F GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F +GLIBC_2.24 GLIBC_2.24 A GLIBC_2.24 quick_exit F diff --git a/sysdeps/ia64/nptl/Makefile b/sysdeps/ia64/nptl/Makefile index 48f132744..1e6be8eea 100644 --- a/sysdeps/ia64/nptl/Makefile +++ b/sysdeps/ia64/nptl/Makefile @@ -21,4 +21,5 @@ endif ifeq ($(subdir),nptl) libpthread-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask +libpthread-shared-only-routines += ptw-sysdep ptw-sigblock ptw-sigprocmask endif diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile index 3d3552322..7c1d77941 100644 --- a/sysdeps/mips/Makefile +++ b/sysdeps/mips/Makefile @@ -9,6 +9,7 @@ endif ifeq ($(subdir),rt) librt-sysdep_routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif ifeq ($(subdir),debug) diff --git a/sysdeps/mips/mips32/crti.S b/sysdeps/mips/mips32/crti.S index 5c0ad7328..dfbbdc4f8 100644 --- a/sysdeps/mips/mips32/crti.S +++ b/sysdeps/mips/mips32/crti.S @@ -74,6 +74,7 @@ _init: .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION 1: jalr $25 .Lno_weak_fn: + .insn #else lw $25,%got(PREINIT_FUNCTION)($28) .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION diff --git a/sysdeps/mips/mips64/n32/crti.S b/sysdeps/mips/mips64/n32/crti.S index 00b89f389..afe6d8eda 100644 --- a/sysdeps/mips/mips64/n32/crti.S +++ b/sysdeps/mips/mips64/n32/crti.S @@ -74,6 +74,7 @@ _init: .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION 1: jalr $25 .Lno_weak_fn: + .insn #else lw $25,%got_disp(PREINIT_FUNCTION)($28) .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION diff --git a/sysdeps/mips/mips64/n64/crti.S b/sysdeps/mips/mips64/n64/crti.S index f59b20c63..4049d2929 100644 --- a/sysdeps/mips/mips64/n64/crti.S +++ b/sysdeps/mips/mips64/n64/crti.S @@ -74,6 +74,7 @@ _init: .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION 1: jalr $25 .Lno_weak_fn: + .insn #else ld $25,%got_disp(PREINIT_FUNCTION)($28) .reloc 1f,R_MIPS_JALR,PREINIT_FUNCTION diff --git a/sysdeps/mips/nptl/Makefile b/sysdeps/mips/nptl/Makefile index 117744ffe..dda154d84 100644 --- a/sysdeps/mips/nptl/Makefile +++ b/sysdeps/mips/nptl/Makefile @@ -21,4 +21,5 @@ endif ifeq ($(subdir),nptl) libpthread-sysdep_routines += nptl-sysdep +libpthread-shared-only-routines += nptl-sysdep endif diff --git a/sysdeps/nacl/clock.c b/sysdeps/nacl/clock.c index 664ad650c..b6fbcfd2d 100644 --- a/sysdeps/nacl/clock.c +++ b/sysdeps/nacl/clock.c @@ -24,6 +24,6 @@ clock_t clock (void) { - nacl_abi_clock_t result; + nacl_irt_clock_t result; return NACL_CALL (__nacl_irt_basic.clock (&result), result); } diff --git a/sysdeps/nacl/dup.c b/sysdeps/nacl/dup.c index 34a7cd46d..cbce3f5a5 100644 --- a/sysdeps/nacl/dup.c +++ b/sysdeps/nacl/dup.c @@ -27,4 +27,5 @@ __dup (int fd) int result; return NACL_CALL (__nacl_irt_fdio.dup (fd, &result), result); } +libc_hidden_def (__dup) weak_alias (__dup, dup) diff --git a/sysdeps/posix/wait3.c b/sysdeps/posix/wait3.c index cf43d973a..73722d2be 100644 --- a/sysdeps/posix/wait3.c +++ b/sysdeps/posix/wait3.c @@ -33,7 +33,7 @@ __wait3 (int *stat_loc, int options, struct rusage *usage) __set_errno (ENOSYS); return (pid_t) -1; } - return __waitpid (WAIT_ANY, stat_loc.__iptr, options); + return __waitpid (WAIT_ANY, stat_loc, options); } weak_alias (__wait3, wait3) diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps index 7f37c813d..36b700c52 100644 --- a/sysdeps/powerpc/fpu/libm-test-ulps +++ b/sysdeps/powerpc/fpu/libm-test-ulps @@ -36,8 +36,8 @@ double: 2 float: 2 idouble: 2 ifloat: 2 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: "acosh_downward": double: 1 @@ -52,8 +52,8 @@ double: 2 float: 2 idouble: 2 ifloat: 2 -ildouble: 3 -ldouble: 3 +ildouble: 4 +ldouble: 4 Function: "acosh_upward": double: 2 @@ -122,8 +122,8 @@ double: 3 float: 3 idouble: 3 ifloat: 3 -ildouble: 4 -ldouble: 4 +ildouble: 7 +ldouble: 7 Function: "atan": double: 1 @@ -216,8 +216,8 @@ double: 3 float: 3 idouble: 3 ifloat: 3 -ildouble: 3 -ldouble: 3 +ildouble: 4 +ldouble: 4 Function: "cabs": double: 1 @@ -272,8 +272,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Real part of "cacos_towardzero": double: 2 @@ -288,8 +288,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Real part of "cacos_upward": double: 2 @@ -328,8 +328,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Imaginary part of "cacosh_downward": double: 2 @@ -344,8 +344,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Imaginary part of "cacosh_towardzero": double: 2 @@ -432,8 +432,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Real part of "casin_towardzero": double: 3 @@ -448,8 +448,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Real part of "casin_upward": double: 2 @@ -488,8 +488,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Imaginary part of "casinh_downward": double: 3 @@ -504,8 +504,8 @@ double: 5 float: 3 idouble: 5 ifloat: 3 -ildouble: 5 -ldouble: 5 +ildouble: 8 +ldouble: 8 Function: Imaginary part of "casinh_towardzero": double: 3 @@ -696,8 +696,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: Real part of "ccos_downward": double: 1 @@ -1132,8 +1132,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: Imaginary part of "csin": ildouble: 1 @@ -1198,8 +1198,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: Real part of "csinh_downward": double: 2 @@ -1318,8 +1318,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 3 +ldouble: 3 Function: Imaginary part of "ctan": double: 2 @@ -1390,8 +1390,8 @@ double: 2 float: 1 idouble: 2 ifloat: 1 -ildouble: 2 -ldouble: 2 +ildouble: 3 +ldouble: 3 Function: Real part of "ctanh_downward": double: 4 @@ -1478,8 +1478,8 @@ double: 2 float: 2 idouble: 2 ifloat: 2 -ildouble: 2 -ldouble: 2 +ildouble: 3 +ldouble: 3 Function: "erfc_downward": double: 3 @@ -1564,8 +1564,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: "exp2_upward": double: 1 @@ -1588,8 +1588,8 @@ ildouble: 2 ldouble: 2 Function: "exp_upward": -float: 1 double: 1 +float: 1 idouble: 1 ifloat: 1 ildouble: 1 @@ -1624,8 +1624,8 @@ double: 1 float: 1 idouble: 1 ifloat: 1 -ildouble: 4 -ldouble: 4 +ildouble: 6 +ldouble: 6 Function: "fma": ildouble: 1 @@ -1688,8 +1688,8 @@ double: 4 float: 5 idouble: 4 ifloat: 5 -ildouble: 10 -ldouble: 10 +ildouble: 11 +ldouble: 11 Function: "hypot": double: 1 @@ -1752,8 +1752,8 @@ double: 1 float: 2 idouble: 1 ifloat: 2 -ildouble: 1 -ldouble: 1 +ildouble: 2 +ldouble: 2 Function: "j1_downward": double: 3 @@ -1840,8 +1840,8 @@ double: 4 float: 5 idouble: 4 ifloat: 5 -ildouble: 10 -ldouble: 10 +ildouble: 11 +ldouble: 11 Function: "log": float: 1 @@ -1910,8 +1910,8 @@ double: 2 float: 2 idouble: 2 ifloat: 2 -ildouble: 2 -ldouble: 2 +ildouble: 3 +ldouble: 3 Function: "log2": double: 1 @@ -2184,16 +2184,16 @@ double: 3 float: 3 idouble: 3 ifloat: 3 -ildouble: 3 -ldouble: 3 +ildouble: 4 +ldouble: 4 Function: "tanh_towardzero": double: 2 float: 2 idouble: 2 ifloat: 2 -ildouble: 3 -ldouble: 3 +ildouble: 4 +ldouble: 4 Function: "tanh_upward": double: 3 diff --git a/sysdeps/powerpc/ifunc-sel.h b/sysdeps/powerpc/ifunc-sel.h index 526d8ed88..ac589bd3c 100644 --- a/sysdeps/powerpc/ifunc-sel.h +++ b/sysdeps/powerpc/ifunc-sel.h @@ -17,15 +17,17 @@ ifunc_sel (int (*f1) (void), int (*f2) (void), int (*f3) (void)) "addis %0,11,%2-1b@ha\n\t" "addi %0,%0,%2-1b@l\n\t" "cmpwi 12,1\n\t" - "beqlr\n\t" + "beq 2f\n\t" "addis %0,11,%3-1b@ha\n\t" "addi %0,%0,%3-1b@l\n\t" "cmpwi 12,-1\n\t" - "beqlr\n\t" + "beq 2f\n\t" "addis %0,11,%4-1b@ha\n\t" - "addi %0,%0,%4-1b@l" + "addi %0,%0,%4-1b@l\n\t" + "2:" : "=r" (ret) - : "X" (&global), "X" (f1), "X" (f2), "X" (f3)); + : "i" (&global), "i" (f1), "i" (f2), "i" (f3) + : "11", "12", "cr0"); return ret; } @@ -40,7 +42,8 @@ ifunc_one (int (*f1) (void)) "addis %0,%0,%1-1b@ha\n\t" "addi %0,%0,%1-1b@l" : "=r" (ret) - : "X" (f1)); + : "i" (f1) + : "12"); return ret; } #endif diff --git a/sysdeps/powerpc/powerpc32/power6/memset.S b/sysdeps/powerpc/powerpc32/power6/memset.S index b2a222edd..d5dbe83af 100644 --- a/sysdeps/powerpc/powerpc32/power6/memset.S +++ b/sysdeps/powerpc/powerpc32/power6/memset.S @@ -394,7 +394,7 @@ L(cacheAlignedx): /* A simple loop for the longer (>640 bytes) lengths. This form limits the branch miss-predicted to exactly 1 at loop exit.*/ L(cacheAligned512): - cmpli cr1,rLEN,128 + cmplwi cr1,rLEN,128 blt cr1,L(cacheAligned1) dcbz 0,rMEMP addi rLEN,rLEN,-128 diff --git a/sysdeps/powerpc/powerpc32/power9/multiarch/Implies b/sysdeps/powerpc/powerpc32/power9/multiarch/Implies index 4393b5687..1a46ef003 100644 --- a/sysdeps/powerpc/powerpc32/power9/multiarch/Implies +++ b/sysdeps/powerpc/powerpc32/power9/multiarch/Implies @@ -1 +1 @@ -powerpc/powerpc32/power8/fpu/multiarch +powerpc/powerpc32/power8/multiarch diff --git a/sysdeps/powerpc/powerpc64/power6/memset.S b/sysdeps/powerpc/powerpc64/power6/memset.S index c2d1c4e60..d445b1e1e 100644 --- a/sysdeps/powerpc/powerpc64/power6/memset.S +++ b/sysdeps/powerpc/powerpc64/power6/memset.S @@ -251,7 +251,7 @@ L(cacheAlignedx): /* A simple loop for the longer (>640 bytes) lengths. This form limits the branch miss-predicted to exactly 1 at loop exit.*/ L(cacheAligned512): - cmpli cr1,rLEN,128 + cmpldi cr1,rLEN,128 blt cr1,L(cacheAligned1) dcbz 0,rMEMP addi rLEN,rLEN,-128 diff --git a/sysdeps/powerpc/powerpc64/power9/fpu/Implies b/sysdeps/powerpc/powerpc64/power9/fpu/Implies index fad2505ab..ae0dbaf85 100644 --- a/sysdeps/powerpc/powerpc64/power9/fpu/Implies +++ b/sysdeps/powerpc/powerpc64/power9/fpu/Implies @@ -1,2 +1 @@ powerpc/powerpc64/power8/fpu -powerpc/powerpc64/power8 diff --git a/sysdeps/s390/nptl/Makefile b/sysdeps/s390/nptl/Makefile index 5734b983b..3a391c821 100644 --- a/sysdeps/s390/nptl/Makefile +++ b/sysdeps/s390/nptl/Makefile @@ -21,4 +21,5 @@ endif ifeq ($(subdir),nptl) libpthread-routines += ptw-sysdep +libpthread-shared-only-routines += ptw-sysdep endif diff --git a/sysdeps/sparc/sparc32/fpu/s_fdim.S b/sysdeps/sparc/sparc32/fpu/s_fdim.S deleted file mode 100644 index e93970faa..000000000 --- a/sysdeps/sparc/sparc32/fpu/s_fdim.S +++ /dev/null @@ -1,42 +0,0 @@ -/* Compute positive difference, sparc 32-bit. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include -#include - -ENTRY(__fdim) - std %o0, [%sp + 72] - std %o2, [%sp + 80] - ldd [%sp + 72], %f0 - ldd [%sp + 80], %f2 - fcmpd %f0, %f2 - st %g0, [%sp + 72] - fbug 1f - st %g0, [%sp + 76] - ldd [%sp + 72], %f0 - fnegs %f0, %f2 - fmovs %f1, %f3 -1: retl - fsubd %f0, %f2, %f0 -END(__fdim) -weak_alias (__fdim, fdim) - -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); -#endif diff --git a/sysdeps/sparc/sparc32/fpu/s_fdimf.S b/sysdeps/sparc/sparc32/fpu/s_fdimf.S deleted file mode 100644 index c3fe8afa9..000000000 --- a/sysdeps/sparc/sparc32/fpu/s_fdimf.S +++ /dev/null @@ -1,35 +0,0 @@ -/* Compute positive difference, sparc 32-bit. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include - -ENTRY(__fdimf) - st %o0, [%sp + 72] - st %o1, [%sp + 76] - ld [%sp + 72], %f0 - ld [%sp + 76], %f1 - fcmps %f0, %f1 - fbug 1f - st %g0, [%sp + 72] - ld [%sp + 72], %f0 - fnegs %f0, %f1 -1: retl - fsubs %f0, %f1, %f0 -END(__fdimf) -weak_alias (__fdimf, fdimf) diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile index ebbe28b07..13d3c6db5 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/Makefile @@ -4,8 +4,8 @@ libm-sysdep_routines += m_copysignf-vis3 m_copysign-vis3 s_fabs-vis3 \ s_fabsf-vis3 s_llrintf-vis3 s_llrint-vis3 \ s_rintf-vis3 s_rint-vis3 w_sqrt-vis3 w_sqrtf-vis3 \ s_fminf-vis3 s_fmin-vis3 s_fmaxf-vis3 s_fmax-vis3 \ - s_fmaf-vis3 s_fma-vis3 s_fdimf-vis3 s_fdim-vis3 \ - s_nearbyint-vis3 s_nearbyintf-vis3 + s_fmaf-vis3 s_fma-vis3 s_nearbyint-vis3 \ + s_nearbyintf-vis3 sysdep_routines += s_copysignf-vis3 s_copysign-vis3 endif endif diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S deleted file mode 100644 index 4a479b1a5..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim-vis3.S +++ /dev/null @@ -1,34 +0,0 @@ -/* Compute positive difference, sparc 32-bit+v9+vis3. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include - -ENTRY(__fdim_vis3) - movwtos %o0, %f0 - movwtos %o1, %f1 - movwtos %o2, %f2 - movwtos %o3, %f3 - fcmpd %f0, %f2 - fbug 1f - nop - fzero %f0 - fnegd %f0, %f2 -1: retl - fsubd %f0, %f2, %f0 -END(__fdim_vis3) diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S deleted file mode 100644 index 4b1340824..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdim.S +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include - -SPARC_ASM_VIS3_IFUNC(fdim) - -weak_alias (__fdim, fdim) - -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); -#endif - -# undef weak_alias -# define weak_alias(a, b) -# undef compat_symbol -# define compat_symbol(a, b, c, d) - -#define __fdim __fdim_generic - -#include "../s_fdim.S" diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S deleted file mode 100644 index 081fc15b6..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf-vis3.S +++ /dev/null @@ -1,32 +0,0 @@ -/* Compute positive difference, sparc 32-bit+v9+vis3. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include - -ENTRY(__fdimf_vis3) - movwtos %o0, %f0 - movwtos %o1, %f1 - fcmps %f0, %f1 - fbug 1f - nop - fzeros %f0 - fnegs %f0, %f1 -1: retl - fsubs %f0, %f1, %f0 -END(__fdimf_vis3) diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S deleted file mode 100644 index 30381d6a5..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_fdimf.S +++ /dev/null @@ -1,12 +0,0 @@ -#include - -SPARC_ASM_VIS3_IFUNC(fdimf) - -weak_alias (__fdimf, fdimf) - -# undef weak_alias -# define weak_alias(a, b) - -#define __fdimf __fdimf_generic - -#include "../s_fdimf.S" diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S index d9ff0cc28..ff81b0da8 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyint-vis3.S @@ -36,15 +36,15 @@ #define SIGN_BIT %f12 /* -0.0 */ ENTRY (__nearbyint_vis3) + sllx %o0, 32, %o0 + or %o0, %o1, %o0 + movxtod %o0, %f0 fcmpd %fcc3, %f0, %f0 /* Check for sNaN */ st %fsr, [%sp + 88] sethi %hi(TWO_FIFTYTWO), %o2 sethi %hi(0xf8003e0), %o5 ld [%sp + 88], %o4 - sllx %o0, 32, %o0 or %o5, %lo(0xf8003e0), %o5 - or %o0, %o1, %o0 - movxtod %o0, %f0 andn %o4, %o5, %o4 fzero ZERO st %o4, [%sp + 80] diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S index 5cd1eb02d..833a0dfc2 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/multiarch/s_nearbyintf-vis3.S @@ -35,9 +35,9 @@ #define SIGN_BIT %f12 /* -0.0 */ ENTRY (__nearbyintf_vis3) + movwtos %o0, %f1 fcmps %fcc3, %f1, %f1 /* Check for sNaN */ st %fsr, [%sp + 88] - movwtos %o0, %f1 sethi %hi(TWO_TWENTYTHREE), %o2 sethi %hi(0xf8003e0), %o5 ld [%sp + 88], %o4 diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S deleted file mode 100644 index 37f7f44df..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdim.S +++ /dev/null @@ -1,40 +0,0 @@ -/* Compute positive difference, sparc 32-bit+v9. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include -#include - -ENTRY(__fdim) - std %o0, [%sp + 72] - std %o2, [%sp + 80] - ldd [%sp + 72], %f0 - ldd [%sp + 80], %f2 - fcmpd %f0, %f2 - fbug 1f - nop - fzero %f0 - fnegd %f0, %f2 -1: retl - fsubd %f0, %f2, %f0 -END(__fdim) -weak_alias (__fdim, fdim) - -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) -compat_symbol (libm, __fdim, fdiml, GLIBC_2_1); -#endif diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S deleted file mode 100644 index 9e0e3f21b..000000000 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_fdimf.S +++ /dev/null @@ -1,35 +0,0 @@ -/* Compute positive difference, sparc 32-bit+v9. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include - -ENTRY(__fdimf) - st %o0, [%sp + 72] - st %o1, [%sp + 76] - ld [%sp + 72], %f0 - ld [%sp + 76], %f1 - fcmps %f0, %f1 - fbug 1f - nop - fzeros %f0 - fnegs %f0, %f1 -1: retl - fsubs %f0, %f1, %f0 -END(__fdimf) -weak_alias (__fdimf, fdimf) diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S index 84a10971a..198440a5b 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyint.S @@ -36,21 +36,21 @@ #define SIGN_BIT %f12 /* -0.0 */ ENTRY (__nearbyint) + sllx %o0, 32, %o0 + or %o0, %o1, %o0 + stx %o0, [%sp + 72] + ldd [%sp + 72], %f0 fcmpd %fcc3, %f0, %f0 /* Check for sNaN */ st %fsr, [%sp + 88] sethi %hi(TWO_FIFTYTWO), %o2 sethi %hi(0xf8003e0), %o5 ld [%sp + 88], %o4 - sllx %o0, 32, %o0 or %o5, %lo(0xf8003e0), %o5 - or %o0, %o1, %o0 andn %o4, %o5, %o4 fzero ZERO st %o4, [%sp + 80] - stx %o0, [%sp + 72] sllx %o2, 32, %o2 fnegd ZERO, SIGN_BIT - ldd [%sp + 72], %f0 ld [%sp + 80], %fsr stx %o2, [%sp + 72] fabsd %f0, %f14 diff --git a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S index d5cf5ce81..9be41f6c2 100644 --- a/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S +++ b/sysdeps/sparc/sparc32/sparcv9/fpu/s_nearbyintf.S @@ -35,9 +35,10 @@ #define SIGN_BIT %f12 /* -0.0 */ ENTRY (__nearbyintf) + st %o0, [%sp + 68] + ld [%sp + 68], %f1 fcmps %fcc3, %f1, %f1 /* Check for sNaN */ st %fsr, [%sp + 88] - st %o0, [%sp + 68] sethi %hi(TWO_TWENTYTHREE), %o2 sethi %hi(0xf8003e0), %o5 ld [%sp + 88], %o4 @@ -46,7 +47,6 @@ ENTRY (__nearbyintf) fnegs ZERO, SIGN_BIT andn %o4, %o5, %o4 st %o4, [%sp + 80] - ld [%sp + 68], %f1 ld [%sp + 80], %fsr st %o2, [%sp + 68] fabss %f1, %f14 diff --git a/sysdeps/sparc/sparc64/fpu/s_fdim.S b/sysdeps/sparc/sparc64/fpu/s_fdim.S deleted file mode 100644 index 7fae72a25..000000000 --- a/sysdeps/sparc/sparc64/fpu/s_fdim.S +++ /dev/null @@ -1,32 +0,0 @@ -/* Compute positive difference, sparc 64-bit. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include -#include - -ENTRY(__fdim) - fcmpd %f0, %f2 - fbug 1f - nop - fzero %f0 - fnegd %f0, %f2 -1: retl - fsubd %f0, %f2, %f0 -END(__fdim) -weak_alias (__fdim, fdim) diff --git a/sysdeps/sparc/sparc64/fpu/s_fdimf.S b/sysdeps/sparc/sparc64/fpu/s_fdimf.S deleted file mode 100644 index 356c23c4e..000000000 --- a/sysdeps/sparc/sparc64/fpu/s_fdimf.S +++ /dev/null @@ -1,31 +0,0 @@ -/* Compute positive difference, sparc 64-bit. - Copyright (C) 2013-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David S. Miller . - - 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 - . */ - -#include - -ENTRY(__fdimf) - fcmps %f1, %f3 - fbug 1f - nop - fzeros %f1 - fnegs %f1, %f3 -1: retl - fsubs %f1, %f3, %f0 -END(__fdimf) -weak_alias (__fdimf, fdimf) diff --git a/sysdeps/unix/alpha/Makefile b/sysdeps/unix/alpha/Makefile index 441aa02a8..0660847f1 100644 --- a/sysdeps/unix/alpha/Makefile +++ b/sysdeps/unix/alpha/Makefile @@ -1,3 +1,4 @@ ifeq ($(subdir),rt) librt-sysdep_routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif diff --git a/sysdeps/unix/sysv/linux/alpha/Makefile b/sysdeps/unix/sysv/linux/alpha/Makefile index c089545e9..3b523b70c 100644 --- a/sysdeps/unix/sysv/linux/alpha/Makefile +++ b/sysdeps/unix/sysv/linux/alpha/Makefile @@ -40,4 +40,5 @@ endif # math ifeq ($(subdir),nptl) # pull in __syscall_error routine, __sigprocmask, __syscall_rt_sigaction libpthread-routines += ptw-sysdep ptw-sigprocmask ptw-rt_sigaction +libpthread-shared-only-routines += ptw-sysdep ptw-sigprocmask ptw-rt_sigaction endif diff --git a/sysdeps/unix/sysv/linux/arm/setcontext.S b/sysdeps/unix/sysv/linux/arm/setcontext.S index 603e50885..d1f168fec 100644 --- a/sysdeps/unix/sysv/linux/arm/setcontext.S +++ b/sysdeps/unix/sysv/linux/arm/setcontext.S @@ -86,12 +86,19 @@ weak_alias(__setcontext, setcontext) /* Called when a makecontext() context returns. Start the context in R4 or fall through to exit(). */ + /* Unwind descriptors are looked up based on PC - 2, so we have to + make sure to mark the instruction preceding the __startcontext + label as .cantunwind. */ + .fnstart + .cantunwind + nop ENTRY(__startcontext) movs r0, r4 bne PLTJMP(__setcontext) @ New context was 0 - exit b PLTJMP(HIDDEN_JUMPTARGET(exit)) + .fnend END(__startcontext) #ifdef PIC diff --git a/sysdeps/unix/sysv/linux/i386/Makefile b/sysdeps/unix/sysv/linux/i386/Makefile index 71ba61e9d..6073a9fe0 100644 --- a/sysdeps/unix/sysv/linux/i386/Makefile +++ b/sysdeps/unix/sysv/linux/i386/Makefile @@ -31,6 +31,7 @@ endif # libpthread uses six-argument inline syscalls. ifeq ($(subdir),nptl) libpthread-sysdep_routines += libc-do-syscall +libpthread-shared-only-routines += libc-do-syscall endif ifeq ($(subdir),resource) @@ -48,9 +49,11 @@ endif ifeq ($(subdir),nptl) # pull in __syscall_error routine libpthread-routines += sysdep +libpthread-shared-only-routines += sysdep endif ifeq ($(subdir),rt) # pull in __syscall_error routine librt-routines += sysdep +librt-shared-only-routines += sysdep endif diff --git a/sysdeps/unix/sysv/linux/ia64/Makefile b/sysdeps/unix/sysv/linux/ia64/Makefile index 1de62c528..4d6766db5 100644 --- a/sysdeps/unix/sysv/linux/ia64/Makefile +++ b/sysdeps/unix/sysv/linux/ia64/Makefile @@ -19,6 +19,7 @@ endif ifeq ($(subdir),rt) librt-routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif ifeq ($(subdir),nptl) diff --git a/sysdeps/unix/sysv/linux/microblaze/Makefile b/sysdeps/unix/sysv/linux/microblaze/Makefile index 44a838fa1..d178bc6f3 100644 --- a/sysdeps/unix/sysv/linux/microblaze/Makefile +++ b/sysdeps/unix/sysv/linux/microblaze/Makefile @@ -5,4 +5,5 @@ endif ifeq ($(subdir),nptl) # pull in __syscall_error routine libpthread-routines += sysdep -endif \ No newline at end of file +libpthread-shared-only-routines += sysdep +endif diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile index c89ed9ec7..2cfb46eca 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Makefile +++ b/sysdeps/unix/sysv/linux/powerpc/Makefile @@ -8,6 +8,7 @@ abi-64-v2-condition := __WORDSIZE == 64 && _CALL_ELF == 2 ifeq ($(subdir),rt) librt-routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif ifeq ($(subdir),stdlib) @@ -34,4 +35,5 @@ ifeq ($(subdir),nptl) libpthread-routines += sysdep libpthread-sysdep_routines += elision-lock elision-unlock elision-timed \ elision-trylock +libpthread-shared-only-routines += sysdep endif diff --git a/sysdeps/unix/sysv/linux/pread.c b/sysdeps/unix/sysv/linux/pread.c index 1bcff6478..46d974d95 100644 --- a/sysdeps/unix/sysv/linux/pread.c +++ b/sysdeps/unix/sysv/linux/pread.c @@ -28,8 +28,7 @@ ssize_t __libc_pread (int fd, void *buf, size_t count, off_t offset) { - return SYSCALL_CANCEL (pread, fd, buf, count, - __ALIGNMENT_ARG SYSCALL_LL (offset)); + return SYSCALL_CANCEL (pread, fd, buf, count, SYSCALL_LL_PRW (offset)); } strong_alias (__libc_pread, __pread) diff --git a/sysdeps/unix/sysv/linux/pread64.c b/sysdeps/unix/sysv/linux/pread64.c index 58c6aeb54..f51beae77 100644 --- a/sysdeps/unix/sysv/linux/pread64.c +++ b/sysdeps/unix/sysv/linux/pread64.c @@ -26,8 +26,7 @@ ssize_t __libc_pread64 (int fd, void *buf, size_t count, off64_t offset) { - return SYSCALL_CANCEL (pread64, fd, buf, count, - __ALIGNMENT_ARG SYSCALL_LL64 (offset)); + return SYSCALL_CANCEL (pread64, fd, buf, count, SYSCALL_LL64_PRW (offset)); } weak_alias (__libc_pread64, __pread64) diff --git a/sysdeps/unix/sysv/linux/pwrite.c b/sysdeps/unix/sysv/linux/pwrite.c index 9c502beac..1371df8a6 100644 --- a/sysdeps/unix/sysv/linux/pwrite.c +++ b/sysdeps/unix/sysv/linux/pwrite.c @@ -28,8 +28,7 @@ ssize_t __libc_pwrite (int fd, const void *buf, size_t count, off_t offset) { - return SYSCALL_CANCEL (pwrite, fd, buf, count, - __ALIGNMENT_ARG SYSCALL_LL (offset)); + return SYSCALL_CANCEL (pwrite, fd, buf, count, SYSCALL_LL_PRW (offset)); } strong_alias (__libc_pwrite, __pwrite) diff --git a/sysdeps/unix/sysv/linux/pwrite64.c b/sysdeps/unix/sysv/linux/pwrite64.c index b49e6bc28..22f1f05a4 100644 --- a/sysdeps/unix/sysv/linux/pwrite64.c +++ b/sysdeps/unix/sysv/linux/pwrite64.c @@ -26,8 +26,7 @@ ssize_t __libc_pwrite64 (int fd, const void *buf, size_t count, off64_t offset) { - return SYSCALL_CANCEL (pwrite64, fd, buf, count, - __ALIGNMENT_ARG SYSCALL_LL64 (offset)); + return SYSCALL_CANCEL (pwrite64, fd, buf, count, SYSCALL_LL64_PRW (offset)); } weak_alias (__libc_pwrite64, __pwrite64) libc_hidden_weak (__pwrite64) diff --git a/sysdeps/unix/sysv/linux/s390/Makefile b/sysdeps/unix/sysv/linux/s390/Makefile index 497ffd566..f8ed013e9 100644 --- a/sysdeps/unix/sysv/linux/s390/Makefile +++ b/sysdeps/unix/sysv/linux/s390/Makefile @@ -6,6 +6,7 @@ abi-64-condition := __WORDSIZE == 64 ifeq ($(subdir),rt) librt-routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif ifeq ($(subdir),stdlib) diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index ad05fc39e..c5240fafb 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -44,3 +44,8 @@ /* SH does not have a 64-bit inode field. */ #undef __ASSUME_ST_INO_64_BIT + +/* SH4 ABI does not really require argument alignment for 64-bits, but + the kernel interface for p{read,write}64 adds a dummy long argument + before the offset. */ +#define __ASSUME_PRW_DUMMY_ARG 1 diff --git a/sysdeps/unix/sysv/linux/sh/pread.c b/sysdeps/unix/sysv/linux/sh/pread.c deleted file mode 100644 index d3f99f35d..000000000 --- a/sysdeps/unix/sysv/linux/sh/pread.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -/* SH4 ABI does not really require argument alignment for 64-bits, but - the kernel interface for pread adds a dummy long argument before the - offset. */ -#define __ALIGNMENT_ARG -#include diff --git a/sysdeps/unix/sysv/linux/sh/pread64.c b/sysdeps/unix/sysv/linux/sh/pread64.c deleted file mode 100644 index b2e8a2578..000000000 --- a/sysdeps/unix/sysv/linux/sh/pread64.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -/* SH4 ABI does not really require argument alignment for 64-bits, but - the kernel interface for pread adds a dummy long argument before the - offset. */ -#define __ALIGNMENT_ARG -#include diff --git a/sysdeps/unix/sysv/linux/sh/pwrite.c b/sysdeps/unix/sysv/linux/sh/pwrite.c deleted file mode 100644 index 391ed5e17..000000000 --- a/sysdeps/unix/sysv/linux/sh/pwrite.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - - 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 - . */ - -/* SH4 ABI does not really require argument alignment for 64-bits, but - the kernel interface for pwrite adds a dummy long argument before the - offset. */ -#define __ALIGNMENT_ARG -#include diff --git a/sysdeps/unix/sysv/linux/sh/pwrite64.c b/sysdeps/unix/sysv/linux/sh/pwrite64.c deleted file mode 100644 index 683a5d988..000000000 --- a/sysdeps/unix/sysv/linux/sh/pwrite64.c +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (C) 1997-2016 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ralf Baechle , 1998. - - 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 - . */ - -/* SH4 ABI does not really require argument alignment for 64-bits, but - the kernel interface for pread adds a dummy long argument before the - offset. */ -#define __ALIGNMENT_ARG -#include diff --git a/sysdeps/unix/sysv/linux/sparc/Makefile b/sysdeps/unix/sysv/linux/sparc/Makefile index e67aecf8f..a67d199eb 100644 --- a/sysdeps/unix/sysv/linux/sparc/Makefile +++ b/sysdeps/unix/sysv/linux/sparc/Makefile @@ -6,6 +6,7 @@ abi-64-condition := __WORDSIZE == 64 ifeq ($(subdir),rt) librt-routines += rt-sysdep +librt-shared-only-routines += rt-sysdep endif ifeq ($(subdir),sysvipc) @@ -15,4 +16,5 @@ endif ifeq ($(subdir),nptl) # pull in __syscall_error routine libpthread-routines += sysdep +libpthread-shared-only-routines += sysdep endif diff --git a/sysdeps/unix/sysv/linux/spawni.c b/sysdeps/unix/sysv/linux/spawni.c index bb3eecfde..67e1c4242 100644 --- a/sysdeps/unix/sysv/linux/spawni.c +++ b/sysdeps/unix/sysv/linux/spawni.c @@ -58,10 +58,6 @@ normal program exit with the exit code 127. */ #define SPAWN_ERROR 127 -/* We need to block both SIGCANCEL and SIGSETXID. */ -#define SIGALL_SET \ - ((__sigset_t) { .__val = {[0 ... _SIGSET_NWORDS-1 ] = -1 } }) - #ifdef __ia64__ # define CLONE(__fn, __stack, __stacksize, __flags, __args) \ __clone2 (__fn, __stack, __stacksize, __flags, __args, 0, 0, 0) @@ -340,7 +336,9 @@ __spawnix (pid_t * pid, const char *file, } /* Disable asynchronous cancellation. */ - int cs = LIBC_CANCEL_ASYNC (); + int state; + __libc_ptf_call (__pthread_setcancelstate, + (PTHREAD_CANCEL_DISABLE, &state), 0); args.file = file; args.exec = exec; @@ -351,7 +349,7 @@ __spawnix (pid_t * pid, const char *file, args.envp = envp; args.xflags = xflags; - __sigprocmask (SIG_BLOCK, &SIGALL_SET, &args.oldmask); + __libc_signal_block_all (&args.oldmask); /* The clone flags used will create a new child that will run in the same memory space (CLONE_VM) and the execution of calling thread will be @@ -384,9 +382,9 @@ __spawnix (pid_t * pid, const char *file, if ((ec == 0) && (pid != NULL)) *pid = new_pid; - __sigprocmask (SIG_SETMASK, &args.oldmask, 0); + __libc_signal_restore_set (&args.oldmask); - LIBC_CANCEL_RESET (cs); + __libc_ptf_call (__pthread_setcancelstate, (state, NULL), 0); return ec; } diff --git a/sysdeps/unix/sysv/linux/sysdep.h b/sysdeps/unix/sysv/linux/sysdep.h index a469f5712..e3ecd5638 100644 --- a/sysdeps/unix/sysv/linux/sysdep.h +++ b/sysdeps/unix/sysv/linux/sysdep.h @@ -48,6 +48,16 @@ __LONG_LONG_PAIR ((long) ((val) >> 32), (long) ((val) & 0xffffffff)) #endif +/* Provide a common macro to pass 64-bit value on pread and pwrite + syscalls. */ +#ifdef __ASSUME_PRW_DUMMY_ARG +# define SYSCALL_LL_PRW(val) 0, SYSCALL_LL (val) +# define SYSCALL_LL64_PRW(val) 0, SYSCALL_LL64 (val) +#else +# define SYSCALL_LL_PRW(val) __ALIGNMENT_ARG SYSCALL_LL (val) +# define SYSCALL_LL64_PRW(val) __ALIGNMENT_ARG SYSCALL_LL64 (val) +#endif + /* Provide a macro to pass the off{64}_t argument on p{readv,writev}{64}. */ #define LO_HI_LONG(val) \ (long) (val), \ diff --git a/sysdeps/unix/sysv/linux/tile/Makefile b/sysdeps/unix/sysv/linux/tile/Makefile index 1c1cfff28..43acea363 100644 --- a/sysdeps/unix/sysv/linux/tile/Makefile +++ b/sysdeps/unix/sysv/linux/tile/Makefile @@ -25,4 +25,5 @@ endif ifeq ($(subdir),nptl) # pull in __syscall_error routine libpthread-routines += sysdep +libpthread-shared-only-routines += sysdep endif diff --git a/sysdeps/x86_64/memcpy_chk.S b/sysdeps/x86_64/memcpy_chk.S index 2296b5511..a95b3ad3c 100644 --- a/sysdeps/x86_64/memcpy_chk.S +++ b/sysdeps/x86_64/memcpy_chk.S @@ -19,7 +19,7 @@ #include #include "asm-syntax.h" -#ifndef PIC +#ifndef SHARED /* For libc.so this is defined in memcpy.S. For libc.a, this is a separate source to avoid memcpy bringing in __chk_fail and all routines -- 2.30.2