aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-03-04S390: Increase function alignment to 16 bytes.Stefan Liebler
Set the default function alignment to 16 bytes in order to get rid of some unwanted performance effects. Please see also GCC commit "S/390: Set default function alignment to 16." (Subversion revision 262817) ChangeLog: * sysdeps/s390/s390-64/sysdep.h(ENTRY): Use alignment of 16byte. * sysdeps/s390/s390-32/sysdep.h: Likewise.
2019-03-02ja_JP: Change the offset for Taisho gan-nen from 2 to 1 [BZ #24162]TAMUKI Shoichi
The offset in era-string format for Taisho gan-nen (1912) is currently defined as 2, but it should be 1. So fix it. "Gan-nen" means the 1st (origin) year, Taisho started on July 30, 1912. Reported-by: Morimitsu, Junji <junji.morimitsu@hpe.com> Reviewed-by: Rafal Luzynski <digitalfreak@lingonborough.com> ChangeLog: [BZ #24162] * localedata/locales/ja_JP (LC_TIME): Change the offset for Taisho gan-nen from 2 to 1. Problem reported by Morimitsu, Junji.
2019-03-01ldbl-opt: Reuse test cases from misc/ that check long doubleGabriel F. T. Gomes
This patch adds test cases for the compatibility versions of the functions: err, errx, verr, verrx, warn, warnx, vwarn, vwarnx (from err.h), error, and error_at_line (from error.h), when long double has the same format as double (-mlong-double-64). Tested for powerpc, powerpc64 and powerpc64le.
2019-03-01ldbl-opt: Add error and error_at_line (bug 23984)Gabriel F. T. Gomes
On platforms where long double may have the same format as double (-mlong-double-64), error and error_at_line do not take that into account and might produce wrong output if a long double conversion is requested by the format string ('%Lf'). This patch adds compatibility functions for this situation and redirects calls via header magic. Tested for powerpc, powerpc64 and powerpc64le.
2019-03-01ldbl-opt: Add err, errx, verr, verrx, warn, warnx, vwarn, and vwarnx (bug 23984)Gabriel F. T. Gomes
When support for long double format with 128-bits (-mlong-double-128) was added for platforms where long double had the same format as double, such as powerpc, compatibility versions for the functions listed in the commit title were missed. Since the older format of long double can still be used (with -mlong-double-64), using these functions with a format string that requests the printing of long double variables will produce wrong outputs. This patch adds the missing compatibility functions and header magic to redirect calls to them when -mlong-double-64 is in use. Tested for powerpc, powerpc64 and powerpc64le.
2019-03-01ldbl-opt: Reuse argp tests that print long doubleGabriel F. T. Gomes
The test case tst-ldbl-argp checks that the conversion specifier '%Lf' correctly prints long double values with the default long double format for a platform. This patch reuses the test case for long double with the same format as double (-mlong-double-64). Tested for powerpc, powerpc64 and powerpc64le.
2019-03-01ldbl-opt: Add argp_error and argp_failure (bug 23983)Gabriel F. T. Gomes
The functions argp_error and argp_failure are missing support for printing long double values when long double has the same format as double. This patch adds the new functions __nldbl_argp_error and __nldbl_argp_failure, as well as header magic to redirect calls to them when -mlong-double-64 is in use. Tested for powerpc, powerpc64 and powerpc64le.
2019-03-01elf/tst-big-note: Improve accuracy of test [BZ #20419]Florian Weimer
It is possible that the link editor injects an allocated ABI tag note before the artificial, allocated large note in the test. Note parsing in open_verify stops when the first ABI tag note is encountered, so if the ABI tag note comes first, the problematic code is not actually exercised. Also tweak the artificial note so that it is a syntactically valid 4-byte aligned note, in case the link editor tries to parse notes and process them. Improves the testing part of commit 0065aaaaae51cd60210ec3a7e13. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-03-01S390: Fix introduction of __wcscpy and weak wcscpy symbols.Stefan Liebler
The recent commit 81a14439417552324ec6ca71f65ddf8e7cdd51c7 has introduced __wcscpy, __GI___wcscpy and the weak alias wcscpy. This patch also introduces those symbols if glibc is build with CFLAGS="-march=z13" where the ifunc is omitted. ChangeLog: * sysdeps/s390/wcscpy-vx.S: Add strong aliases to __wcscpy, __GI___wcscpy and weak alias to wcscpy.
2019-03-01__netlink_assert_response: Add more __libc_fatal newlines [BZ #20271]Florian Weimer
Commit a6e8926f8d49a213a9abb1a61f6af964f612ab7f ("[BZ #20271] Add newlines in __libc_fatal calls.") missed two places that need changing.
2019-02-28Add more spaces before '('.Joseph Myers
This patch fixes more places where a space should have been present before '(' in accordance with the GNU Coding Standards (as with the previous patch, mainly for calls to sizeof). Tested with build-many-glibcs.py. * sysdeps/powerpc/powerpc32/dl-machine.c (__elf_machine_fixup_plt): Use space before '('. (__process_machine_rela): Likewise. * sysdeps/powerpc/powerpc32/register-dump.h (register_dump): Likewise. * sysdeps/powerpc/powerpc64/le/fpu/sfp-machine.h (TI_BITS): Likewise. * sysdeps/powerpc/powerpc64/register-dump.h (register_dump): Likewise. * sysdeps/powerpc/test-arith.c (union_t): Likewise. (pattern): Likewise. (delta): Likewise. (check_result): Likewise. (check_excepts): Likewise. (check_op): Likewise. (fail_xr): Likewise. * sysdeps/unix/alpha/sysdep.h (syscall_promote): Likewise. * sysdeps/unix/sysv/linux/alpha/a.out.h (AOUTHSZ): Likewise. (SCNHSZ): Likewise. * sysdeps/unix/sysv/linux/hppa/makecontext.c (FRAME_SIZE_BYTES): Likewise. (ARGS): Likewise. (__makecontext): Likewise. * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h (ucontext_t): Likewise.
2019-02-28elf: Add tests with a local IFUNC resolver [BZ #23937]Florian Weimer
The existing tests all use global symbols (but with different visibility). Local symbols could be treated differently by the compiler and linker (as was the case on POWER ELFv2, causing bug 23937), and we did not have test coverage for this. Tested on x86-64 and POWER ELFv2 little-endian, with and without --disable-multi-arch. On POWER, the test cases elf/ifuncmain9, elf/ifuncmain9pic, elf/ifuncmain9pie reproduce bug 23937 with older binutils.
2019-02-27elf/Makefile: Run IFUNC tests if binutils supports IFUNCH.J. Lu
We should run IFUNC tests with --disable-multi-arch if the toolchain supports IFUNCs. For correctness, --disable-multi-arch must not remove IFUNC support from the loader. Tested on x86-64, x32 and i686 with and without --disable-multi-arch. * configure.ac (have-ifunc): New LIBC_CONFIG_VAR. * configure: Regenerated. * elf/Makefile: Run IFUNC tests if binutils supports IFUNC. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2019-02-27powerpc: Fix linknamespace introduced by 4d8015639a75Adhemerval Zanella
This patch fixes the linknamespace issues add on wcscpy refactor for powerpc-linux-gnu-power4 as shown by the tests: FAIL: conform/POSIX/fnmatch.h/linknamespace FAIL: conform/POSIX/glob.h/linknamespace FAIL: conform/POSIX/wordexp.h/linknamespace FAIL: conform/XPG4/fnmatch.h/linknamespace FAIL: conform/XPG4/glob.h/linknamespace FAIL: conform/XPG4/wordexp.h/linknamespace FAIL: conform/XPG42/fnmatch.h/linknamespace FAIL: conform/XPG42/glob.h/linknamespace FAIL: conform/XPG42/wordexp.h/linknamespace [initial] wordexp -> [libc.a(wordexp.o)] fnmatch -> [libc.a(fnmatch.o)] __wcscat -> [libc.a(wcscat.o)] __wcscpy -> [libc.a(wcscpy.o)] wcscpy Checked on powerpc-linux-gnu-power4. * sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c: Define ifunc symbol as __wcspcy instead of wcscpy.
2019-02-27hurd: Add renameat2 support for RENAME_NOREPLACESamuel Thibault
* include/stdio.h (__renameat2): New hidden prototype. * stdio-common/renameat2.c (__renameat2): Add hidden definition. * sysdeps/mach/hurd/renameat.c (__renameat): Move implementation to... * sysdeps/mach/hurd/renameat2.c (__renameat2): ... new function, and add support for RENAME_NOREPLACE. * sysdeps/unix/sysv/linux/renameat2.c (__renameat2): Add hidden definition.
2019-02-27Fix -Wempty-body warnings in Hurd-specific code.Joseph Myers
This patch fixes -Wempty-body warnings in Hurd-specific code that show up building glibc with -Wextra. Note: there also such warnings on many platforms arising from the default definition of HP_TIMING_NOW in sysdeps/generic/hp-timing.h, but no change there is proposed in this patch because of other changes under discussion in that area that would result in a nonempty definition. Tested with build-many-glibcs.py. * hurd/hurdinit.c (_hurd_init): Use braces around empty body of an if statement.
2019-02-27Add some spaces before '('.Joseph Myers
This patch fixes various places where a space should have been present before '(' in accordance with the GNU Coding Standards. Most but not all of the fixes in this patch are for calls to sizeof (but it's not exhaustive regarding such calls that should be fixed). Tested for x86_64, and with build-many-glibcs.py. * benchtests/bench-strcpy.c (do_test): Use space before '('. * benchtests/bench-string.h (cmdline_process_function): Likewise. * benchtests/bench-strlen.c (do_test): Likewise. (test_main): Likewise. * catgets/gencat.c (read_old): Likewise. * elf/cache.c (load_aux_cache): Likewise. * iconvdata/bug-iconv8.c (do_test): Likewise. * math/test-tgmath-ret.c (do_test): Likewise. * nis/nis_call.c (rec_dirsearch): Likewise. * nis/nis_findserv.c (__nis_findfastest_with_timeout): Likewise. * nptl/tst-audit-threads.c (do_test): Likewise. * nptl/tst-cancel4-common.h (set_socket_buffer): Likewise. * nss/nss_test1.c (init): Likewise. * nss/test-netdb.c (test_hosts): Likewise. * posix/execvpe.c (maybe_script_execute): Likewise. * stdio-common/tst-fmemopen4.c (do_test): Likewise. * stdio-common/tst-printf.c (do_test): Likewise. * stdio-common/vfscanf-internal.c (__vfscanf_internal): Likewise. * stdlib/fmtmsg.c (NKEYWORDS): Likewise. * stdlib/qsort.c (STACK_SIZE): Likewise. * stdlib/test-canon.c (do_test): Likewise. * stdlib/tst-swapcontext1.c (do_test): Likewise. * string/memcmp.c (OPSIZ): Likewise. * string/test-strcpy.c (do_test): Likewise. (do_random_tests): Likewise. * string/test-strlen.c (do_test): Likewise. (test_main): Likewise. * string/test-strrchr.c (do_test): Likewise. (do_random_tests): Likewise. * string/tester.c (test_memrchr): Likewise. (test_memchr): Likewise. * sysdeps/generic/memcopy.h (OPSIZ): Likewise. * sysdeps/generic/unwind-dw2.c (execute_stack_op): Likewise. * sysdeps/generic/unwind-pe.h (read_sleb128): Likewise. (read_encoded_value_with_base): Likewise. * sysdeps/hppa/dl-machine.h (elf_machine_runtime_setup): Likewise. * sysdeps/hppa/fpu/feupdateenv.c (__feupdateenv): Likewise. * sysdeps/ia64/fpu/sfp-machine.h (TI_BITS): Likewise. * sysdeps/mach/hurd/spawni.c (__spawni): Likewise. * sysdeps/posix/spawni.c (maybe_script_execute): Likewise. * sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (query_auxv): Likewise. * sysdeps/unix/sysv/linux/aarch64/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/arm/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/arm/ioperm.c (init_iosys): Likewise. * sysdeps/unix/sysv/linux/csky/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/m68k/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/nios2/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/spawni.c (maybe_script_execute): Likewise. * sysdeps/unix/sysv/linux/x86/bits/procfs.h (ELF_NGREG): Likewise. * sysdeps/unix/sysv/linux/x86/bits/sigcontext.h (FP_XSTATE_MAGIC2_SIZE): Likewise. * sysdeps/x86/fpu/sfp-machine.h (TI_BITS): Likewise. * time/test_time.c (main): Likewise.
2019-02-27wcsmbs: optimize wcsnlenAdhemerval Zanella
This patch rewrites wcsnlen using wmemchr. The generic wmemchr already uses the strategy (loop unrolling and tail handling) and by using it it allows architectures that have optimized wmemchr (s390 and x86_64) to optimize wcsnlen as well. Checked on x86_64-linux-gnu. * wcsmbs/wcsnlen.c (__wcsnlen): Rewrite using wmemchr.
2019-02-27wcsmbs: optimize wcsncpyAdhemerval Zanella
This patch rewrites wcsncpy using wcsnlen, wmemset, and wmemcpy. This is similar to the optimization done on strncpy by f6482cf29d and 6423d4754c. Checked on x86_64-linux-gnu. * wcsmbs/wcsncpy.c (__wcsncpy): Rewrite using wcsnlen, wmemset, and wmemcpy.
2019-02-27wcsmbs: optimize wcsncatAdhemerval Zanella
This patch rewrites wcsncat using wcslen, wcsnlen, and wmemcpy. This is similar to the optimization done on strncat by 3eb38795db and e80514b5a8. Checked on x86_64-linux-gnu. * wcsmbs/wcsncat.c (wcsncat): Rewrite using wcslen, wcsnlen, and wmemcpy.
2019-02-27wcsmbs: optimize wcscpyAdhemerval Zanella
This patch rewrites wcscpy using wcslen and wmemcpy. This is similar to the optimization done on strcpy by b863d2bc4d. Checked on x86_64-linux-gnu. * wcsmbs/wcscpy.c (__wcpcpy): Rewrite using wcslen and wmemcpy.
2019-02-27wcsmbs: optimize wcscatAdhemerval Zanella
This patch rewrites wcscat using wcslen and wcscpy. This is similar to the optimization done on strcat by 6e46de42fe. The strcpy changes are mainly to add the internal alias to avoid PLT calls. Checked on x86_64-linux-gnu and a build against the affected architectures. * include/wchar.h (__wcscpy): New prototype. * sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c (__wcscpy): Route internal symbol to generic implementation. * sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy.c (wcscpy): Add internal __wcscpy alias. * sysdeps/powerpc/powerpc64/multiarch/wcscpy.c (wcscpy): Likewise. * sysdeps/s390/wcscpy.c (wcscpy): Likewise. * sysdeps/x86_64/multiarch/wcscpy.c (wcscpy): Likewise. * wcsmbs/wcscpy.c (wcscpy): Add * sysdeps/x86_64/multiarch/wcscpy-c.c (WCSCPY): Adjust macro to use generic implementation. * wcsmbs/wcscat.c (wcscat): Rewrite using wcslen and wcscpy.
2019-02-27wcsmbs: optimize wcpncpyAdhemerval Zanella
This patch rewrites wcpncpy using wcslen, wmemcpy, and wmemset. This is similar to the optimization done on stpncpy by 48497aba8e. Checked on x86_64-linux-gnu. * wcsmbs/wcpncpy.c (__wcpcpy): Rewrite using wcslen, wmemcpy, and wmemset.
2019-02-27wcsmbs: optimize wcpcpyAdhemerval Zanella
This patch rewrites wcpcpy using wcslen and wmemcpy. This is similar to the optimizatio done on stpcpy by f559d8cf29. Checked on x86_64-linux-gnu and string tests on a simulated m68k-linux-gnu. * sysdeps/m68k/wcpcpy.c: Remove file. * wcsmbs/wcpcpy.c (__wcpcpy): Rewrite using wcslen and wmemcpy.
2019-02-26Break further lines before not after operators.Joseph Myers
This patch continues the process of fixing coding style to break lines before not after operators in accordance with the GNU Coding Standards, fixing such issues in a non-exhaustive selection of sysdeps files that had them. Tested for x86_64, and with build-many-glibcs.py. * sysdeps/arm/sysdep.h (#if condition): Break lines before rather than after operators. * sysdeps/mach/hurd/fork.c (__fork): Likewise. * sysdeps/mach/hurd/getcwd.c (__hurd_canonicalize_directory_name_internal): Likewise. * sysdeps/mach/hurd/htl/pt-mutex-consistent.c (pthread_mutex_consistent): Likewise. * sysdeps/mach/hurd/htl/pt-mutex-init.c (_pthread_mutex_init): Likewise. * sysdeps/mach/hurd/htl/pt-mutex-transfer-np.c (__pthread_mutex_transfer_np): Likewise. * sysdeps/mach/hurd/htl/pt-mutex-unlock.c (__pthread_mutex_unlock): Likewise. * sysdeps/mach/hurd/htl/pt-mutex.h (ROBUST_LOCK): Likewise. (mtx_owned_p): Likewise. * sysdeps/mach/hurd/htl/pt-mutexattr-getrobust.c (pthread_mutexattr_getrobust): Likewise. * sysdeps/mach/hurd/i386/init-first.c (init1): Likewise. * sysdeps/mach/hurd/i386/trampoline.c (_hurd_setup_sighandler): Likewise. * sysdeps/mach/hurd/ioctl.c (__ioctl): Likewise. * sysdeps/mach/hurd/jmp-unwind.c (_longjmp_unwind): Likewise. * sysdeps/mach/hurd/kill.c (__kill): Likewise. * sysdeps/mach/hurd/mig-reply.c (__mig_get_reply_port): Likewise. * sysdeps/mach/hurd/ptrace.c (ptrace): Likewise. * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Likewise. * sysdeps/unix/sysv/linux/aarch64/sysdep.h (#if condition): Likewise. * sysdeps/unix/sysv/linux/alpha/ioperm.c (process_cpuinfo): Likewise. * sysdeps/unix/sysv/linux/bits/timex.h (STA_RONLY): Likewise. * sysdeps/unix/sysv/linux/csky/sysdep.h (#if condition): Likewise. * sysdeps/unix/sysv/linux/generic/____longjmp_chk.c (____longjmp_chk): Likewise. * sysdeps/unix/sysv/linux/generic/futimesat.c (futimesat): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (INTERNAL_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (INTERNAL_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c (__get_clockfreq_via_cpuinfo): Likewise.
2019-02-26Add and move fall-through comments in system-specific code.Joseph Myers
This patch fixes -Wimplicit-fallthrough warnings in system-specific code that show up building glibc with -Wextra, by adding fall-through comments, or moving existing such comments to the place required for them to work (immediately before the case label being fallen through). Tested with build-many-glibcs.py. * sysdeps/i386/dl-machine.h (elf_machine_rela): Add fall-through comments. * sysdeps/m68k/m680x0/fpu/s_cexp_template.c (s(__cexp)): Likewise. * sysdeps/m68k/memcopy.h (WORD_COPY_FWD): Likewise. (WORD_COPY_BWD): Likewise. * sysdeps/mach/hurd/ioctl.c (__ioctl): Likewise. * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. * sysdeps/s390/iso-8859-1_cp037_z900.c (TR_LOOP): Likewise. * sysdeps/mips/dl-machine.h (elf_machine_reloc): Move fall-through comment. * sysdeps/mips/dl-trampoline.c (__dl_runtime_resolve): Likewise.
2019-02-25Break more lines before not after operators.Joseph Myers
This patch makes further coding style fixes where code was breaking lines after an operator, contrary to the GNU Coding Standards. As with the previous patch, it is limited to files following a reasonable approximation to GNU style already, and is not exhaustive; more such issues remain to be fixed. Tested for x86_64, and with build-many-glibcs.py. * dirent/dirent.h [!_DIRENT_HAVE_D_NAMLEN && _DIRENT_HAVE_D_RECLEN] (_D_ALLOC_NAMLEN): Break lines before rather than after operators. * elf/cache.c (print_cache): Likewise. * gshadow/fgetsgent_r.c (__fgetsgent_r): Likewise. * htl/pt-getattr.c (__pthread_getattr_np): Likewise. * hurd/hurdinit.c (_hurd_setproc): Likewise. * hurd/hurdkill.c (_hurd_sig_post): Likewise. * hurd/hurdlookup.c (__file_name_lookup_under): Likewise. * hurd/hurdsig.c (_hurd_internal_post_signal): Likewise. (reauth_proc): Likewise. * hurd/lookup-at.c (__file_name_lookup_at): Likewise. (__file_name_split_at): Likewise. (__directory_name_split_at): Likewise. * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Likewise. * hurd/port2fd.c (_hurd_port2fd): Likewise. * iconv/gconv_dl.c (do_print): Likewise. * inet/netinet/in.h (struct sockaddr_in): Likewise. * libio/wstrops.c (_IO_wstr_seekoff): Likewise. * locale/setlocale.c (new_composite_name): Likewise. * malloc/memusagestat.c (main): Likewise. * misc/fstab.c (fstab_convert): Likewise. * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Likewise. * nss/nss_compat/compat-grp.c (getgrent_next_nss): Likewise. (getgrent_next_file): Likewise. (internal_getgrnam_r): Likewise. (internal_getgrgid_r): Likewise. * nss/nss_compat/compat-initgroups.c (getgrent_next_nss): Likewise. (internal_getgrent_r): Likewise. * nss/nss_compat/compat-pwd.c (getpwent_next_nss_netgr): Likewise. (getpwent_next_nss): Likewise. (getpwent_next_file): Likewise. (internal_getpwnam_r): Likewise. (internal_getpwuid_r): Likewise. * nss/nss_compat/compat-spwd.c (getspent_next_nss_netgr): Likewise. (getspent_next_nss): Likewise. (internal_getspnam_r): Likewise. * pwd/fgetpwent_r.c (__fgetpwent_r): Likewise. * shadow/fgetspent_r.c (__fgetspent_r): Likewise. * string/strchr.c (STRCHR): Likewise. * string/strchrnul.c (STRCHRNUL): Likewise. * sysdeps/aarch64/fpu/fpu_control.h (_FPU_FPCR_IEEE): Likewise. * sysdeps/aarch64/sfp-machine.h (_FP_CHOOSENAN): Likewise. * sysdeps/csky/dl-machine.h (elf_machine_rela): Likewise. * sysdeps/generic/memcopy.h (PAGE_COPY_FWD_MAYBE): Likewise. * sysdeps/generic/symbol-hacks.h (__stack_chk_fail_local): Likewise. * sysdeps/gnu/netinet/ip_icmp.h (ICMP_INFOTYPE): Likewise. * sysdeps/gnu/updwtmp.c (TRANSFORM_UTMP_FILE_NAME): Likewise. * sysdeps/gnu/utmp_file.c (TRANSFORM_UTMP_FILE_NAME): Likewise. * sysdeps/hppa/jmpbuf-unwind.h (_JMPBUF_UNWINDS): Likewise. * sysdeps/mach/hurd/bits/stat.h (S_ISPARE): Likewise. * sysdeps/mach/hurd/dl-sysdep.c (_dl_sysdep_start): Likewise. (open_file): Likewise. * sysdeps/mach/hurd/htl/pt-mutexattr-setprotocol.c (pthread_mutexattr_setprotocol): Likewise. * sysdeps/mach/hurd/ioctl.c (__ioctl): Likewise. * sysdeps/mach/hurd/mmap.c (__mmap): Likewise. * sysdeps/mach/hurd/ptrace.c (ptrace): Likewise. * sysdeps/mach/hurd/spawni.c (__spawni): Likewise. * sysdeps/microblaze/dl-machine.h (elf_machine_type_class): Likewise. (elf_machine_rela): Likewise. * sysdeps/mips/mips32/sfp-machine.h (_FP_CHOOSENAN): Likewise. * sysdeps/mips/mips64/sfp-machine.h (_FP_CHOOSENAN): Likewise. * sysdeps/mips/sys/asm.h (multiple #if conditionals): Likewise. * sysdeps/posix/rename.c (rename): Likewise. * sysdeps/powerpc/novmx-sigjmp.c (__novmx__sigjmp_save): Likewise. * sysdeps/powerpc/sigjmp.c (__vmx__sigjmp_save): Likewise. * sysdeps/s390/fpu/fenv_libc.h (FPC_VALID_MASK): Likewise. * sysdeps/s390/utf8-utf16-z9.c (gconv_end): Likewise. * sysdeps/unix/grantpt.c (grantpt): Likewise. * sysdeps/unix/sysv/linux/a.out.h (N_TXTOFF): Likewise. * sysdeps/unix/sysv/linux/updwtmp.c (TRANSFORM_UTMP_FILE_NAME): Likewise. * sysdeps/unix/sysv/linux/utmp_file.c (TRANSFORM_UTMP_FILE_NAME): Likewise. * sysdeps/x86/cpu-features.c (get_common_indices): Likewise. * time/tzfile.c (__tzfile_compute): Likewise.
2019-02-22Break some lines before not after operators.Joseph Myers
The GNU Coding Standards specify that line breaks in expressions should go before an operator, not after one. This patch fixes various code to do this. It only changes code that appears to be mostly following GNU style anyway, not files and directories with substantially different formatting. It is not exhaustive even for files using GNU style (for example, changes to sysdeps files are deferred for subsequent cleanups). Some files changed are shared with gnulib, but most are specific to glibc. Changes were made manually, with places to change found by grep (so some cases, e.g. where the operator was followed by a comment at end of line, are particularly liable to have been missed by grep, but I did include cases where the operator was followed by backslash-newline). This patch generally does not attempt to address other coding style issues in the expressions changed (for example, missing spaces before '(', or lack of parentheses to ensure indentation of continuation lines properly reflects operator precedence). Tested for x86_64, and with build-many-glibcs.py. * benchtests/bench-memmem.c (simple_memmem): Break lines before rather than after operators. * benchtests/bench-skeleton.c (TIMESPEC_AFTER): Likewise. * crypt/md5.c (md5_finish_ctx): Likewise. * crypt/sha256.c (__sha256_finish_ctx): Likewise. * crypt/sha512.c (__sha512_finish_ctx): Likewise. * elf/cache.c (load_aux_cache): Likewise. * elf/dl-load.c (open_verify): Likewise. * elf/get-dynamic-info.h (elf_get_dynamic_info): Likewise. * elf/readelflib.c (process_elf_file): Likewise. * elf/rtld.c (dl_main): Likewise. * elf/sprof.c (generate_call_graph): Likewise. * hurd/ctty-input.c (_hurd_ctty_input): Likewise. * hurd/ctty-output.c (_hurd_ctty_output): Likewise. * hurd/dtable.c (reauth_dtable): Likewise. * hurd/getdport.c (__getdport): Likewise. * hurd/hurd/signal.h (_hurd_interrupted_rpc_timeout): Likewise. * hurd/hurd/sigpreempt.h (HURD_PREEMPT_SIGNAL_P): Likewise. * hurd/hurdfault.c (_hurdsig_fault_catch_exception_raise): Likewise. * hurd/hurdioctl.c (fioctl): Likewise. * hurd/hurdselect.c (_hurd_select): Likewise. * hurd/hurdsig.c (_hurdsig_abort_rpcs): Likewise. (STOPSIGS): Likewise. * hurd/hurdstartup.c (_hurd_startup): Likewise. * hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Likewise. * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Likewise. * hurd/msgportdemux.c (msgport_server): Likewise. * hurd/setauth.c (_hurd_setauth): Likewise. * include/features.h (__GLIBC_USE_DEPRECATED_SCANF): Likewise. * libio/libioP.h [IO_DEBUG] (CHECK_FILE): Likewise. * locale/programs/ld-ctype.c (set_class_defaults): Likewise. * localedata/tests-mbwc/tst_swscanf.c (tst_swscanf): Likewise. * login/tst-utmp.c (do_check): Likewise. (simulate_login): Likewise. * mach/lowlevellock.h (lll_lock): Likewise. (lll_trylock): Likewise. * math/test-fenv.c (ALL_EXC): Likewise. * math/test-fenvinline.c (ALL_EXC): Likewise. * misc/sys/cdefs.h (__attribute_deprecated_msg__): Likewise. * nis/nis_call.c (__do_niscall3): Likewise. * nis/nis_callback.c (cb_prog_1): Likewise. * nis/nis_defaults.c (searchaccess): Likewise. * nis/nis_findserv.c (__nis_findfastest_with_timeout): Likewise. * nis/nis_ismember.c (internal_ismember): Likewise. * nis/nis_local_names.c (nis_local_principal): Likewise. * nis/nss_nis/nis-rpc.c (_nss_nis_getrpcbyname_r): Likewise. * nis/nss_nisplus/nisplus-netgrp.c (_nss_nisplus_getnetgrent_r): Likewise. * nis/ypclnt.c (yp_match): Likewise. (yp_first): Likewise. (yp_next): Likewise. (yp_master): Likewise. (yp_order): Likewise. * nscd/hstcache.c (cache_addhst): Likewise. * nscd/initgrcache.c (addinitgroupsX): Likewise. * nss/nss_compat/compat-pwd.c (copy_pwd_changes): Likewise. (internal_getpwuid_r): Likewise. * nss/nss_compat/compat-spwd.c (copy_spwd_changes): Likewise. * posix/glob.h (__GLOB_FLAGS): Likewise. * posix/regcomp.c (peek_token): Likewise. (peek_token_bracket): Likewise. (parse_expression): Likewise. * posix/regexec.c (sift_states_iter_mb): Likewise. (check_node_accept_bytes): Likewise. * posix/tst-spawn3.c (do_test): Likewise. * posix/wordexp-test.c (testit): Likewise. * posix/wordexp.c (parse_tilde): Likewise. (exec_comm): Likewise. * posix/wordexp.h (__WRDE_FLAGS): Likewise. * resource/vtimes.c (TIMEVAL_TO_VTIMES): Likewise. * setjmp/sigjmp.c (__sigjmp_save): Likewise. * stdio-common/printf_fp.c (__printf_fp_l): Likewise. * stdio-common/tst-fileno.c (do_test): Likewise. * stdio-common/vfprintf-internal.c (vfprintf): Likewise. * stdlib/strfmon_l.c (__vstrfmon_l_internal): Likewise. * stdlib/strtod_l.c (round_and_return): Likewise. (____STRTOF_INTERNAL): Likewise. * stdlib/tst-strfrom.h (TEST_STRFROM): Likewise. * string/strcspn.c (STRCSPN): Likewise. * string/test-memmem.c (simple_memmem): Likewise. * termios/tcsetattr.c (tcsetattr): Likewise. * time/alt_digit.c (_nl_parse_alt_digit): Likewise. * time/asctime.c (asctime_internal): Likewise. * time/strptime_l.c (__strptime_internal): Likewise. * time/sys/time.h (timercmp): Likewise. * time/tzfile.c (__tzfile_compute): Likewise.
2019-02-21nss: tst-nss-files-hosts-long: Add host.conf [BZ #21915]Patsy Franklin
Add /etc/host.conf file with 'multi on' to tst-nss-files-hosts-long.root. Ensures the entire file, and all long lines, need to be parsed for the test. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-02-21Add internal implementations for argp.h, err.h, and error.h functionsGabriel F. T. Gomes
Since the introduction of explicit flags in the internal implementation of the printf family of functions, the 'mode' parameter can be used to select which format long double parameters have (with the mode flag: PRINTF_LDBL_IS_DBL). This patch uses this feature in the implementation of some functions in argp.h, err.h, and error.h (only those that take a format string and positional parameters). Future patches will add support for 'nldbl' and 'ieee128' versions of these functions. Tested for powerpc64le and x86_64.
2019-02-20Add new Fortran vector math header file.marxin
2019-02-20powerpc64le: Remove test for GCC 6.2Gabriel F. T. Gomes
The configure fragment for powerpc64le contains a test for the presence of several compiler builtins and of the __float128 type, which are provided by GCC 6.2 for powerpc64le. Since this configure test was added, the compiler version required to build glibc for powerpc64le was different than that required for the other architectures. Now that glibc requires GCC 6.2 globally (since commit ID 4dcbbc3b28aa), this patch removes the powerpc64le-specific test. Even tough the configure test checks for compiler features rather than compiler version, the intent of the test was to stop build attempts at early stages, if they had been configured with a too old compiler. It was not the intention of the test to detect compiler breakage (such as the removal of the required compiler features in future GCC versions), and glibc is not the place to test for compiler regressions, anyway. Tested for powerpc64le with GCC 6.2 (built with build-many-glibcs.py). Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2019-02-19nptl: Fix comment typo in pthread_mutex_trylock.cWolfram Sang
2019-02-19nptl: Fix pthread_tryjoin comment.Carlos O'Donell
In pthread_tryjoin if pd->tid == 0 then we will not block on a futex operation because we will immediately see the join is already complete and return. The comment is fixed to reflect that. Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2019-02-18Fix SPARC64 handling of R_SPARC_H34 (bug 24231).Joseph Myers
Building glibc with -Wextra shows a -Wimplicit-fallthrough warning for SPARC64 that appears to be a real bug in glibc. The dynamic linker handling of R_SPARC_H34 falls through to that of R_SPARC_H44, which in the case of this code is nonsensical (it means the value computed for R_SPARC_H34 gets overwritten by one computed with the different logic for R_SPARC_H44). Thus, this patch adds the missing break there. Note: I do not have a testcase to demonstrate this bug. Tested with build-many-glibcs.py. [BZ #24231] * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Add break after R_SPARC_H34 case.
2019-02-18resolv: Remove debugging code from compat-gethnamaddr.cFlorian Weimer
2019-02-18libio: Eliminate _IO_stdin, _IO_stdout, _IO_stderrFlorian Weimer
These variables are only used to determine if a stdio stream is a pre-allocated stream, but it is possible to do so by comparing a FILE * to all pre-allocated stream objects. As a result, it is not necessary to keep those pointers in separate variables. Behavior with symbol interposition is unchanged because _IO_stdin_, _IO_stdout_, _IO_stderr_ are exported, and refer to objects outside of libc if symbol interposition or copy relocations are involved. (The removed variables _IO_stdin, _IO_stdout, _IO_stderr were not exported, of course.)
2019-02-18misc/tst-clone3: Fix waiting for exited thread.Stefan Liebler
From time to time the test misc/tst-clone3 fails with a timeout. Then futex_wait is blocking. Usually ctid should be set to zero due to CLONE_CHILD_CLEARTID and the futex should be waken up. But the fail occures if the thread has already exited before ctid is set to the return value of clone(). Then futex_wait() will block as there will be nobody who wakes the futex up again. This patch initializes ctid to a known value before calling clone and the kernel is the only one who updates the value to zero after clone. If futex_wait is called then it is either waked up due to the exited thread or the futex syscall fails as *ctid_ptr is already zero instead of the specified value 1. ChangeLog: * sysdeps/unix/sysv/linux/tst-clone3.c (do_test): Initialize ctid with a known value and remove update of ctid after clone. (wait_tid): Adjust arguments and call futex_wait with ctid_val as assumed current value of ctid_ptr.
2019-02-16Add check for missing wrapper headersFlorian Weimer
If building on a subset of architectures only, it is easy to miss wrapper headers which are required by other architectures because they lack the corresponding sysdeps header. The check ensures that every installed header which is not itself a sysdeps header has a header under include/ (that presumably wraps the header, and perhaps also adding declarations and definitions for !_ISOMAC). Also check for the absence of the sysdeps/generic/bits directory removed in commit c72565e5f1124c2dc72573e83406fe999e56091f, to make accidental re-introduction more difficult. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-02-16Add missing header wrappers under include/Florian Weimer
With a complete set of wrapper headers, it will be possible to check for automatically for new installed headers which lack such wrappers. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2019-02-16Move remaining nptl_db headers to sysdeps/nptlFlorian Weimer
sys/procfs.h was already using this sysdeps directory. This avoids the need for nptl-specific wrapper headers under include/, a generic location in the source tree.
2019-02-15io: Consolidate lockf implementationAdhemerval Zanella
With internal fcntl64 internal (commit 06ab719d), it is possible to consolidate lockf implementation by using the LFS fcntl interface instead of using arch and system-specific implementations. For Linux, the i386 implementation is used as generic implementation by replacing the direct syscall with fcntl64 call. The LFS symbol alias for default LFS ABI (__OFF_T_MATCHES_OFF64_T) is used to avoid the duplicate symbol (instead of overriding the implementation with an empty file). For Hurd lockf64 semantic is changed: previous generic lockf64 implementation returned EOVERFLOW if LEN input is larger than 32-bit off_t. However, Hurd fcntl64 implementation for F_GETLK64, F_SETLK64, and F_SETLKW64 do accept off64_t inputs (__f_setlk accepts only off64_t inputs). Checked on i686-linux-gnu and x86_64-linux-gnu along with a i686-gnu build. * io/Makefile (tests): Add tst-lockf. * io/lockf.c (lockf): Use __fcntl and only define for !__OFF_T_MATCHES_OFF64_T. * io/lockf64.c (__lockf64): Call __fcntl64 and alias to lockf for __OFF_T_MATCHES_OFF64_T case. * io/tst-lockf.c: New file. * sysdeps/unix/sysv/linux/i386/lockf64.c: Remove file. * sysdeps/unix/sysv/linux/arm/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/m68k/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/sh/lockf64.c: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/lockf64.c: Likewise.
2019-02-15nptl: Fix invalid Systemtap probe in pthread_join [BZ #24211]Florian Weimer
After commit f1ac7455831546e5dca0ed98fe8af2686fae7ce6 ("arm: Use "nr" constraint for Systemtap probes [BZ #24164]"), we load pd->result into a register in the probe below: /* Free the TCB. */ __free_tcb (pd); } else pd->joinid = NULL; LIBC_PROBE (pthread_join_ret, 3, threadid, result, pd->result); However, at this point, the thread descriptor has been freed. If the thread stack does not fit into the thread stack cache, the memory will have been unmapped, and the program will crash in the probe.
2019-02-15Remove qualifier from function return type in tst-svc_register.c.Joseph Myers
Building the testsuite with -Wextra produces a warning in sunrpc/tst-svc_register.c for a useless qualifier on a function return type. This patch removes that qualifier. Tested for x86_64. * sunrpc/tst-svc_register.c (rpcbind_address): Remove qualifier from function return type.
2019-02-15Fix implicit-fallthrough warnings in tst-setjmp.c.Joseph Myers
Building the testsuite with -Wextra (together with -Wno-cast-function-type -Wno-clobbered -Wno-expansion-to-defined -Wno-missing-field-initializers -Wno-old-style-declaration -Wno-shift-negative-value -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter, which reflect the set of -Wextra warnings for which glibc itself is not currently clean on x86_64) showed up implicit-fallthrough warnings in tst-setjmp.c. Those warnings appear to be false positives, arising from a function "jump" that calls longjmp not itself being marked as noreturn; thus, this patch adds the noreturn marking to that function to fix the warnings. Tested for x86_64. * setjmp/tst-setjmp.c (jump): Use __attribute__ ((__noreturn__)).
2019-02-14Avoid readline conflicts in pexpectJan Kratochvil
In some cases, sensitive to readline version and the user's environment, gdb might emit escape codes while run under python's pexpect (i.e. testing pretty printers). This patch, suggested by Jan, helps isolate the test from the user's environment. Tested on RHEL 7 x86_64 with DTS 7 and EPEL, which is one magic combination of components that triggers this bug.
2019-02-14Fix fall-through warnings in sunrpc/xdr.c.Joseph Myers
This patch fixes implicit-fallthrough warnings in sunrpc/xdr.c when building with -Wextra. A fall-through comment is added in three places; in two other places, an existing comment is reworded so it matches the default patterns used by -Wimplicit-fallthrough. Tested for x86_64. * sunrpc/xdr.c (xdr_int): Add fall-through comment. (xdr_u_int): Likewise. (xdr_enum): Likewise. (xdr_bytes): Reword fall-through comment. (xdr_string): Likewise.
2019-02-14nptl: Reinstate pthread_timedjoin_np as a cancellation point (BZ#24215)Adhemerval Zanella
Patch ce7eb0e90315 ("nptl: Cleanup cancellation macros") changed the join sequence for internal common __pthread_timedjoin_ex to use the new macro lll_wait_tid. The idea was this macro would issue the cancellable futex operation depending whether the timeout is used or not. However if a timeout is used, __lll_timedwait_tid is called and it is not a cancellable entrypoint. This patch fixes it by simplifying the code in various ways: - Instead of adding the cancellation handling on __lll_timedwait_tid, it moves the generic implementation to pthread_join_common.c (called now timedwait_tid with some fixes to use the correct type for pid). - The llvm_wait_tid macro is removed, along with its replication on x86_64, i686, and sparc arch-specific lowlevellock.h. - sparc32 __lll_timedwait_tid is also removed, since the code is similar to generic one. - x86_64 and i386 provides arch-specific __lll_timedwait_tid which is also removed since they are similar in functionality to generic C code and there is no indication it is better than compiler generated code. New tests, tst-join8 and tst-join9, are provided to check if pthread_timedjoin_np acts as a cancellation point. Checked on x86_64-linux-gnu, i686-linux-gnu, sparcv9-linux-gnu, and aarch64-linux-gnu. [BZ #24215] * nptl/Makefile (lpthread-routines): Remove lll_timedwait_tid. (tests): Add tst-join8 tst-join9. * nptl/lll_timedwait_tid.c: Remove file. * sysdeps/sparc/sparc32/lll_timedwait_tid.c: Likewise. * sysdeps/unix/sysv/linux/i386/lll_timedwait_tid.c: Likewise. * sysdeps/sysv/linux/x86_64/lll_timedwait_tid.c: Likewise. * nptl/pthread_join_common.c (timedwait_tid): New function. (__pthread_timedjoin_ex): Act as cancellation entrypoint is block is set. * nptl/tst-join5.c (thread_join): New function. (tf1, tf2, do_test): Use libsupport and add pthread_timedjoin_np check. * nptl/tst-join8.c: New file. * nptl/tst-join9.c: Likewise. * sysdeps/nptl/lowlevellock-futex.h (lll_futex_wait_cancel, lll_futex_timed_wait_cancel): Add generic macros. * sysdeps/nptl/lowlevellock.h (__lll_timedwait_tid, lll_wait_tid): Remove definitions. * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise. * sysdeps/sparc/sparc32/lowlevellock.c (__lll_timedwait_tid): Remove function. * sysdeps/unix/sysv/linux/i386/lowlevellock.S (__lll_timedwait_tid): Likewise. * sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise. * sysdeps/unix/sysv/linux/lowlevellock-futex.h (lll_futex_timed_wait_cancel): New macro.
2019-02-14Add missing bench-malloc-simple.c file.Wilco Dijkstra
2019-02-14Add malloc micro benchmarkWilco Dijkstra
Add a malloc micro benchmark to enable accurate testing of the various paths in malloc and free. The benchmark does a varying number of allocations of a given block size, then frees them again. It tests 3 different scenarios: single-threaded using main arena, multi-threaded using thread-arena, main arena with SINGLE_THREAD_P false. * benchtests/Makefile: Add malloc-simple benchmark. * benchtests/bench-malloc-simple.c: New benchmark.