about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* ↵Wilco Dijkstra2015-06-0390-175/+268
| | | | to use standard C99 macros. This has no effect on generated code.
* Fix fnmatch strnlen namespace (bug 18470).Joseph Myers2015-06-034-14/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | fnmatch brings in references to strnlen, which isn't in all the standards that contain fnmatch (not added until the 2008 edition of POSIX), resulting in linknamespace test failures. (This is contrary to glibc conventions, rather than a standards conformance issue, because of the str* reservation.) This patch fixes this in the usual way, using __strnlen instead of strnlen. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #18470] * posix/fnmatch.c (fnmatch) [_LIBC]: Call __strnlen instead of strnlen. * conform/Makefile (test-xfail-XPG3/fnmatch.h/linknamespace): Remove variable. (test-xfail-XPG4/fnmatch.h/linknamespace): Likewise. (test-xfail-POSIX/fnmatch.h/linknamespace): Likewise. (test-xfail-POSIX/glob.h/linknamespace): Likewise. (test-xfail-POSIX/wordexp.h/linknamespace): Likewise. (test-xfail-UNIX98/fnmatch.h/linknamespace): Likewise. (test-xfail-UNIX98/glob.h/linknamespace): Likewise. (test-xfail-UNIX98/wordexp.h/linknamespace): Likewise. (test-xfail-XOPEN2K/fnmatch.h/linknamespace): Likewise. (test-xfail-XOPEN2K/glob.h/linknamespace): Likewise. (test-xfail-XOPEN2K/wordexp.h/linknamespace): Likewise.
* Fix fnmatch wmemchr namespace (bug 18468).Joseph Myers2015-06-035-5/+19
| | | | | | | | | | | | | | | | | fnmatch brings in references to wmemchr, which isn't in all the standards that contain fnmatch, resulting in linknamespace test failures. This patch fixes this in the usual way, making wmemchr into a weak alias for __wmemchr. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #18468] * wcsmbs/wmemchr.c (wmemchr): Rename to __wmemchr and define as weak alias of __wmemchr. Use libc_hidden_weak. * include/wchar.h (__wmemchr): Declare. Use libc_hidden_proto. * posix/fnmatch.c [HANDLE_MULTIBYTE] (MEMCHR): Use __wmemchr instead of wmemchr.
* BZ#18383: Another test case, with TLS refs and defs in separate TUs.Roland McGrath2015-06-025-3/+125
|
* Use better variable names in MIPS syscall macros.Joseph Myers2015-06-024-16/+25
| | | | | | | | | | | | | | | | | | | | | | | | Carlos noted in <https://sourceware.org/ml/libc-alpha/2015-05/msg00680.html> that various ports use potentially problematic short variables names in their syscall macros, which could shadow variables with the same name from containing scopes. This patch fixes variables called err and ret in MIPS macros. (I left result_var and _sys_result - separate variables in different macros, which need separate names - alone.) Tested for mips64 (all three ABIs) that installed stripped shared libraries are unchanged by this patch. * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h (INLINE_SYSCALL): Use variable name _sc_err instead of err. [__mips16] (INTERNAL_SYSCALL_NCS): Use variable name _sc_ret instead of ret. * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (INLINE_SYSCALL): Use variable name _sc_err instead of err. * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (INLINE_SYSCALL): Likewise.
* Use libc_hidden_proto / libc_hidden_def with __strnlen.Joseph Myers2015-06-029-2/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Various code in glibc uses __strnlen instead of strnlen for namespace reasons. However, __strnlen does not use libc_hidden_proto / libc_hidden_def (as is normally done for any function defined and called within the same library, whether or not exported from the library and whatever namespace it is in), so the compiler does not know that those calls are to a function within libc. This patch uses libc_hidden_proto / libc_hidden_def with __strnlen. On x86_64, it makes no difference to the installed stripped shared libraries. On 32-bit x86, it causes __strnlen calls to go to the same place as strnlen calls (the fallback strnlen implementation), rather than through a PLT entry for the strnlen IFUNC; I'm not sure of the logic behind when calls from within libc should use IFUNCs versus when they should go direct to a particular function implementation, but clearly it doesn't make sense for strnlen and __strnlen to be handled differently in this regard. Tested for x86_64 and x86 (testsuite, and comparison of installed shared libraries as described above). * string/strnlen.c [!STRNLEN] (__strnlen): Use libc_hidden_def. * include/string.h (__strnlen): Use libc_hidden_proto. * sysdeps/aarch64/strnlen.S (__strnlen): Use libc_hidden_def. * sysdeps/i386/i686/multiarch/strnlen-c.c [SHARED] (libc_hidden_def): Define __GI___strnlen as well as __GI_strnlen. * sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-power7.S (libc_hidden_def): Undefine and redefine. * sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c [SHARED] (libc_hidden_def): Define __GI___strnlen as well as __GI_strnlen. * sysdeps/powerpc/powerpc32/power7/strnlen.S (__strnlen): Use libc_hidden_def. * sysdeps/tile/tilegx/strnlen.c (__strnlen): Likewise.
* Fix fnmatch towlower namespace (bug 18469).Joseph Myers2015-06-025-6/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fnmatch brings in references to towlower (and thereby towupper), which isn't in all the standards that contain fnmatch, resulting in linknamespace test failures. (This is contrary to glibc conventions, rather than a standards conformance issue, because of the to* reservation.) This patch fixes this in the usual way, making those functions into weak aliases. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). This is on top of <https://sourceware.org/ml/libc-alpha/2015-06/msg00019.html>, but the two patches should be independent. (The __attribute_pure__ on the declarations in include/wctype.h comes from GCC's built-in attributes for towlower and towupper, and is needed to get the same code generation for fnmatch before and after the patch. It seems likely there are cases where the declaration of __foo in the internal headers is missing attributes from foo in the public headers, built-in to GCC or both, but I don't know a good way to detect such missing attributes.) [BZ #18469] * wctype/wcfuncs.c (towlower): Rename to __towlower and define as weak alias of __towlower. Use libc_hidden_weak. (towupper): Rename to __towupper and define as weak alias of __towupper. Use libc_hidden_weak. * include/wctype.h (__towlower): Declare. Use libc_hidden_proto. (__towupper): Likewise. * posix/fnmatch.c [HANDLE_MULTIBYTE && _LIBC] (FOLD): Use __towlower instead of towlower.
* Fix setenv.c diagnostic pragma to be compatible with GCC 4.6Roland McGrath2015-06-022-1/+10
|
* 2015-06-02 Szabolcs Nagy <szabolcs.nagy@arm.com>Wilco Dijkstra2015-06-022-26/+30
| | | | * sysdeps/aarch64/libm-test-ulps: Update.
* x86: clock_gettime and timespec_get vDSO cleanupAdhemerval Zanella2015-06-016-63/+21
| | | | | This patch removes the x86 specific timespec_get and clock_gettime implementation to use generic HAVE_CLOCK_GETTIME_VSYSCALL way.
* Fix ChangeLog entryAdhemerval Zanella2015-06-011-5/+5
|
* BZ #18116: Mark fixed in NEWS.Tulio Magno Quites Machado Filho2015-06-011-4/+4
|
* powerpc: setcontext.S uses power6 mtfsf when not supported [BZ #18116]Martin Sebor2015-06-013-14/+61
| | | | | | | | | | | | | The attached patch fixes a glibc build failure with gcc 5 on powerpc64le caused by a recent change in gcc where the compiler defines the _ARCH_PWR6 macro when processing assembly files but doesn't invoke the assembler in the corresponding machine mode (unless it has been explicitly configured to target POWER 6 or later). A bug had been filed with gcc for this (65341) but was closed as won't fix. Glibc relies on the _ARCH_PWR6 macro in a few .S files to make use of Power ISA 2.5 instructions (specifically, the four-argument form of the mtfsf insn). A similar problem had occurred in the past (bug 10118) but the fix that was committed for it didn't anticipate this new problem.
* benchtest: script to compare two benchmarksSiddhesh Poyarekar2015-06-013-0/+286
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This script is a sample implementation that uses import_bench to construct two benchmark objects and compare them. If detailed timing information is available (when one does `make DETAILED=1 bench`), it writes out graphs for all functions it benchmarks and prints significant differences in timings of the two benchmark runs. If detailed timing information is not available, it points out significant differences in aggregate times. Call this script as follows: compare_bench.py schema_file.json bench1.out bench2.out Alternatively, if one wants to set a different threshold for warnings (default is a 10% difference): compare_bench.py schema_file.json bench1.out bench2.out 25 The threshold in the example above is 25%. schema_file.json is the JSON schema (which is $srcdir/benchtests/scripts/benchout.schema.json for the benchmark output file) and bench1.out and bench2.out are the two benchmark output files to compare. The key functionality here is the compress_timings function which groups together points that are close together into a single point that is the mean of all its representative points. Any point in such a group is at most 1.5x the smallest point in that group. The detailed derivation is a comment in the function. * benchtests/scripts/compare_bench.py: New file. * benchtests/scripts/import_bench.py (mean): New function. (split_list): Likewise. (do_for_all_timings): Likewise. (compress_timings): Likewise.
* New module to import and process benchmark outputSiddhesh Poyarekar2015-06-013-25/+79
| | | | | | | | | | | | | | | This is the beginning of a module to import and process benchmark outputs. The module currently supports importing of a bench.out and validating it against a schema file. In future this could grow a set of routines that benchmark consumers may find useful to build their own analysis tools. I have altered validate_bench to use this module too. * benchtests/scripts/import_bench.py: New file. * benchtests/scripts/validate_benchout.py: Import import_bench instead of jsonschema. (validate_bench): Remove function. (main): Use import_bench.
* * resolv/res_hconf.c (_res_hconf_reorder_addrs): Use a union toSteve Ellcey2015-06-012-4/+15
| | | | copy data from cur_ifr->ifr_addr and cur_ifr->ifr_netmask.
* Update powerpc-fpu libm-test-ulps.Adhemerval Zanella2015-05-292-516/+454
|
* NaCl: Make thread exit wake pthread_join.Roland McGrath2015-05-285-2/+164
|
* NaCl: Fix lll_futex_timed_wait timeout calculation.Roland McGrath2015-05-282-12/+17
|
* Make sure that calloc is called at least onceH.J. Lu2015-05-284-8/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PLT relocations aren't required when -z now used. Linker on master with: commit 25070364b0ce33eed46aa5d78ebebbec6accec7e Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat May 16 07:00:21 2015 -0700 Don't generate PLT relocations for now binding There is no need for PLT relocations with -z now. We can use GOT relocations, which take less space, instead and replace 16-byte .plt entres with 8-byte .plt.got entries. bfd/ * elf32-i386.c (elf_i386_check_relocs): Create .plt.got section for now binding. (elf_i386_allocate_dynrelocs): Use .plt.got section for now binding. * elf64-x86-64.c (elf_x86_64_check_relocs): Create .plt.got section for now binding. (elf_x86_64_allocate_dynrelocs): Use .plt.got section for now binding. won't generate PLT relocations with -z now. elf/tst-audit2.c expect certain order of execution in ld.so.  With PLT relocations, the GOTPLT entry of calloc is update to calloc defined in tst-audit2: (gdb) bt     skip_ifunc=<optimized out>, reloc_addr_arg=<optimized out>,     version=<optimized out>, sym=<optimized out>, map=<optimized out>)     at ../sysdeps/i386/dl-machine.h:329 out>,     nrelative=<optimized out>, relsize=<optimized out>,     reladdr=<optimized out>, map=<optimized out>) at do-rel.h:137 reloc_mode=reloc_mode@entry=0,     consider_profiling=1, consider_profiling@entry=0) at dl-reloc.c:258     user_entry=0xffffcf1c, auxv=0xffffd0a8) at rtld.c:2133     start_argptr=start_argptr@entry=0xffffcfb0,     dl_main=dl_main@entry=0xf7fda6f0 <dl_main>) at ../elf/dl-sysdep.c:249    from /export/build/gnu/glibc-32bit/build-i686-linux/elf/ld.so (gdb) and then calloc is called: (gdb) c Continuing. Breakpoint 4, calloc (n=n@entry=20, m=4) at tst-audit2.c:18 18 { (gdb) bt     reloc_mode=reloc_mode@entry=0, consider_profiling=1,     consider_profiling@entry=0) at dl-reloc.c:272     user_entry=0xffffcf1c, auxv=0xffffd0a8) at rtld.c:2133     start_argptr=start_argptr@entry=0xffffcfb0,     dl_main=dl_main@entry=0xf7fda6f0 <dl_main>) at ../elf/dl-sysdep.c:249    from /export/build/gnu/glibc-32bit/build-i686-linux/elf/ld.so (gdb) With GOT relocation, calloc in ld.so is called first: (gdb) bt     consider_profiling=1) at dl-reloc.c:272     user_entry=0xffffcf0c, auxv=0xffffd098) at rtld.c:2074     start_argptr=start_argptr@entry=0xffffcfa0,     dl_main=dl_main@entry=0xf7fda6c0 <dl_main>) at ../elf/dl-sysdep.c:249    from /export/build/gnu/glibc-32bit-test/build-i686-linux/elf/ld.so (gdb) and then the GOT entry of calloc is updated: (gdb) bt     skip_ifunc=<optimized out>, reloc_addr_arg=<optimized out>,     version=<optimized out>, sym=<optimized out>, map=<optimized out>)     at ../sysdeps/i386/dl-machine.h:329 out>,     nrelative=<optimized out>, relsize=<optimized out>,     reladdr=<optimized out>, map=<optimized out>) at do-rel.h:137 reloc_mode=reloc_mode@entry=0,     consider_profiling=1, consider_profiling@entry=0) at dl-reloc.c:258     user_entry=0xffffcf0c, auxv=0xffffd098) at rtld.c:2133     start_argptr=start_argptr@entry=0xffffcfa0,     dl_main=dl_main@entry=0xf7fda6c0 <dl_main>) at ../elf/dl-sysdep.c:249    from /export/build/gnu/glibc-32bit-test/build-i686-linux/elf/ld.so (gdb) After that, since calloc isn't called from ld.so nor any other modules, magic in tst-audit2 isn't updated.  Both orders are correct. This patch makes sure that calloc in tst-audit2.c is called at least once from ld.so. [BZ #18422] * Makefile ($(objpfx)tst-audit2): Depend on $(libdl). ($(objpfx)tst-audit2.out): Also depend on $(objpfx)tst-auditmod9b.so. * elf/tst-audit2.c: Include <dlfcn.h>. (calloc_called): New. (calloc): Allow to be called more than once. (do_test): dllopen/dlclose $ORIGIN/tst-auditmod9b.so.
* 2015-05-28 Wilco Dijkstra <wdijkstr@arm.com>Wilco Dijkstra2015-05-283-10/+7
| | | | | * sysdeps/ieee754/dbl-64/s_fabs.c: (__fabs): Call __builtin_fabs. * sysdeps/ieee754/flt-32/s_fabsf.c: (__fabsf): Likewise.
* Fix monetary.h commentMarko Myllynen2015-05-272-2/+6
| | | | | | | | | | | | | | | On 2015-05-26 21:24, Siddhesh Poyarekar wrote: > On Tue, May 26, 2015 at 05:13:07PM +0300, Marko Myllynen wrote: >> this should be obvious, please commit if looks to be ok. >> >> 2015-05-26 Marko Myllynen <myllynen@redhat.com> >> >> * stdlib/monetary.h: Fix comment. > > Patch didn't apply to master, but I've fixed it up and pushed it. sorry about that (a whitespace hickup) - but your patch changed the wrong comment, so here's a new patch to fix the fix.
* tile: use better variable naming in INLINE_SYSCALLChris Metcalf2015-05-262-14/+21
| | | | | | | | | | | | | | | At issue for INLINE_SYSCALL was that it used "err" and "val" as variable names in a #define, so that if it was used in a context where the "caller" was also using "err" or "val", and those variables were passed in to INLINE_SYSCALL, we would end up referencing the internal shadowed variables instead. For example, "char val" in check_may_shrink_heap() in sysdeps/unix/sysv/linux/malloc-sysdep.h was being shadowed by the syscall return "val" in INLINE_SYSCALL, causing the "char val" not to get updated at all, and may_shrink_heap ended up always false. A similar fix was made to INTERNAL_VSYSCALL_CALL.
* NaCl: Fix thinko in last change.Roland McGrath2015-05-261-8/+9
|
* NaCl: Add NaCl-specific __lll_timedlock_wait.Roland McGrath2015-05-262-0/+54
|
* Split timed-wait functions out of nptl/lowlevellock.c.Roland McGrath2015-05-2615-84/+160
|
* Consolidate gettimeofday across aarch64/s390/tileAdhemerval Zanella2015-05-2611-88/+25
| | | | | | | | This patch removes the architecture specific gettimeofday implementation to use the vDSO symbol and consolidate it on a common Linux one. Similar to clock_gettime and clock_getres vDSO implementation, each port that supports gettimeofday through vDSO should just implement INLINE_VSYSCALL to access the symbol and define HAVE_{GETTIME,GETRES}_VSYSCAL as 1.
* Fix sorting order for Ukrainian locale (BZ 17293)Andriy Rysin2015-05-265-73/+76
| | | | | | | | | | | | | In the introduction for the official orthography rules for Ukrainian language (http://spelling.ulif.org.ua/peredmova.htm) there's a note that only apostrophe does not affect order of the words when sorting. As could be seen from the official alphabet the soft sign (U+044C/U+042C) has its hard position and thus affects the order and also letters "е" and "є" (CYR-IE: U+0435/U+0415 and UKR-IE: U+0454/U+0404) have their own positions and should have separate place when sorting. This also corresponds to official Unicode collation chart for these letters: http://unicode.org/charts/collation/chart_Cyrillic.html
* Fix monetary.h commentSiddhesh Poyarekar2015-05-262-1/+5
|
* struct stat is not posix conformSzabolcs Nagy2015-05-267-10/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On 21/05/15 05:29, Siddhesh Poyarekar wrote: > On Wed, May 20, 2015 at 06:55:02PM +0100, Szabolcs Nagy wrote: >> i guess it's ok for consistency if i fix struct stat64 >> too to use __USE_XOPEN2K8. >> >> i will run some tests and come back with a patch > > I also think it would be appropriate to change this code in other > architectures (microblaze and nacl IIRC) to make all of them > consistent. It is a mechanical enough change IMO that all arch > maintainer acks is not necessary. > here is the patch with consistent __USE_XOPEN2K8 ok to commit? 2015-05-21 Szabolcs Nagy <szabolcs.nagy@arm.com> [BZ #18234] * conform/data/sys/stat.h-data (struct stat): Add tests for st_atim, st_mtim and st_ctim members. * sysdeps/nacl/bits/stat.h (struct stat, struct stat64): Make st_atim, st_ctim, st_mtim visible under __USE_XOPEN2K8 only. * sysdeps/unix/sysv/linux/generic/bits/stat.h (struct stat,): (struct stat64): Likewise. * sysdeps/unix/sysv/linux/ia64/bits/stat.h (struct stat,): (struct stat64): Likewise. * sysdeps/unix/sysv/linux/microblaze/bits/stat.h (struct stat,): (struct stat64): Likewise.
* Consolidate vDSO macros and usageAdhemerval Zanella2015-05-2627-552/+409
| | | | | | | | | | | | | | | | This patch consolidate the Linux vDSO define and usage across all ports that uses it. The common vDSO definitions and calling through {INLINE/INTERNAL}_VSYSCALL macros are moved to a common header sysdep-vdso.h and vDSO name declaration and prototype is defined using a common macro. Also PTR_{MANGLE,DEMANGLE} is added to ports that does not use them for vDSO calls (aarch64, powerpc, s390, and tile) and thus it will reflect in code changes. For ports that already implement pointer mangling/demangling in vDSO system (i386, x32, x86_64) this patch is mainly a code refactor. Checked on x32, x86_64, x32, ppc64le, and aarch64.
* Localplt testing for vector math library and libmvec_hidden_* macro series.Andrew Senkevich2015-05-253-0/+28
| | | | | * elf/Makefile (localplt-built-dso): libmvec added to localplt test. * include/libc-symbols.h: libmvec_hidden_* macro series added.
* Don't issue an error if DT_PLTRELSZ is missingH.J. Lu2015-05-223-13/+11
| | | | | | | | | A shared object doesn't need PLT if there are no PLT relocations. It shouldn't be an error if DT_PLTRELSZ is missing. [BZ #18410] * elf/dl-reloc.c (_dl_relocate_object): Don't issue an error for missing DT_PLTRELSZ.
* Remove obsolete aliases that broke 'locale -a'Paul Eggert2015-05-223-4/+23
| | | | | | | | | [BZ #18412] * intl/locale.alias: Remove obsolete aliases "bokmål" and "français" which caused 'locale -a' to output Latin-1 data in UTF-8 locales, breaking some applications that use 'locale -a' output. Change the encoding of this file from Latin-1 to ASCII to avoid other potential problems with people grepping this file.
* Remove socket.S implementationAdhemerval Zanella2015-05-2263-1718/+702
| | | | | | | | | | | | | | | This patch removes the socket.S implementation for all ports and replace it by a C implementation using socketcall. For ports that implement the syscall directly, there is no change. The patch idea is to simplify the socket function implementation that uses the socketcall to be based on C implemetation instead of a pseudo assembly implementation with arch specific parts. The patch then remove the assembly implementatation for the ports which uses socketcall (i386, microblaze, mips, powerpc, sparc, m68k, s390 and sh). I have cross-build GLIBC for afore-mentioned ports and tested on both i386 and ppc32 without regressions.
* Fix soft-fp fma for -Wuninitialized.Joseph Myers2015-05-224-0/+43
| | | | | | | | | | | | | | | | | | | | | The soft-fp implementations of fma produce -Wuninitialized warnings because, in the cases where the result is not a nonzero finite value, the soft-fp does not set the exponent of the result since the (cooked) packing will do so, but the compiler does not then see that the exponent is always set in packing before it's used if it wasn't set earlier. This patch uses DIAG_* macros to suppress those warnings. Tested for mips64. (In fact this allows the mips64 build to complete with the -Wno-uninitialized removed from math/Makefile, but more cleanups are still needed in the ldbl-128ibm code for uninitialized warnings there.) * soft-fp/fmadf4.c: Include <libc-internal.h>. (__fma): Ignore uninitialized warnings around packing. * soft-fp/fmasf4.c: Include <libc-internal.h>. (__fmaf): Ignore uninitialized warnings around packing. * soft-fp/fmatf4.c: Include <libc-internal.h>. (__fmal): Ignore uninitialized warnings around packing.
* Fix ldbl-128 / ldbl-128ibm tanl for -Wuninitialized.Joseph Myers2015-05-223-0/+29
| | | | | | | | | | | | | | | The ldbl-128 and ldbl-128ibm implementations of tanl produce uninitialized variable warnings with -Wuninitialized because of a variable that is initialized only conditionally, then used under the same conditions under which it is set. This patch uses DIAG_* macros to suppress those warnings. Tested for powerpc and mips64. * sysdeps/ieee754/ldbl-128/k_tanl.c: Include <libc-internal.h>. (__kernel_tanl): Ignore uninitialized warnings around use of SIGN. * sysdeps/ieee754/ldbl-128ibm/k_tanl.c: Include <libc-internal.h>. (__kernel_tanl): Ignore uninitialized warnings around use of SIGN.
* Fix ldbl-128 / ldbl-128ibm erfcl for -WuninitializedJoseph Myers2015-05-223-2/+6
| | | | | | | | | | | | | | | | | | | The ldbl-128 and ldbl-128ibm implementations of erfcl produce uninitialized variable warnings with -Wuninitialized because of switch statements where in fact one of the cases will always be executed, but the compiler does not see that these cases cover all possibilities (and because the reasoning that it does involves inequalities on the representation of a floating point value leading to a set of possible values for 8.0 times that value, converted to int, it's highly nontrivial for the compiler to see that). This patch fixes those warnings by converting the last case in those switch statements to a "default" case. Tested for powerpc and mips64. * sysdeps/ieee754/ldbl-128/s_erfl.c (__erfcl): Make case 9 in switch statement into default case. * sysdeps/ieee754/ldbl-128ibm/s_erfl.c (__erfcl): Likewise.
* Fix ldbl-128 / ldbl-128ibm asinl for -Wuninitialized.Joseph Myers2015-05-223-4/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | The ldbl-128 and ldbl-128ibm implementations of asinl produce uninitialized variable warnings with -Wuninitialized because the code for small arguments in fact always returns but the compiler cannot see this and instead sees that a variable would be uninitialized if the "if (huge + x > one)" conditional used to force the "inexact" exception were false. All the code in libm trying to force "inexact" for functions that are not exactly defined is suspect and should be removed at some point given that we now have a clear definition of the accuracy goals for libm functions which, following C99/C11, does not require anything about "inexact" for most functions (likewise, the multi-precision code that tries to give correctly-rounded results, very slowly, for functions for which the goals clearly do not include correct rounding, if the faster paths are accurate enough). However, for now this patch simply changes the code to use math_force_eval, rather than "if", to ensure the evaluation of the inexact computation. Tested for powerpc and mips64. * sysdeps/ieee754/ldbl-128/e_asinl.c (__ieee754_asinl): Don't use a conditional in forcing "inexact". * sysdeps/ieee754/ldbl-128ibm/e_asinl.c (__ieee754_asinl): Likewise.
* Fix nptl-init.c use of INTERNAL_SYSCALL_DECL.Roland McGrath2015-05-222-11/+25
|
* Restore _POSIX2_C_VERSION definition (bug 438).Joseph Myers2015-05-224-11/+19
| | | | | | | | | | | | | | | | | | | My review of conformtest expectations for POSIX showed up that the _POSIX2_C_VERSION macro, required by POSIX and XPG standards before 2001, was missing in unistd.h, having been removed on 2003-04-03 despite those standards still being supported. This patch adds it back. As it's in the implementation namespace, there's no need for it to be conditional, and other such macros aren't conditional in this header either. Tested for x86_64 and x86 (testsuite). Note that this *does* change the installed libraries, because it affects the sysconf support (present all along) for _SC_2_C_VERSION. [BZ #438] * posix/unistd.h (_POSIX2_C_VERSION): New macro. * conform/Makefile (test-xfail-POSIX/unistd.h/conform): Remove variable.
* Fix pathconf basename namespace (bug 18444).Joseph Myers2015-05-226-6/+20
| | | | | | | | | | | | | | | | | | | | | pathconf (sysdeps/unix/sysv/linux/pathconf.c) uses basename. But pathconf is in POSIX back to 1990 while basename is only reserved with external linkage in those standards including XPG functions. This patch fixes this namespace issue in the usual way, renaming basename to __basename and making it into a weak alias. Tested for x86_64 and x86 (testsuite, and that disassembly of installed shared libraries is unchanged by the patch). [BZ #18444] * string/basename.c (basename): Rename to __basename and define as weak alias of __basename. Use libc_hidden_weak. * include/string.h (__basename): Declare. Use libc_hidden_proto. * sysdeps/unix/sysv/linux/pathconf.c (distinguish_extX): Call __basename instead of basename. * conform/Makefile (test-xfail-POSIX2008/unistd.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/unistd.h/linknamespace): Likewise.
* Fix indentation to match nesting in previous commitFlorian Weimer2015-05-221-1/+1
|
* Avoid some aliasing violations in libioFlorian Weimer2015-05-2212-24/+57
|
* Fix lgamma implementations for -Wuninitialized.Joseph Myers2015-05-214-0/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If you remove the "override CFLAGS += -Wno-uninitialized" in math/Makefile, you get errors from lgamma implementations of the form: ../sysdeps/ieee754/dbl-64/e_lgamma_r.c: In function '__ieee754_lgamma_r': ../sysdeps/ieee754/dbl-64/e_lgamma_r.c:297:13: error: 'nadj' may be used uninitialized in this function [-Werror=maybe-uninitialized] if(hx<0) r = nadj - r; This is one of the standard kinds of false positive uninitialized warnings: nadj is set under a certain condition, and then later used under the same condition. This patch uses DIAG_* macros to suppress the warning on the use of nadj. The ldbl-128 / ldbl-128ibm implementation has a substantially different structure that avoids this issue. Tested for x86_64. (In fact this patch eliminates the need for that -Wno-uninitialized on x86_64, but I want to test on more architectures before removing it.) * sysdeps/ieee754/dbl-64/e_lgamma_r.c: Include <libc-internal.h>. (__ieee754_lgamma_r): Ignore uninitialized warnings around use of NADJ. * sysdeps/ieee754/flt-32/e_lgammaf_r.c: Include <libc-internal.h>. (__ieee754_lgammaf_r): Ignore uninitialized warnings around use of NADJ. * sysdeps/ieee754/ldbl-96/e_lgammal_r.c: Include <libc-internal.h>. (__ieee754_lgammal_r): Ignore uninitialized warnings around use of NADJ.
* Fix sysdeps/ieee754/dbl-64/mpa.c for -Wuninitialized.Joseph Myers2015-05-212-2/+6
| | | | | | | | | | | | | | | | | | | | If you remove the "override CFLAGS += -Wno-uninitialized" in math/Makefile, one of the errors you get is: ../sysdeps/ieee754/dbl-64/mpa.c: In function '__mp_dbl.part.0': ../sysdeps/ieee754/dbl-64/mpa.c:183:5: error: 'c' may be used uninitialized in this function [-Werror=maybe-uninitialized] c *= X[0]; The problem is that the p < 5 case initializes c if p is 1, 2, 3 or 4 but not otherwise, and in fact p is positive for all calls to this function so the uninitialized case can't actually occur. This patch replaces the "if (p == 4)" last case with a comment so the compiler can see that all paths do initialize c. Tested for x86_64. * sysdeps/ieee754/dbl-64/mpa.c (norm): Remove if condition on (p == 4) case.
* linknamespace: whitelist re_syntax_options.Joseph Myers2015-05-213-5/+13
| | | | | | | | | | | | | | | | | This patch adds re_syntax_options (bug 18442) to the set of symbols that are whitelisted in the linknamespace tests because, while the references to them are genuine bugs that should be fixed, the involvement of data symbols makes them harder to fix than most such bugs. Tested for x86_64 and x86. * conform/linknamespace.pl (@whitelist): Add re_syntax_options. * conform/Makefile (test-xfail-UNIX98/regex.h/linknamespace): Remove variable. (test-xfail-XOPEN2K/regex.h/linknamespace): Likewise. (test-xfail-POSIX2008/regex.h/linknamespace): Likewise. (test-xfail-XOPEN2K8/regex.h/linknamespace): Likewise.
* vfprintf: Remove label name switching for the jump tableFlorian Weimer2015-05-212-17/+9
| | | | | Different labels are no longer needed because the tables are now in separate functions.
* vfprintf: Introduce printf_positional functionFlorian Weimer2015-05-212-347/+376
| | | | | | This splits a considerable chunk of code from the main vfprintf function. This will make it easier to remove the use of extend_alloca from the positional argument handling code.
* vfprintf: Move jump table definition and the macros out of functionFlorian Weimer2015-05-212-65/+72
| | | | | The second jump table will be moved to a separate function in the next commit.