about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
...
* Run check-localpltk/textrel/execstack over ld.so.Carlos O'Donell2014-11-0616-1/+151
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For maximum paranoia we run ld.so through the normal set of tests for all of the shared libraries. This includes running ld.so through check-localplt, check-textrel, and check-execstack. While none of these should trigger any failures given the way ld.so is built, it might possibly fail if a developer does something wrong. This paranoia was triggered by a discussion over the use of __strcpy vs. strcpy [1] and if the symbol could leak and use the libc.so version. The check-localplt test fails right away because localplt.data needs updating for all arches. By default we add 6 new symbols: __tls_get_addr, __libc_memalign, malloc, calloc, realloc and free. Other machines like i386, power, and s390 require some different symbol sets e.g. ___tls_get_addr vs. __tls_get_addr for i386. Verified for i386 Verified for x86_64 Verified for ppc32 Verified for ppc64 Verified for ppc64le Verified for arm Verified for aarch64 Verified for s390 Verified for s390x Guessed for alpha Guessed for ia64 Guessed for m68k Guessed for microblaze Guessed for sparc32 Guessed for sparc64 Defaults for sh Defaults for mips Defaults for hppa Defaults for tile Machine manintainers notified to double check the data used in localplt.data. [1] https://sourceware.org/ml/libc-alpha/2014-10/msg00548.html
* Remove INTDEF / INTUSE / INTVARDEF (bug 14132).Joseph Myers2014-11-058-36/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Completing the removal of the obsolete INTDEF / INTUSE mechanism, this patch removes the final use - that for _dl_starting_up - replacing it by rtld_hidden_def / rtld_hidden_proto. Having removed the last use, the mechanism itself is also removed. Tested for x86_64 that installed stripped shared libraries are unchanged by the patch. (This is not much of a test since this variable is only defined and used in the !HAVE_INLINED_SYSCALLS case.) [BZ #14132] * include/libc-symbols.h (INTUSE): Remove macro. (INTDEF): Likewise. (INTVARDEF): Likewise. (_INTVARDEF): Likewise. (INTDEF2): Likewise. (INTVARDEF2): Likewise. * elf/rtld.c [!HAVE_INLINED_SYSCALLS] (_dl_starting_up): Use rtld_hidden_def instead of INTVARDEF. * sysdeps/generic/ldsodefs.h [IS_IN_rtld] (_dl_starting_up_internal): Remove declaration. (_dl_starting_up): Use rtld_hidden_proto. * elf/dl-init.c [!HAVE_INLINED_SYSCALLS] (_dl_starting_up): Remove declaration. [!HAVE_INLINED_SYSCALLS] (_dl_starting_up_internal): Likewise. (_dl_init) [!HAVE_INLINED_SYSCALLS]: Don't use INTUSE with _dl_starting_up. * elf/dl-writev.h (_dl_writev): Likewise. * sysdeps/powerpc/powerpc64/dl-machine.h [!HAVE_INLINED_SYSCALLS] (DL_STARTING_UP_DEF): Use __GI__dl_starting_up instead of _dl_starting_up_internal.
* libio: Refactor tst-fmemopen to use test-skeleton.cAdhemerval Zanella2014-11-052-23/+76
| | | | | This patch refactor tst-fmemopen.c to use test-skeleton.c. No logic changes are added.
* benchtests: Add malloc microbenchmarkWill Newton2014-11-053-3/+325
| | | | | | | | | | | | | | | | | | | | Add a microbenchmark for measuring malloc and free performance with varying numbers of threads. The benchmark allocates and frees buffers of random sizes in a random order and measures the overall execution time and RSS. Variants of the benchmark are run with 1, 8, 16 and 32 threads. The random block sizes used follow an inverse square distribution which is intended to mimic the behaviour of real applications which tend to allocate many more small blocks than large ones. ChangeLog: 2014-11-05 Will Newton <will.newton@linaro.org> * benchtests/Makefile: (bench-malloc): Add malloc thread scalability benchmark. * benchtests/bench-malloc-threads.c: New file.
* [AArch64] Add optimized strchrnul.Richard Earnshaw2014-11-053-0/+136
| | | | | | | | | | | Here is an optimized implementation of __strchrnul. The simplification that we don't have to track precisely why the loop terminates (match or end-of-string) means we have to do less work in both setup and the core inner loop. That means this should never be slower than strchr. As with strchr, the use of LD1 means we do not need different versions for big-/little-endian.
* powerpc: Simplify encoding of POWER8 instructionAdhemerval Zanella2014-11-057-36/+22
|
* Modify several tests to use test-skeleton.cArjun Shankar2014-11-05124-250/+745
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch modifies several test cases to use test-skeleton.c. It was generated by a bash script written for this purpose and thus excludes several other tests which I deemed worth a visual inspection before making the change. I intend to follow up with individual patches to the tests skipped by the script. The script itself resides at http://git.io/WODAmg and should reproduce this very patch when run against master. ChangeLog: 2014-10-30 Arjun Shankar <arjun.is@lostca.se> * catgets/test-gencat.c: Use test-skeleton.c. * catgets/tst-catgets.c: Likewise. * csu/tst-empty.c: Likewise. * elf/tst-audit2.c: Likewise. * elf/tst-global1.c: Likewise. * elf/tst-pathopt.c: Likewise. * elf/tst-piemod1.c: Likewise. * elf/tst-tls10.c: Likewise. * elf/tst-tls11.c: Likewise. * elf/tst-tls12.c: Likewise. * gnulib/tst-gcc.c: Likewise. * iconvdata/tst-e2big.c: Likewise. * iconvdata/tst-loading.c: Likewise. * iconv/tst-iconv1.c: Likewise. * iconv/tst-iconv2.c: Likewise. * inet/test-inet6_opt.c: Likewise. * inet/tst-gethnm.c: Likewise. * inet/tst-network.c: Likewise. * inet/tst-ntoa.c: Likewise. * intl/tst-codeset.c: Likewise. * intl/tst-gettext2.c: Likewise. * intl/tst-gettext3.c: Likewise. * intl/tst-ngettext.c: Likewise. * intl/tst-translit.c: Likewise. * io/test-stat.c: Likewise. * libio/test-fmemopen.c: Likewise. * libio/tst-freopen.c: Likewise. * libio/tst-sscanf.c: Likewise. * libio/tst-ungetwc1.c: Likewise. * libio/tst-ungetwc2.c: Likewise. * libio/tst-widetext.c: Likewise. * localedata/tst-ctype.c: Likewise. * localedata/tst-digits.c: Likewise. * localedata/tst-leaks.c: Likewise. * localedata/tst-mbswcs1.c: Likewise. * localedata/tst-mbswcs2.c: Likewise. * localedata/tst-mbswcs3.c: Likewise. * localedata/tst-mbswcs4.c: Likewise. * localedata/tst-mbswcs5.c: Likewise. * localedata/tst-setlocale.c: Likewise. * localedata/tst-trans.c: Likewise. * localedata/tst-wctype.c: Likewise. * localedata/tst-xlocale1.c: Likewise. * login/tst-grantpt.c: Likewise. * malloc/tst-calloc.c: Likewise. * malloc/tst-malloc.c: Likewise. * malloc/tst-mallocstate.c: Likewise. * malloc/tst-mcheck.c: Likewise. * malloc/tst-mtrace.c: Likewise. * malloc/tst-obstack.c: Likewise. * math/atest-exp2.c: Likewise. * math/atest-exp.c: Likewise. * math/atest-sincos.c: Likewise. * math/test-matherr.c: Likewise. * math/test-misc.c: Likewise. * math/test-powl.c: Likewise. * math/tst-definitions.c: Likewise. * misc/tst-dirname.c: Likewise. * misc/tst-efgcvt.c: Likewise. * misc/tst-fdset.c: Likewise. * misc/tst-hsearch.c: Likewise. * misc/tst-mntent2.c: Likewise. * nptl/tst-sem7.c: Likewise. * nptl/tst-sem8.c: Likewise. * nptl/tst-sem9.c: Likewise. * nss/test-netdb.c: Likewise. * posix/tst-fnmatch.c: Likewise. * posix/tst-getlogin.c: Likewise. * posix/tst-gnuglob.c: Likewise. * posix/tst-mmap.c: Likewise. * pwd/tst-getpw.c: Likewise. * resolv/tst-inet_ntop.c: Likewise. * rt/tst-timer.c: Likewise. * stdio-common/test-fseek.c: Likewise. * stdio-common/test-popen.c: Likewise. * stdio-common/test-vfprintf.c: Likewise. * stdio-common/tst-cookie.c: Likewise. * stdio-common/tst-fileno.c: Likewise. * stdio-common/tst-gets.c: Likewise. * stdio-common/tst-obprintf.c: Likewise. * stdio-common/tst-perror.c: Likewise. * stdio-common/tst-sprintf2.c: Likewise. * stdio-common/tst-sprintf3.c: Likewise. * stdio-common/tst-sprintf.c: Likewise. * stdio-common/tst-swprintf.c: Likewise. * stdio-common/tst-tmpnam.c: Likewise. * stdio-common/tst-unbputc.c: Likewise. * stdio-common/tst-wc-printf.c: Likewise. * stdlib/tst-environ.c: Likewise. * stdlib/tst-fmtmsg.c: Likewise. * stdlib/tst-limits.c: Likewise. * stdlib/tst-rand48-2.c: Likewise. * stdlib/tst-rand48.c: Likewise. * stdlib/tst-random2.c: Likewise. * stdlib/tst-random.c: Likewise. * stdlib/tst-strtol.c: Likewise. * stdlib/tst-strtoll.c: Likewise. * stdlib/tst-tls-atexit.c: Likewise. * stdlib/tst-xpg-basename.c: Likewise. * string/test-ffs.c: Likewise. * string/tst-bswap.c: Likewise. * string/tst-inlcall.c: Likewise. * string/tst-strtok.c: Likewise. * string/tst-strxfrm.c: Likewise. * sysdeps/x86_64/tst-audit10.c: Likewise. * sysdeps/x86_64/tst-audit3.c: Likewise. * sysdeps/x86_64/tst-audit4.c: Likewise. * sysdeps/x86_64/tst-audit5.c: Likewise. * time/tst-ftime_l.c: Likewise. * time/tst-getdate.c: Likewise. * time/tst-mktime3.c: Likewise. * time/tst-mktime.c: Likewise. * time/tst-posixtz.c: Likewise. * time/tst-strptime2.c: Likewise. * time/tst-strptime3.c: Likewise. * wcsmbs/tst-btowc.c: Likewise. * wcsmbs/tst-mbrtowc.c: Likewise. * wcsmbs/tst-mbsrtowcs.c: Likewise. * wcsmbs/tst-wchar-h.c: Likewise. * wcsmbs/tst-wcpncpy.c: Likewise. * wcsmbs/tst-wcrtomb.c: Likewise. * wcsmbs/tst-wcsnlen.c: Likewise. * wcsmbs/tst-wcstof.c: Likewise.
* Don't use INTDEF/INTUSE with _dl_mcount (bug 14132).Joseph Myers2014-11-055-5/+14
| | | | | | | | | | | | | | | | | | | Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this patch replaces its use for _dl_mcount with use of rtld_hidden_def / rtld_hidden_proto. Tested for x86_64 that installed stripped shared libraries are unchanged by the patch. [BZ #14132] * elf/dl-profile.c (_dl_mcount): Use rtld_hidden_def instead of INTDEF. * sysdeps/generic/ldsodefs.h (_dl_mcount_internal): Remove declaration. (_dl_mcount): Use rtld_hidden_proto. * elf/dl-runtime.c (_dl_profile_fixup): Don't use INTUSE with _dl_mcount. * elf/rtld.c (_rtld_global_ro): Likewise.
* Don't use INTDEF/INTUSE with _dl_init (bug 14132).Joseph Myers2014-11-0420-24/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this patch eliminates its use for _dl_init. Since _dl_init was already declared with hidden visibility, creating a second hidden alias for it was completely pointless, so this patch replaces all uses of _dl_init_internal with plain _dl_init instead of using hidden_proto / hidden_def (which are only needed when you want a hidden alias for a non-hidden symbol; it's quite possible there are cases where they are used but don't need to be because the symbol in question is not part of the public ABI and is only used within a single library, so using attributes_hidden instead would suffice). Tested for x86_64 that installed stripped shared libraries are unchanged by the patch. [BZ #14132] * elf/dl-init.c (_dl_init): Don't use INTDEF. * sysdeps/aarch64/dl-machine.h (RTLD_START): Use _dl_init instead of _dl_init_internal. * sysdeps/alpha/dl-machine.h (RTLD_START): Likewise. * sysdeps/arm/dl-machine.h (RTLD_START): Likewise. * sysdeps/hppa/dl-machine.h (RTLD_START): Likewise. * sysdeps/i386/dl-machine.h (RTLD_START): Likewise. * sysdeps/ia64/dl-machine.h (RTLD_START): Likewise. * sysdeps/m68k/dl-machine.h (RTLD_START): Likewise. * sysdeps/microblaze/dl-machine.h (RTLD_START): Likewise. * sysdeps/mips/dl-machine.h (RTLD_START): Likewise. * sysdeps/powerpc/powerpc32/dl-start.S (_start): Likewise. * sysdeps/s390/s390-32/dl-machine.h (RTLD_START): Likewise. * sysdeps/s390/s390-64/dl-machine.h (RTLD_START): Likewise. * sysdeps/sh/dl-machine.h (RTLD_START): Likewise. * sysdeps/sparc/sparc32/dl-machine.h (RTLD_START): Likewise. * sysdeps/sparc/sparc64/dl-machine.h (RTLD_START): Likewise. * sysdeps/tile/dl-start.S (_start): Likewise. * sysdeps/x86_64/dl-machine.h (RTLD_START): Likewise. * sysdeps/x86_64/x32/dl-machine.h (RTLD_START): Likewise.
* Don't use INTDEF/INTUSE with _dl_argv (bug 14132).Joseph Myers2014-11-047-34/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this patch replaces its use for _dl_argv with rtld_hidden_data_def and rtld_hidden_proto. Some places in .S files that previously used _dl_argv_internal or INTUSE(_dl_argv) now use __GI__dl_argv directly (there are plenty of existing examples of such direct use of __GI_*). A single place in rtld.c previously used _dl_argv without INTUSE, apparently accidentally, while the rtld_hidden_proto mechanism avoids such accidential omissions. As a consequence, this patch *does* change the contents of stripped ld.so. However, the installed stripped shared libraries are identical to those you get if instead of this patch you change that single _dl_argv use to use INTUSE, without any other changes. Tested for x86_64 (testsuite as well as comparison of installed stripped shared libraries as described above). [BZ #14132] * sysdeps/generic/ldsodefs.h (_dl_argv): Use rtld_hidden_proto. [IS_IN_rtld] (_dl_argv_internal): Do not declare. (rtld_progname): Make macro definition unconditional. * elf/rtld.c (_dl_argv): Use rtld_hidden_data_def instead of INTDEF. (dlmopen_doit): Do not use INTUSE with _dl_argv. (dl_main): Likewise. * elf/dl-sysdep.c (_dl_sysdep_start): Likewise. * sysdeps/alpha/dl-machine.h (RTLD_START): Use __GI__dl_argv instead of _dl_argv_internal. * sysdeps/powerpc/powerpc32/dl-start.S (_dl_start_user): Use __GI__dl_argv instead of INTUSE(_dl_argv). * sysdeps/powerpc/powerpc64/dl-machine.h (RTLD_START): Use __GI__dl_argv instead of _dl_argv_internal.
* soft-fp: Add _FP_TO_INT_ROUND.Joseph Myers2014-11-046-0/+240
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the series of patches adding soft-fp features from the kernel version of soft-fp to glibc so that glibc's version is able to replace the old fork of soft-fp in the kernel, this patch adds the last major such feature: _FP_TO_INT_ROUND, converting a floating-point number to an integer with rounding according to the current rounding direction (as opposed to truncating towards zero, which _FP_TO_INT does). The general structure of the implementation follows that of _FP_TO_INT, but of course is more complicated. As with glibc's _FP_TO_INT it works with raw input (the kernel versions of these macros predate the conversion of _FP_TO_INT and many other macros to raw or semi-raw input). I have not tried to work out what bugs there might be in the kernel version that this might fix; it's a from-scratch implementation based on _FP_TO_INT. Tested for powerpc (soft-float) that there is no change to the installed shared libraries; also tested with the libm tests with lrint / lrintf / llrint / llrintf made to use _FP_TO_INT_ROUND, to provide some test of the functionality. As we don't have benchmarks for those functions, I haven't actually included the soft-fp versions of them, although I expect them to be faster than the existing code (given that the existing code involves adding and subtracting numbers such as 0x1p52 to achieve the desired rounding, which is not particularly efficient when the underlying floating point is software floating point). 2014-11-04 Joseph Myers <joseph@codesourcery.com> * soft-fp/op-common.h (_FP_TO_INT_ROUND): New macro. * soft-fp/double.h [_FP_W_TYPE_SIZE < 64] (FP_TO_INT_ROUND_D): New macro. [_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_ROUND_D): Likewise. * soft-fp/extended.h [_FP_W_TYPE_SIZE < 64] (FP_TO_INT_ROUND_E): New macro. [_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_ROUND_E): Likewise. * soft-fp/quad.h [_FP_W_TYPE_SIZE < 64] (FP_TO_INT_ROUND_Q): New macro. [_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_ROUND_Q): Likewise. * soft-fp/single.h (FP_TO_INT_ROUND_S): New macro.
* Remove unused includeAndreas Schwab2014-11-042-1/+4
|
* powerpc: Fix encoding of POWER8 instructionAdhemerval Zanella2014-11-032-1/+13
| | | | | This patch adds a binary encoding for 'mtvsrd' instruction to avoid build failures when assembler does not support POWER8.
* Don't error out writing a multibyte character to an unbuffered stream (bug ↵Andreas Schwab2014-11-035-7/+69
| | | | 17522)
* Fix sparc struct fpu definition.Jose E. Marchesi2014-11-012-1/+6
| | | | | * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (struct fpu): fix the size of the fpu_fr.fpu_dregs[] array.
* Remove __libc_nanosleep function name.Joseph Myers2014-11-013-5/+12
| | | | | | | | | | | | | | | Continuing the removal of unused __libc_* function names, this patch removes the __libc_nanosleep name. Tested for x86_64 (testsuite, and that the disassembly of installed shared libraries is unchanged by the patch; __nanosleep changes from weak to strong, which is of no significance). * posix/nanosleep.c (__libc_nanosleep): Rename to __nanosleep. (__nanosleep): Do not define as alias. (nanosleep): Define as alias of __nanosleep. * sysdeps/unix/sysv/linux/syscalls.list (nanosleep): Remove __libc_nanosleep name.
* Make aclocal.m4 comment mention updating install.texi for autoconf version.Joseph Myers2014-10-312-1/+7
| | | | | * aclocal.m4 (GLIBC_AUTOCONF_VERSION): Mention need to update install.texi in comment.
* powerpc: Change atomic_write_barrier to have release semantics.Torvald Riegel2014-10-314-1/+11
|
* Add a hook to enable load-time inspection of program headersMatthew Fortune2014-10-313-0/+47
| | | | | | | | | | | This hook can be used to perform additional compatibility checks between shared libraries by inspecting custom program header information. * elf/dl-machine-reject-phdr.h: New file. * elf/dl-load.c: #include that. (open_verify): Call elf_machine_reject_phdr_p and ignore the file if that returned true.
* BZ#17496: Fix gnu/lib-names.h dependency.Roland McGrath2014-10-312-64/+75
|
* Update autoconf version requirement in install.texi.Joseph Myers2014-10-313-2/+6
| | | | | | | | | | I noticed that install.texi was out of date with regard to the actual autoconf version requirement for regenerating configure scripts. This patch updates the documentation. * manual/install.texi (Tools for Compilation): Update autoconf version requirements. * INSTALL: Regenerated.
* Remove __libc_pselect alias.Joseph Myers2014-10-313-2/+4
| | | | | | | | | | | | Continuing the removal of unused __libc_* function names, this patch removes the __libc_pselect alias. Tested for x86_64 that installed stripped shared libraries are unchanged by this patch. * misc/pselect.c [!__pselect] (__libc_pselect): Remove alias. * sysdeps/unix/sysv/linux/pselect.c [__NR_pselect6] (__libc_pselect): Likewise.
* Add bug 15215 to NEWS; move bug 17344 to correct version's list in NEWS.Joseph Myers2014-10-311-3/+3
|
* Move powerpc64 pread/pwrite definitions to syscalls.list (bug 14138).Joseph Myers2014-10-316-221/+10
| | | | | | | | | | | | | | | | Concluding the move of syscall definitions to syscalls.list, where the removal of support for old kernel versions has made this possible, this patch removes C definitions of pread, pread64, pwrite and pwrite64 for powerpc64. As far as I can tell, the existing syscalls.list definitions in sysdeps/unix/sysv/linux/wordsize-64/syscalls.list should suffice to produce results equivalent to what these C files do. [BZ #14138] * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread.c: Remove file. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pread64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/pwrite64.c: Likewise.
* Fix SPARC atomic_write_barrier.Torvald Riegel2014-10-314-4/+13
|
* Clean up internal ctype.h header.Roland McGrath2014-10-302-16/+22
|
* Remove __libc_readv and __libc_writev function names.Joseph Myers2014-10-307-22/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the removal of __libc_* function names that are no longer used anywhere, this patch removes the __libc_readv and __libc_writev names. Tested for x86_64 that stripped installed shared libraries are unchanged by the patch. * include/sys/uio.h (__libc_readv): Remove declaration. (__libc_writev): Likewise. * misc/readv.c (__libc_readv): Rename to __readv. (__readv): Do not define as alias. (readv): Define as alias of __readv. * misc/writev.c (__libc_writev): Rename to __writev. (__writev): Do not define as alias. (writev): Define as alias of __writev. * sysdeps/posix/readv.c (__libc_readv): Rename to __readv. (__readv): Do not define as alias. (readv): Define unconditionally as alias of __readv. * sysdeps/posix/writev.c (__libc_writev): Rename to __writev. (__writev): Do not define as alias. (writev): Define unconditionally as alias of __writev. * sysdeps/unix/syscalls.list (readv): Do not define __libc_readv name. (writev): Do not define __libc_writev name.
* Clean up wchar_t conversion code in iconv program.Roland McGrath2014-10-302-79/+61
|
* Remove __libc_creat function name.Joseph Myers2014-10-307-9/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | glibc has lots of __libc_* function names that no longer serve any purpose (are not used for any calls or exported at a public symbol version). This patch removes __libc_creat. It has the effect of creat becoming a strong symbol instead of a weak symbol in various cases, but that's fine; in shared libraries it doesn't matter at all, while for static linking the only other symbol sometimes defined in the same object is creat64, and whenever creat64 is a reserved name so is creat. Other such cases of unnecessary __libc_* symbols are expected to be dealt with in separate patches over time. Tested for x86_64 (testsuite, and that the disassembly of installed shared libraries is unchanged by the patch). * include/fcntl.h (__libc_creat): Remove declaration. * io/creat.c (__libc_creat): Rename to creat. (creat): Do not define as alias. * sysdeps/unix/sysv/linux/alpha/creat.c (creat64): Define as alias of creat instead of __libc_creat. * sysdeps/unix/sysv/linux/generic/creat.c (__libc_creat): Rename to creat. (creat): Do not define as alias. [__WORDSIZE == 64] (creat64): Define as alias of creat instead of __libc_creat. * sysdeps/unix/sysv/linux/syscalls.list (creat): Do not define __libc_creat name. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (creat): Likewise.
* manual/llio.texi: Add Linux-specific comments for write().Carlos O'Donell2014-10-292-0/+30
| | | | | | | | | | Add Linux-specific comments about the atomicity of write() and the POSIX requirements. 2014-10-29 Carlos O'Donell <carlos@redhat.com> * manual/llio.texi: Add comments discussing why write() may be considered MT-unsafe on Linux.
* elf/dl-load.c: Use __strdup.Carlos O'Donell2014-10-282-19/+12
| | | | | | | | | | | | | | | | | | | | | | During a refactoring pass several repeated blocks of code in dl-load.c were turned into a call to a local function named local_strdup. There is no need for local_strdup, and the routines should instead call __strdup. This change does just that. We call the internal symbol __strdup because calling strdup is unsafe. The user might be using a standard that doesn't include strdup and may have defined this symbol in their application. During a static link we might reference the user defined symbol and crash if it doesn't implement a standards conforming strdup. The resulting code is simpler to understand, and makes it easier to debug. No regressions on x86_64. 2014-10-28 Carlos O'Donell <carlos@redhat.com> * dl-load.c (local_strdup): Remove. (expand_dynamic_string_token): Use __strdup. (decompose_rpath): Likewise. (_dl_map_object): Likewise.
* Don't use INTDEF/INTUSE in unwind-dw2-fde.c (bug 14132).Joseph Myers2014-10-282-15/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this patch replaces its use in unwind-dw2-fde.c with hidden_def and hidden_proto. Tested for x86. This patch does result in code generation differences (for some reason GCC decides to partition __register_frame_info_bases after the patch). [BZ #14132] * sysdeps/generic/unwind-dw2-fde.c (__register_frame_info_bases_internal): Do not declare. (__register_frame_info_table_bases_internal): Likewise. (__deregister_frame_info_bases_internal): Likewise. (__register_frame_info_bases): Declare and use hidden_proto before definition. Use hidden_def instead of INTDEF. (__register_frame_info_table_bases): Likewise. (__deregister_frame_info_bases): Likewise. (__register_frame_info): Do not use INTUSE. (__register_frame): Likewise. (__register_frame_info_table): Likewise. (__register_frame_table): Likewise. (__deregister_frame_info): Likewise. (__deregister_frame): Likewise.
* arm: Re-enable PI futex support for ARM kernels >= 3.14.3Gratian Crisan2014-10-272-4/+16
| | | | | | | | | | | | | | | | | | | ARM linux kernels before 3.14.3 may or may not support futex_atomic_cmpxchg_inatomic depending on the kernel configuration (e.g. CONFIG_CPU_USE_DOMAINS && CONFIG_SMP configuration was not supported) Starting with 3.14.3 the linux kernel unconditionally enables support for ARM, and this re-enables the relevant __ASSUME_* macros. Tested on ARM both with kernels >= 3.14.3 and older kernels. * sysdeps/unix/sysv/linux/arm/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x030E03] (__ASSUME_FUTEX_LOCK_PI): Do not undefine. [__LINUX_KERNEL_VERSION >= 0x030E03] (__ASSUME_REQUEUE_PI): Likewise. [__LINUX_KERNEL_VERSION >= 0x030E03] (__ASSUME_SET_ROBUST_LIST): Likewise.
* Move setfsgid/setfsuid definitions to syscalls.list (bug 14138).Joseph Myers2014-10-2719-77/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the move of syscall definitions to syscalls.list, where the removal of support for old kernel versions has made this possible, this patch moves various definitions of setfsgid and setfsuid. Tested for x86. [BZ #14138] * sysdeps/unix/sysv/linux/arm/setfsgid.c: Remove file. * sysdeps/unix/sysv/linux/arm/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/sh/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/sh/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/setfsgid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/setfsuid.c: Likewise. * sysdeps/unix/sysv/linux/arm/syscalls.list (setfsgid): Add syscall. (setfsuid): Likewise. * sysdeps/unix/sysv/linux/i386/syscalls.list (setfsgid): Likewise. (setfsuid): Likewise. * sysdeps/unix/sysv/linux/m68k/syscalls.list (setfsgid): Likewise. (setfsuid): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list (setfsgid): Likewise. (setfsuid): Likewise. * sysdeps/unix/sysv/linux/sh/syscalls.list (setfsgid): Likewise. (setfsuid): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list (setfsgid): Likewise. (setfsuid): Likewise.
* Fix misdetected Slow_SSE4_2 cpu feature bit (bug 17501)Andreas Schwab2014-10-276-11/+21
|
* Rework compiler version check in configure.Roland McGrath2014-10-243-66/+48
|
* Prototypify htonl and htons definitions.Roland McGrath2014-10-243-4/+7
|
* This patch improves strncat performance by using strlen. Strlen has a fast C ↵Wilco Dijkstra2014-10-242-4/+6
| | | | | | | | | implementation, so this will improve performance even on targets which don't have an optimized strlen. It is about twice as fast as the original strncat in bench-strncat.
* This patch improves strcat performance by using strlen and strcpy. Strlen ↵Wilco Dijkstra2014-10-242-20/+5
| | | | | | | | has a fast C implementation, so this improves performance even on targets which don't have an optimized strlen and strcpy - it is 25% faster in bench-strcat. On targets which don't provide an optimized strcat but which do have an optimized strlen and strcpy, performance gain is > 2x.
* Call libc_fetestexcept_aarch64 from math_private.h rather than duplicating ↵Wilco Dijkstra2014-10-242-8/+7
| | | | functionality.
* Call libc_feholdexcept_aarch64 from math_private.h rather than duplicating ↵Wilco Dijkstra2014-10-242-24/+7
| | | | functionality.
* Call get_rounding_mode rather than duplicating functionality.Wilco Dijkstra2014-10-242-4/+7
|
* Cleanup feenableexcept to use the same logic as the ARM version. No ↵Wilco Dijkstra2014-10-242-6/+6
| | | | functional changes.
* Cleanup fedisableexcept to use the same logic as the ARM version. No ↵Wilco Dijkstra2014-10-242-6/+6
| | | | functional changes.
* Cleanup feclearexcept to use the same logic as the ARM version. No ↵Wilco Dijkstra2014-10-242-1/+6
| | | | functional changes.
* Cleanup fesetexceptflag to use the same logic as the ARM version. No ↵Wilco Dijkstra2014-10-242-2/+8
| | | | functional changes.
* Remove an unused include.Wilco Dijkstra2014-10-242-1/+5
|
* Move get*id and getgroups definitions to syscalls.list (bug 14138).Joseph Myers2014-10-2447-278/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the move of syscall definitions to syscalls.list, where the removal of support for old kernel versions has made this possible, this patch moves various definitions of get*id functions and getgroups. The previous C definitions were because of the transition to 32-bit uids and gids. Tested for x86. [BZ #14138] * sysdeps/unix/sysv/linux/arm/getegid.c: Remove file. * sysdeps/unix/sysv/linux/arm/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/arm/getgid.c: Likewise. * sysdeps/unix/sysv/linux/arm/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/arm/getresgid.c: Likewise. * sysdeps/unix/sysv/linux/arm/getresuid.c: Likewise. * sysdeps/unix/sysv/linux/arm/getuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/getegid.c: Likewise. * sysdeps/unix/sysv/linux/i386/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/getgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/i386/getresgid.c: Likewise. * sysdeps/unix/sysv/linux/i386/getresuid.c: Likewise. * sysdeps/unix/sysv/linux/i386/getuid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getegid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getgid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getresgid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getresuid.c: Likewise. * sysdeps/unix/sysv/linux/m68k/getuid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getegid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getgid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getresgid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getresuid.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getuid.c: Likewise. * sysdeps/unix/sysv/linux/sh/getegid.c: Likewise. * sysdeps/unix/sysv/linux/sh/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/sh/getgid.c: Likewise. * sysdeps/unix/sysv/linux/sh/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/sh/getresgid.c: Likewise. * sysdeps/unix/sysv/linux/sh/getresuid.c: Likewise. * sysdeps/unix/sysv/linux/sh/getuid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getegid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/geteuid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getgid.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getgroups.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/getuid.c: Likewise. * sysdeps/unix/sysv/linux/arm/syscalls.list (getegid): Add syscall. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getresgid): Likewise. (getresuid): Likewise. (getgroups): Likewise. * sysdeps/unix/sysv/linux/i386/syscalls.list (getegid): Likewise. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getresgid): Likewise. (getresuid): Likewise. (getgroups): Likewise. * sysdeps/unix/sysv/linux/m68k/syscalls.list (getegid): Likewise. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getresgid): Likewise. (getresuid): Likewise. (getgroups): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list (getegid): Likewise. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getresgid): Likewise. (getresuid): Likewise. (getgroups): Likewise. * sysdeps/unix/sysv/linux/sh/syscalls.list (getegid): Likewise. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getresgid): Likewise. (getresuid): Likewise. (getgroups): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list (getegid): Likewise. (geteuid): Likewise. (getgid): Likewise. (getuid): Likewise. (getgroups): Likewise.
* Move some chown / lchown / fchown definitions to syscalls.list (bug 14138).Joseph Myers2014-10-2418-280/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Continuing the move of syscall definitions to syscalls.list, where the removal of support for old kernel versions has made this possible, this patch moves various definitions of chown, lchown and fchown. In most cases the need for special syscalls.list entries (rather than existing generic ones) is because these architectures use chown32, lchown32 and fchown32 as syscall names. Some architectures also have symbol versioning compatibility for older versions of chown having been equivalent to lchown. The aliases specified for s390-32 had the effect of exporting __chown@@GLIBC_2.1 (but not __chown@GLIBC_2.0) despite it not being listed in Versions files. (I'm not sure why versioned_symbol but not compat_symbol were effective like that to create such __chown exports in the absence of Versions entries.) The natural way to preserve that versioned export of __chown seems to be to add it in a Versions file, so I did so. (Maybe actually it should be a compat symbol, __chown@GLIBC_2.1, unless there's a good reason for that export, but this patch doesn't change anything there.) Tested for x86. [BZ #14138] * sysdeps/unix/sysv/linux/i386/chown.c: Remove file. * sysdeps/unix/sysv/linux/i386/fchown.c: Likewise. * sysdeps/unix/sysv/linux/i386/lchown.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/chown.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/fchown.c: Remove file. * sysdeps/unix/sysv/linux/s390/s390-32/lchown.c: Likewise. * sysdeps/unix/sysv/linux/sh/chown.c: Likewise. * sysdeps/unix/sysv/linux/sh/fchown.c: Likewise. * sysdeps/unix/sysv/linux/sh/lchown.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/chown.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/fchown.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/lchown.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/Versions (GLIBC_2.1): Add __chown. * sysdeps/unix/sysv/linux/i386/syscalls.list (chown): Add syscall. (lchown): Likewise. (fchown): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list (chown): Likewise. (lchown): Likewise. (fchown): Likewise. * sysdeps/unix/sysv/linux/sh/syscalls.list (chown): Likewise. (lchown): Likewise. (fchown): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list (chown): Likewise. (lchown): Likewise. (fchown): Likewise.
* Remove spaces.Wilco Dijkstra2014-10-245-4/+7
|