aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-01-15Fix race in tst-mqueue5Paul E. Murphy2-2/+24
The check is done on line 117 by a thread spawned from do_child(), forked from do_test(). This test generates a signal in the forked process. Either thread may handle the signal, and on ppc, it happens to be done on do_child, on the thread which is not doing the check on line 117. This exposes a race condition whereby the test incorrectly fails as the signal is caught during or after the check. This is mitigated by ensuring the signal is blocked in the child thread while thread is running.
2016-01-15Have iconv accept redundant escape sequences in IBM900, IBM903, IBM905,Martin Sebor8-61/+136
IBM907, and IBM909. Patch for bug #17197 changes the encoder to avoid generating redundant shift sequences. However, those sequences may already be present in data encododed by prior versions of the encoder. This change modifies the decoder to also avoid rejecting redundant shift sequences. [BZ #19432] * iconvdata/Makefile: Add bug-iconv11. * iconvdata/bug-iconv11.c: New test. * iconvdata/ibm930.c: Do not reject redundant shift sequences. * iconvdata/ibm933.c: Same. * iconvdata/ibm935.c: Same. * iconvdata/ibm937.c: Same. * iconvdata/ibm939.c: Same.
2016-01-15Fix build failures with -DDEBUG.Martin Sebor6-15/+30
[BZ #19443] * crypt/crypt_util.c [DEBUG] (_ufc_prbits): Correct format string. [DEBUG] (_ufc_set_bits): Declare used. * iconv/gconv_dl.c [DEBUG]: Add a missing include directive. [DEBUG] (print_all): Declare used. * resolv/res_send.c [DEBUG] (__libc_res_nsend): Explicitly convert operands of the ternary ?: expression to target type. * stdlib/rshift.c [DEBUG] (mpn_rshift): Use assert() instead of calling the undeclared abort. * time/mktime.c [DEBUG] (DEBUG): Rename to DEBUG_MKTIME.
2016-01-15Fix build errors with -DNDEBUG.Martin Sebor5-6/+21
[BZ #18755] * iconv/skeleton.c (FUNCTION_NAME): Suppress -Wunused-but-set-variable warnings. * sysdeps/nptl/gai_misc.h (__gai_start_notify_thread): Same. (__gai_create_helper_thread): Same. * nscd/nscd.c (do_exit): Suppress -Wunused-variable. * iconvdata/iso-2022-cn-ext.c (BODY): Initialize local variable to suppress -Wmaybe-uninitialized warnings.
2016-01-15Call math_opt_barrier inside ifH.J. Lu5-4/+25
Since floating-point operation may trigger floating-point exceptions, we call math_opt_barrier inside if to prevent code motion. [BZ #19465] * sysdeps/ieee754/dbl-64/s_fma.c (__fma): Call math_opt_barrier inside if. * sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Likewise. * sysdeps/ieee754/ldbl-96/s_fma.c (__fma): Likewise. * sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Likewise.
2016-01-14Use TIME_T_MAX and TIME_T_MIN in tst-mktime2.cH.J. Lu2-12/+40
GCC 5.3 compiles for (time_t_max = 1; 0 < time_t_max; time_t_max *= 2) continue; into an infinite loop with -Os. We can copy TIME_T_MAX and TIME_T_MIN from time/mktime.c. [BZ #19466] * time/tst-mktime2.c (time_t_max): Removed. (time_t_min): Likewise. (TYPE_SIGNED): New. (TYPE_MINIMUM): Likewise. (TYPE_MAXIMUM): Likewise. (TIME_T_MIN): Likewise. (TIME_T_MAX): Likewise. (mktime_test): Replace time_t_max and time_t_min with TIME_T_MAX and TIME_T_MIN. (do_test): Likewise.
2016-01-14Set index_Fast_Unaligned_Load for Excavator family CPUsAmit Pawar2-0/+14
GLIBC benchtest testcases shows SSE2_Unaligned based implementations are performing faster compare to SSE2 based implementations for routines: strcmp, strcat, strncat, stpcpy, stpncpy, strcpy, strncpy and strstr. Flag index_Fast_Unaligned_Load is set for Excavator family 0x15h CPU's. This makes SSE2_Unaligned based implementations as default for these routines. [BZ #19467] * sysdeps/x86/cpu-features.c (init_cpu_features): Set index_Fast_Unaligned_Load flag for Excavator family CPUs.
2016-01-14Add __private_ss to s390 struct tcbhead.Marcin Kościelnicki2-0/+8
Preparation for gcc -fsplit-stack support (gcc bug #68191). The new field is basically identical to the one on x86. Its TCB offset needs to be constant, as it'll be hardcoded in gcc. ChangeLog: * sysdeps/s390/nptl/tls.h (struct tcbhead_t): Add __private_ss field.
2016-01-13Use $(PYTHON) to run benchtests python files.Carlos O'Donell2-3/+10
2016-01-13Fix O_DIRECTORY lookup on trivial translatorsFlavio Cruz2-2/+14
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Do not remove leading slash when `file_name' is "/".
2016-01-12Add new header definitions from Linux 4.4 (plus older ptrace definitions).Joseph Myers12-7/+115
This patch adds some new header definitions from Linux 4.4: * MCL_ONFAULT is added to bits/mman.h / bits/mman-linux.h (this was already done for hppa). * PTRACE_SECCOMP_GET_FILTER is added to sys/ptrace.h. Along with it, the older PTRACE_GETSIGMASK and PTRACE_SETSIGMASK, added in Linux 3.11 but missed at the time, are also added. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * bits/mman-linux.h [!MCL_CURRENT] (MCL_ONFAULT): New macro. * sysdeps/unix/sysv/linux/alpha/bits/mman.h (MCL_ONFAULT): Likewise. * sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MCL_ONFAULT): Likewise. * sysdeps/unix/sysv/linux/sparc/bits/mman.h (MCL_ONFAULT): Likewise. * sysdeps/unix/sysv/linux/sys/ptrace.h (PTRACE_GETSIGMASK): New enum constant and macro. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/s390/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise. * sysdeps/unix/sysv/linux/tile/sys/ptrace.h (PTRACE_GETSIGMASK): Likewise. (PTRACE_SETSIGMASK): Likewise. (PTRACE_SECCOMP_GET_FILTER): Likewise.
2016-01-11Fix isinf/isnan declaration conflict with C++11Adhemerval Zanella2-0/+13
GLIBC declares isinf and isnan as expected by Unix98 and for C99 programs these functions are hidden by the generics inf and isnan macros. However C++11 defines isinf and isnan with the same semantics as C99 but requires that they are functions not macros (C++11 26.8 [c.math] paragraph 10). This then results in a conflict for perfectly valid C++11 programs: -- using std::isinf; using std::isnan; double d1 = isinf(1.0); double d2 = isnan(1.0); d.cc:3:12: error: ‘constexpr bool std::isinf(double)’ conflicts with a previous declaration using std::isinf; [...] /usr/include/bits/mathcalls.h:201:1: note: previous declaration ‘int isinf(double)’ __MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__)); [...] -- This patch fixes the prototypes by leaving the obsolete functions defined for C++98 code (since they do not conflict with any standard function in C++98), however preventing them on C++11. No issues found in libstdc++ tests and check on x86_64 and i686 with glibc testsuite. Patch from Jonathan Wakely <jwakely.gcc@gmail.com>. [BZ #19439] * math/bits/mathcalls.h [!__cplusplus || __cplusplus < 201103L] (isinf): Do not declare prototype. [!__cplusplus || __cplusplus < 201103L] (isnan): Likewise.
2016-01-11Force rereading TZDEFRULES after it was used to set DST rules only (bug #19253)Andreas Schwab5-2/+76
If the TZDEFRULES file was used to set the DST rules when $TZ didn't provide any we need to make sure that the next time it is used we recompute everything as __tzfile_default changes some setting from what is provided by TZDEFRULES.
2016-01-10Fix doc quoting problems with Texinfo 5Paul Eggert2-0/+23
Without this change, in the info file output, Texinfo 5 quotes code in text with undirected single quotes 'like this' and generates code examples that with many PDF readers cannot be cut out of PDFs and pasted into code. * manual/libc.texinfo: Configure the libc manual like the GNU Emacs manual, by using @documentencoding and setting txicodequoteundirected and txicodequotebacktick. This way, Texinfo 5 quotes code in text with directed single quotes ‘like this’ and produces examples that can be cut out of PDFs. This change causes Texinfo 5 to generate info files that contain UTF-8 characters in the set {'‘', '’', '“', '”', 'Ä', 'ä', 'ö', '−', '–', '—', '©', '⇒', '•', '…'}, which is OK nowadays.
2016-01-08localedata: nl_NL: date_fmt: rewrite to match standards [BZ #16495]Evert2-3/+10
Add some references to public Dutch standards.
2016-01-08powerpc: Enforce compiler barriers on hardware transactionsTulio Magno Quites Machado Filho7-15/+58
Work around a GCC behavior with hardware transactional memory built-ins. GCC doesn't treat the PowerPC transactional built-ins as compiler barriers, moving instructions past the transaction boundaries and altering their atomicity.
2016-01-08Make shebang interpreter directives consistentMarko Myllynen4-3/+9
Undo changes in files maintained elsewhere.
2016-01-08powerpc: Add hwcap2 bits for POWER9.Carlos Eduardo Seo3-1/+11
Added hwcap2 bit masks for Power ISA 3.0 and VSX IEEE binary float 128-bit features.
2016-01-08hppa: fix dladdr [BZ #19415]John David Anglin3-17/+55
The attached patch fixes dladdr on hppa. Instead of using the generic version of _dl_lookup_address, we use an implementation more or less modeled after __canonicalize_funcptr_for_compare() in gcc. The function pointer is analyzed and if it points to the trampoline used to call _dl_runtime_resolve just before the global offset table, then we call _dl_fixup to resolve the function pointer. Then, we return the instruction pointer from the first word of the descriptor. The change fixes the testcase provided in [BZ #19415] and the Debian nss package now builds successfully.
2016-01-07longlong: fix sh -Wundef buildsMike Frysinger2-2/+8
This file fails when building for SuperH as it assumes __SHMEDIA__ is always defined. Update the code to check if it's defined.
2016-01-07longlong: add SH FDPIC supportAndrew Stubbs2-0/+36
2016-01-07longlong.h: Disable alpha umul_ppmm for old g++Richard Henderson2-0/+8
Causes "unexpected AST of kind MULT_HIGHPART" error with bootstrap from gcc 4.8.
2016-01-07xstat: only check to see if __ASSUME_ST_INO_64_BIT is definedMike Frysinger5-5/+13
We define __ASSUME_ST_INO_64_BIT by default for Linux targets, and then undef it for alpha/sh targets. But the code that uses it looks at its value (as 0/1) rather than whether it's defined (like all other assume knobs). Change the code to see if it's defined to fix build Wundef build errors for alpha/sh.
2016-01-07Update timezone code from tzcode 2015g.Paul Eggert10-918/+1476
This patch updates the timezone code from tzcode 2015g. The Makefile and README changes are based on those in Paul's patch <https://sourceware.org/ml/libc-alpha/2015-05/msg00553.html>. Tested for x86_64 and x86. 2016-01-06 Paul Eggert <eggert@cs.ucla.edu> Joseph Myers <joseph@codesourcery.com> * timezone/private.h: Update from tzcode 2015g. * timezone/tzfile.h: Likewise. * timezone/tzselect.ksh: Likewise. * timezone/zdump.c: Likewise. * timezone/zic.c: Likewise. * timezone/ialloc.c: Remove file. * timezone/scheck.c: Likewise. * timezone/Makefile (extra-objs): Remove variable. ($(objpfx)zic): Do not depend on scheck.o and ialloc.o. (tz-cflags): Add -DHAVE_GETTEXT -DUSE_LTZ=0 -Wno-maybe-uninitialized. (CFLAGS-zdump.c): Remove -fwrapv -DNOID -DHAVE_GETTEXT. (CFLAGS-zic.c): Remove -DNOID -DHAVE_GETTEXT. (CFLAGS-ialloc.c): Remove variable. (CFLAGS-scheck.c): Likewise. * timezone/README: Update list of files from tzcode.
2016-01-07argp: Use fwrite_unlocked instead of __fxprintf when !_LIBCKhem Raj2-0/+9
__fxprintf is not available when argp is built outside libc. gnulib has the same logic already.
2016-01-07Make shebang interpreter directives consistentMarko Myllynen66-64/+134
2016-01-06hppa: fix pthread spinlockJohn David Anglin3-8/+47
URL: https://bugs.debian.org/725508
2016-01-06Update copyright dates committed in 2016H.J. Lu4-4/+4
2016-01-06Mark internal unistd functions hidden in ld.soH.J. Lu4-1/+70
Since internal unistd functions are only used internally in ld.so and libc.so, they can be made hidden. __close, __getcwd, __getpid, __libc_read and __libc_write can't be hidden in ld.so on Hurd since they will be preempted by the ones in libc.so after bootstrap. [BZ #19122] * include/unistd.h [IS_IN (rtld)]: Include <dl-unistd.h>. * sysdeps/generic/dl-unistd.h: New file. * sysdeps/mach/hurd/dl-unistd.h: Likewise.
2016-01-06Mark ld.so internal mmap functions hidden in ld.soH.J. Lu4-0/+56
Since ld.so internal mmap functions are only used internally in ld.so, they can be made hidden. Don't hide __mmap on Hurd, since __mmap in ld.so will be preempted by the one in libc.so after bootstrap. [BZ #19122] * include/sys/mman.h [IS_IN (rtld)]: Include <dl-mman.h>. * sysdeps/generic/dl-mman.h: New file. * sysdeps/mach/hurd/dl-mman.h: Likewise.
2016-01-05Update miscellaneous files from upstream sources.Joseph Myers5-634/+1617
This patch updates texinfo.tex, config.guess, config.sub and move-if-change from their respective upstream sources. * manual/texinfo.tex: Update to version 2016-01-04.21 with trailing whitespace removed. * scripts/config.guess: Update to version 2016-01-01. * scripts/config.sub: Update to version 2016-01-01. * scripts/move-if-change: Update from gnulib.
2016-01-04Eliminate redundant sign extensions in pow()Anton Blanchard2-2/+10
When looking at the code generated for pow() on ppc64 I noticed quite a few sign extensions. Making the array indices unsigned reduces the number of sign extensions from 24 to 7. Tested for powerpc64le and x86_64.
2016-01-04Update copyright dates not handled by scripts/update-copyrights.Joseph Myers28-27/+55
I've updated copyright dates in glibc for 2016. This is the patch for the changes not generated by scripts/update-copyrights and subsequent build / regeneration of generated files. * NEWS: Update copyright dates. * catgets/gencat.c (print_version): Likewise. * csu/version.c (banner): Likewise. * debug/catchsegv.sh: Likewise. * debug/pcprofiledump.c (print_version): Likewise. * debug/xtrace.sh (do_version): Likewise. * elf/ldconfig.c (print_version): Likewise. * elf/ldd.bash.in: Likewise. * elf/pldd.c (print_version): Likewise. * elf/sotruss.sh: Likewise. * elf/sprof.c (print_version): Likewise. * iconv/iconv_prog.c (print_version): Likewise. * iconv/iconvconfig.c (print_version): Likewise. * locale/programs/locale.c (print_version): Likewise. * locale/programs/localedef.c (print_version): Likewise. * login/programs/pt_chown.c (print_version): Likewise. * malloc/memusage.sh (do_version): Likewise. * malloc/memusagestat.c (print_version): Likewise. * malloc/mtrace.pl: Likewise. * manual/libc.texinfo: Likewise. * nptl/version.c (banner): Likewise. * nscd/nscd.c (print_version): Likewise. * nss/getent.c (print_version): Likewise. * nss/makedb.c (print_version): Likewise. * posix/getconf.c (main): Likewise. * scripts/test-installation.pl: Likewise. * sysdeps/unix/sysv/linux/lddlibc4.c (main): Likewise.
2016-01-04Update copyright dates with scripts/update-copyrights.Joseph Myers9048-9045/+9063
2016-01-02hppa: Add MAP_HUGETLB and MAP_STACK defines [BZ #19285]Helge Deller2-13/+16
The attached patch adds some upstream defines like MAP_HUGETLB and MAP_STACK in mman.h for the hppa architecture. The existing MADV_xxK_PAGES defines were dropped upstream, because they were originally added many years ago based on a proposed patch for the Linux kernel which was never applied. So, this patch drops those unneeded defines.
2016-01-01ia64: fpu: fix gamma definition handling [BZ #15421]Mike Frysinger4-16/+36
The rework in commit d709042a6e5ab3c360280faad6f9538a34dc8eea broke buiding on ia64 due to compat_symbol expanding into ... in some cases. The common files were wrapped in a BUILD_LGAMMA check, but the ia64 ones were not. Add that logic to the ia64 files too.
2015-12-31Fix linux personality syscall wrapperDmitry V. Levin16-3/+139
The personality system call, starting with linux kernel commit v2.6.29-6609-g11d06b2a1e5658f448a308aa3beb97bacd64a940, always successfully changes the personality if requested. The syscall wrapper, however, still can return an error in the following cases: - the value returned by the system call looks like an error due to architecture limitations of 32-bit kernels; - a personality greater than 0xffffffff is passed to the system call, and the 64-bit kernel does not have commit v2.6.35-rc1-372-g485d527686850d68a0e9006dd9904f19f122485e that would truncate this value to unsigned int; - on sparc64, the value returned by the system call looks like an error due to sparc64 kernel sign extension bug. The solution is three-fold: - move generic syscalls.list personality entry to generic 64-bit syscalls.list file; - for each 32-bit architecture that use negated errno semantics, add a NOERRNO personality entry to their syscalls.list file; - for sparc64 and 32-bit architectures that use dedicated registers to flag syscall errors, add a wrapper around personality syscall; if the system call return value is flagged as an error, this wrapper returns the negated "would be errno" value, otherwise it returns the system call return value; on sparc64, it also truncates the personality argument to unsigned int before passing it to the kernel. [BZ #19408] * sysdeps/unix/sysv/linux/personality.c: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/personality.c: Likewise. * sysdeps/unix/sysv/linux/tst-personality.c: Likewise. * sysdeps/unix/sysv/linux/Makefile [$(subdir) == misc] (sysdep_routines): Add personality. (tests): Add tst-personality. * sysdeps/unix/sysv/linux/syscalls.list (personality): Move ... * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: ... here. * sysdeps/unix/sysv/linux/arm/syscalls.list (personality): New entry. * sysdeps/unix/sysv/linux/hppa/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/i386/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/m68k/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/microblaze/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/sh/syscalls.list (personality): Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (personality): Likewise.
2015-12-30Cleanup ARM ioperm implementation (step 2)Aurelien Jarno3-93/+14
Since GLIBC requires a minimum 2.6.32 kernel, the sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*) is always available. We can therefore remove the fallback code reading /etc/arm_systype or parsing /proc/cpuinfo. Remove fscanf from localplt.data as it is no longer called from within GLIBC. * sysdeps/unix/sysv/linux/arm/ioperm.c: Do not include <string.h>. (PATH_ARM_SYSTYPE): Remove. (PATH_CPUINFO): Likewise. (IO_BASE_FOOTBRIDGE): Likewise. (IO_SHIFT_FOOTBRIDGE): Likewise. (struct platform): Likewise. (init_iosys): Remove compatibility code for 2.4 kernels. * sysdeps/unix/sysv/linux/arm/localplt.data: Remove fscanf.
2015-12-29localedata: nl_NL@euro: copy measurement from nl_NL [BZ #19198]Mike Frysinger2-2/+6
No real changes here as the output is the same. Just making the input a little bit nicer.
2015-12-29malloc: Test various special cases related to allocation failuresFlorian Weimer3-1/+452
This test case exercises unusual code paths in allocation functions, related to allocation failures. Specifically, the test can reveal the following bugs: (a) calloc returns non-zero memory on fallback to sysmalloc. (b) calloc can self-deadlock because it fails to release the arena lock on certain allocation failures. (c) pvalloc can dereference a NULL arena pointer. (a) and (b) appear specific to a faulty downstream backport. (c) was fixed as part of commit 10ad46bc6526edc5c7afcc57112da96917ff3629. The test for (a) was inspired by a reproducer supplied by Jeff Layton.
2015-12-29localedata: bg_BG: use colon as time separator [BZ #19385]Damyan Ivanov2-2/+8
The only official source is the "Official spelling dictionary of the Bulgarian language, Prosveta 2012", which states there are three ways to separate time components: comma, colon and dot. That same dictionary doesn't say which one is preferred. So I turned to the mailing list of the translators of free software in Bulgarian. The consensus is that colon is the only separator that is widely used in Bulgarian texts and everything else will just be confusing. URL: http://lists.ludost.net/pipermail/dict/2015-December/000538.html
2015-12-29list-fixed-bugs: use argparse for the commandlineMike Frysinger2-1/+25
This makes the interface more friendly to users.
2015-12-29resolv: Reset defdname before use in __res_vinit [BZ #19369]Rob Wu2-0/+6
Resetting defdname (default domain name) before use in __res_vinit ensures that the default domain name is correctly set to a default value when it is not set by the LOCALDOMAIN environment variable or the "domain" or "search" parameters in resolv.conf Tested using the steps from: https://sourceware.org/bugzilla/show_bug.cgi?id=19369
2015-12-29hppa: Define __NO_LONG_DOUBLE_MATH so headers are consistent with libm build ↵John David Anglin2-2/+12
[BZ #19270] The attached patch fixes BZ #19270 and the Debian gmt package now builds successfully. Aside from the comment, the define of __NO_LONG_DOUBLE_MATH is similar to that in the generic version of glibc. Build tested on hppa-unknown-linux-gnu with no observed regressions.
2015-12-28ia64: fpu: fix gammaf typo [BZ #15421]Mike Frysinger2-4/+9
The lgamma rewrite in commit d709042a6e5ab3c360280faad6f9538a34dc8eea used "gammaf" in this function when it should have used "gamma".
2015-12-23Fix getaddrinfo bug number in ChangeLog and NEWS filesDmitry V. Levin2-2/+2
This amends commit 34a9094f49241ebb72084c536cf468fd51ebe3ec that erroneously mentions number 11869 instead of 11884.
2015-12-23Do not violate mutex destruction requirements.Torvald Riegel5-13/+44
POSIX and C++11 require that a thread can destroy a mutex if no other thread owns the mutex, is blocked on the mutex, or will try to acquire it in the future. After destroying the mutex, it can reuse or unmap the underlying memory. Thus, we must not access a mutex' memory after releasing it. Currently, we can load the private flag after releasing the mutex, which is fixed by this patch. See https://sourceware.org/bugzilla/show_bug.cgi?id=13690 for more background. We need to call futex_wake on the lock after releasing it, however. This is by design, and can lead to spurious wake-ups on unrelated futex words (e.g., when the mutex memory is reused for another mutex). This behavior is documented in the glibc-internal futex API and in recent drafts of the Linux kernel's futex documentation (see the draft_futex branch of git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git).
2015-12-23malloc: Update comment for list_lockFlorian Weimer2-3/+8
2015-12-22powerpc: Export __parse_hwcap_and_convert_at_platform to libc.a.Carlos Eduardo Seo2-0/+13
Commit 67385a01d229751569b6aac067ffdcd813a15d7a added a new feature for powerpc, where we store HWCAP/Platform bits in the TCB. In the dynamic linking case, we use the versioned symbol '__parse_hwcap_and_convert_at_platform' to verify if this feature is available. However, the same symbol was not exported to libc.a, making it not possible for GCC to check for it prior to link time.
2015-12-22powerpc: Add basic support for POWER9 sans hwcap.Carlos Eduardo Seo10-2/+30
This patch adds the minimum changes for supporting the POWER9 processor.