Commit Graph

22512 Commits

Author SHA1 Message Date
Florian Weimer
43b1048ab9 nss_files: Use struct scratch_buffer instead of extend_alloca [BZ #18023] 2018-06-25 19:48:01 +02:00
Florian Weimer
1599ed4e95 getent: Use dynarray in initgroups_keys [BZ #18023] 2018-06-25 19:47:59 +02:00
Florian Weimer
a26fe1638b _nss_nis_initgroups_dyn: Use struct scratch_buffer [BZ #18023]
Remove extend_alloca usage.  Also adjusts the internal function get_uid.
2018-06-25 19:14:09 +02:00
Florian Weimer
90d9d9ce2f getgrent_next_nss (compat-initgroups): Remove alloca fallback [BZ #18023]
If the caller-supplied buffer is not large enough, fall back directly
malloc.

The previous __libc_use_alloca check was incorrect because it did not
take into account that extend_alloca may fail to merge allocations, so
it would underestimate the stack space being used by roughly a factor
of two.
2018-06-25 18:58:49 +02:00
Florian Weimer
6b7b2abac7 nscd: Switch to struct scratch_buffer in adhstaiX [BZ #18023]
The pre-allocation of the three scratch buffers increased the initial
stack size somewhat, but if retries are needed, the previous version
used more stack space if extend_alloca could not merge allocations.
Lack of alloca accounting also means could be problematic with
extremely large NSS responses, too.

	[BZ #18023]
	* nscd/aicache.c (addhstaiX): Use struct scratch_buffer instead
	of extend_alloca.
2018-06-25 18:41:54 +02:00
Florian Weimer
2f9f0d182e nscd: Use struct scratch_buffer, not extend_alloca in most caches [BZ #18023]
This replaces the ERANGE retry loops with loops which have heap
fallback.  Heap allocation might actually be required for extremely
large NSS results.
2018-06-25 18:41:52 +02:00
Florian Weimer
318bad78b0 nscd restart: Use malloc instead of extend_alloca [BZ #18023]
This introduces a separate function, read_cmdline, which reads the
contents of /proc/self/cmdline into a heap-allocated buffer.
2018-06-25 17:10:15 +02:00
Rafal Luzynski
189699ab37 csb_PL: Add alternative month names (bug 23140).
Kashubian language is not supported by CLDR, data copied from Wikipedia
and documents released by RJK (official Kashubian Language Council),
also consulted with a native speaker.

Note that this language also needs ab_alt_mon feature due to the month
May: nominative "môj", genitive "maja"; abbreviated nominative "môj",
abbreviated genitive "maj".

	[BZ #23140]
	* localedata/locales/csb_PL (mon): Rename to...
	(alt_mon): This.
	(abmon): Rename to...
	(ab_alt_mon): This.
	(mon): Add with proper genitive forms, copy from Wikipedia.
	(abmon): Likewise.
2018-06-25 12:34:31 +02:00
Rafal Luzynski
0ea3f13cce csb_PL: Update month translations + add yesstr/nostr (bug 19485).
Thank you Michal Ostrowski for the feedback.

	[BZ #19485]
	* localedata/locales/csb_PL (mon): Fix typos:
	"łżëkwiôt" -> "łżëkwiat" (April); "lëpinc" -> "lëpińc" (July).
	(yesstr): Add, value is "jo".
	(nostr): Add, value is "nié".
2018-06-25 12:32:51 +02:00
Tulio Magno Quites Machado Filho
d93f4ff16b m68k: Reorganize log1p and significand implementations
Commit 5e79e0292b broke m68k after
s_significand.c became available in the build directory.  All m68k
implementations of log1p and significand were including s_significand.c
and stopped working after the inclusion of the the auto-generated file.

This patch reorganizes the implementation of log1p and significand for
m680x0 in order to avoid hitting this problem.

	* sysdeps/m68k/m680x0/fpu/s_log1p.c: Set as the generic file for
	all log1p and significand functions on m680x0.
	* sysdeps/m68k/m680x0/fpu/s_log1pf.c: Include s_log1p.c instead
	of s_significand.c..
	* sysdeps/m68k/m680x0/fpu/s_log1pl.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_significandf.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_significandl.c: Likewise.
	* sysdeps/m68k/m680x0/fpu/s_significand.c: Move all the code to
	s_log1p.c and include it..

Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2018-06-22 21:34:28 -03:00
Vincent Chen
f6299d2a10 Add Andes nds32 dynamic relocations to elf.h
* elf/elf.h (R_NDS32_NONE): New define.
	(R_NDS32_32_RELA): Likewise.
	(R_NDS32_COPY): Likewise.
	(R_NDS32_GLOB_DAT): Likewise.
	(R_NDS32_JUMP_SLOT): Likewise.
	(R_NDS32_RELATIVE): Likewise.
	(R_NDS32_TLS_TPOFF): Likewise.
	(R_NDS32_TLS_DESC): Likewise.
2018-06-21 20:44:43 +00:00
Mark Wielaard
61ab61c2fd elf.h: Add BPF relocation types.
The BPF ELF format has new relocation types R_BPF_64_64 and R_BPF_64_32.
The existing R_BPF_MAP_FD was an extension that never got implemented.
Remove it, because the constant conflicts with the official R_BPF_64_64.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-06-21 18:38:06 +02:00
Florian Weimer
f496b28e61 math: Set 387 and SSE2 rounding mode for tgamma on i386 [BZ #23253]
Previously, only the SSE2 rounding mode was set, so the assembler
implementations using 387 were not following the expecting rounding
mode.
2018-06-21 08:04:29 +02:00
Joseph Myers
99c7adf99f Fix tst-cmp.c build with GCC mainline.
Building the testsuite with GCC mainline fails with
-Wstringop-overflow= errors in string/tst-cmp.c.  These are for calls
to strncmp and strncasecmp with SIZE_MAX size argument.  The tests are
deliberately using this size that would be dubious in normal code, so
this patch disables the warning for the calls in question.

Tested with build-many-glibcs.py for aarch64-linux-gnu.

	* string/tst-cmp.c: Include <libc-diag.h>.
	(strncmp_max): Disable -Wstringop-overflow= around call to
	strncmp.
	(strncasecmp_max): Disable -Wstringop-overflow= around call to
	strncasecmp.
2018-06-20 22:19:50 +00:00
Joseph Myers
1760daadda Fix bug-strspn1.c, bug-strpbrk1.c build with GCC mainline.
Building the testsuite with GCC mainline fails with:

bug-strspn1.c: In function 'main':
bug-strspn1.c:14:3: error: right-hand operand of comma expression has no effect [-Werror=unused-value]
   strspn (b++, "");
   ^~~~~~~~~~~~~~~~

and a similar error for bug-strpbrk1.c.  I'm not sure what GCC change
introduced this, and the wording of the message is a bit off (in the
source it's not a comma expression, that must reflect GCC's IR).  But
the warning is correct (strspn is a pure function, the call is
useless, and if there wasn't an argument with a side effect much older
GCC would have warned); the point of the test is to verify that the
side effect in an argument still occurs for this useless call that can
otherwise be optimized to an (unused) constant (testing for a bug
there once was in an old strspn macro).  This patch duly arranges for
the warning to be disabled for this code.

Tested with build-many-glibcs.py for aarch64-linux-gnu.

	* string/bug-strpbrk1.c: Include <libc-diag.h>.
	(main): Disable -Wunused-value around call to strpbrk.
	* string/bug-strspn1.c: Include <libc-diag.h>.
	(main): Disable -Wunused-value around call to strspn.
2018-06-20 22:18:22 +00:00
Tulio Magno Quites Machado Filho
209ae17c60 ldbl-128ibm-compat: Create libm-alias-float128.h
Add a new libm-alias-float128.h in order to provide the __*ieee128
aliases for the existing *f128 that do not have a globally exported
symbol.

	* sysdeps/ieee754/ldbl-128ibm-compat/Versions: New file.
	* sysdeps/ieee754/ldbl-128ibm-compat/libm-alias-float128.h: New file.
2018-06-20 19:02:07 -03:00
Tulio Magno Quites Machado Filho
5e79e0292b Add a generic significand implementation
Create a template for significand.

	* math/Makefile (libm-calls): Move s_significandF to...
	(gen-libm-calls): ... here.
	* math/s_significand_template.c: New file.
	* math/s_significand.c: Removed.
	* math/s_significandf.c: Removed.
	* math/s_significandl.c: Removed.
	* sysdeps/ieee754/ldbl-opt/s_significand.c: Removed.
	* sysdeps/ieee754/ldbl-opt/s_significandl.c: Removed.

Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2018-06-20 18:15:06 -03:00
Tulio Magno Quites Machado Filho
badba23cac Move declare_mgen_finite_alias definition
Move declare_mgen_finite_alias, declare_mgen_finite_alias_s and
declare_mgen_finite_alias_x to a shared place in order to reuse them in
other files that also declare _finite aliases.

	* math/e_exp2_template.c (declare_mgen_finite_alias,
	declare_mgen_finite_alias_s, declare_mgen_finite_alias_x): Move to...
	* sysdeps/generic/math-type-macros.h (declare_mgen_finite_alias,
	declare_mgen_finite_alias_s, declare_mgen_finite_alias_x): ... here.

Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2018-06-20 17:42:47 -03:00
Florian Weimer
2d1c89a5d7 libio: Avoid ptrdiff_t overflow in IO_validate_vtable
If the candidate pointer is sufficiently far away from
__start___libc_IO_vtables, the result might not fit into ptrdiff_t.
2018-06-20 09:45:19 +02:00
Joseph Myers
646c2833ee Fix scanf rounding of negative floating-point numbers (bug 23280).
As reported in bug 23280, scanf functions produce incorrectly rounded
result for floating-point formats in FE_UPWARD and FE_DOWNWARD modes,
because they pass the input with sign removed to strtod functions, and
then negate the result if there was a '-' at the start of the input.

This patch fixes this by arranging for the sign to be passed to strtod
rather than scanf doing the negation itself.  In turn, keeping the
sign around in the buffer being built up for strtod requires updating
places that examine char_buffer_size (&charbuf) to allow for the sign
being there as an extra character.

Tested for x86_64.

	[BZ #23280]
	* stdio-common/vfscanf.c (_IO_vfscanf_internal): Pass sign of
	floating-point number to strtod functions rather than possibly
	negating result of those functions.
	* stdio-common/tst-scanf-round.c: New file.
	* stdio-common/Makefile (tests): Add tst-scanf-round.
	($(objpfx)tst-scanf-round): Depend on $(libm).
2018-06-19 11:52:18 +00:00
Samuel Thibault
c77e4dc0f5 hurd: Fix "Missing required PLT reference"
* sysdeps/mach/hurd/localplt.data: Move to...
	* sysdeps/mach/hurd/i386/localplt.data: new file. Add + REL
	R_386_GLOB_DAT like on Linux i386.
2018-06-19 02:32:41 +02:00
Joseph Myers
f2857da7cd Add SHM_STAT_ANY from Linux 4.17 to bits/shm.h.
Linux 4.17 adds a SHM_STAT_ANY constant (ipcs command).  This patch
adds it to the relevant bits/shm.h headers.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/alpha/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): New macro.
	* sysdeps/unix/sysv/linux/arm/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/generic/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/sh/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/shm.h [__USE_MISC]
	(SHM_STAT_ANY): Likewise.
2018-06-18 13:37:57 +00:00
Joseph Myers
176c7fee51 Add SEM_STAT_ANY from Linux 4.17 to bits/sem.h.
Linux 4.17 adds a SEM_STAT_ANY constant (ipcs command).  This patch
adds it to the relevant bits/sem.h headers.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/alpha/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): New macro.
	* sysdeps/unix/sysv/linux/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/generic/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/sem.h [__USE_MISC]
	(SEM_STAT_ANY): Likewise.
2018-06-18 13:36:41 +00:00
Joseph Myers
86bf0019ed Add MSG_STAT_ANY from Linux 4.17 to bits/msq.h.
Linux 4.17 adds a MSG_STAT_ANY constant (ipcs command).  This patch
adds it to the relevant bits/msq.h headers.

Tested for x86_64.

	* sysdeps/unix/sysv/linux/alpha/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): New macro.
	* sysdeps/unix/sysv/linux/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/generic/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/hppa/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/ia64/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/mips/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/s390/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/sparc/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/msq.h [__USE_MISC]
	(MSG_STAT_ANY): Likewise.
2018-06-18 13:34:52 +00:00
Joseph Myers
91b2f3e5dd Update MAP_TYPE value for hppa from Linux 4.17.
This patch updates the hppa definition of MAP_TYPE to reflect a
corresponding change in the Linux kernel in 4.17 (so the value now has
four bits set, as it does on other architectures, although they are
different from other architectures because of hppa differences in
other MAP_* bits).

Tested with build-many-glibcs.py for hppa.

	* sysdeps/unix/sysv/linux/hppa/bits/mman.h [__USE_MISC]
	(MAP_TYPE): Change value to 0x2b.
2018-06-18 13:33:52 +00:00
Florian Weimer
3fe8fc793f Linux: Create Netlink socket with SOCK_CLOEXEC in __check_pf [BZ #15722] 2018-06-18 15:24:55 +02:00
Joseph Myers
809dc95d14 Fix powerpc64le build of nan-sign tests (bug 23303).
My recent nan-sign tests fail to build for powerpc64le with GCC 8
because of the special compile / link options needed there for any
test using _Float128.  This patch arranges for these tests to be
handled on powerpc64le similarly to other such tests.

Tested with build-many-glibcs.py for powerpc64le.

	[BZ #23303]
	* sysdeps/powerpc/powerpc64/le/Makefile
	(CFLAGS-tst-strtod-nan-sign.c): Add -mfloat128.
	(CFLAGS-tst-wcstod-nan-sign.c): Likewise.
	(gnulib-tests): Also add $(f128-loader-link) for
	tst-strtod-nan-sign abd tst-wcstod-nan-sign.
2018-06-18 11:27:51 +00:00
Samuel Thibault
4d0ac0375b hurd: Fix reference to _hurd_self_sigstate
* sysdeps/hurd/include/hurd/signal.h (_hurd_self_sigstate): Add hidden
	prototype and definition.
	* sysdeps/mach/hurd/i386/____longjmp_chk.S (____longjmp_chk): Use
	hidden target for _hurd_self_sigstate.
2018-06-16 14:07:23 +00:00
Samuel Thibault
f96a85e0fe hurd: Fix missing __pthread_get_cleanup_stack symbol
Rework 57e1651557 ("hurd: Avoid PLT ref for __pthread_get_cleanup_stack")
to keep the __pthread_get_cleanup_stack symbol.

        * htl/pt-cleanup.c (__pthread_get_cleanup_stack): Rename to
        ___pthread_get_cleanup_stack.
        (__pthread_get_cleanup_stack): Remove hidden def, add alias.
        * htl/pt-exit.c (__pthread_exit): Use ___pthread_get_cleanup_stack
        instead of __pthread_get_cleanup_stack.
        * sysdeps/htl/pthread-functions.h [libpthread]
        (__pthread_get_cleanup_stack): Remove hidden proto.
        * sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Add
        prototype.
	* sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Add hidden
	attribute.
	* htl/pt-join.c (__pthread_get_cleanup_stack): Define to
	___pthread_get_cleanup_stack.
2018-06-16 10:52:04 +02:00
Samuel Thibault
8c9d53428e hurd: Whitelist PLT refs which are difficult to avoid
* sysdeps/mach/hurd/localplt.data (siglongjmp, longjmp,
	__libc_lseek64, _IO_funlockfile): Whitelist PLT references.
2018-06-16 02:59:36 +02:00
Samuel Thibault
b0344cf5c5 hurd: Avoid PLT references to syscalls
* mach/Makefile ($(mach-syscalls:%=$(objpfx))): Add hidden definition.
	* sysdeps/mach/include/mach/mach_traps.h (__mach_reply_port,
	__mach_thread_self, __mach_task_self, __mach_host_self, __swtch,
	__swtch_pri, __thread_switch, __evc_wait): Add hidden prototypes.
2018-06-16 02:50:36 +02:00
Samuel Thibault
7a646a93fa hurd: Avoid PLT ref to __mach_msg
* sysdeps/mach/include/mach.h (__mach_msg): Add hidden prototype.
	* mach/msg.c: Include <mach.h>.
	(__mach_msg): Add hidden definition.
2018-06-16 02:50:30 +02:00
Samuel Thibault
c1b7586c54 hurd: Avoid PLT references to shortcuts
* sysdeps/mach/include/mach-shortcuts-hidden.h: New file.
	* mach/shortcut.awk: Make syscall stubs include
	<mach-shortcuts-hidden.h> and add hidden definition.
	* sysdeps/mach/include/mach.h: Include <mach-shortcuts-hidden.h>.
2018-06-16 02:48:41 +02:00
Samuel Thibault
932d05f0dc hurd: Avoid missing PLT ref from ld.so requirement
* sysdeps/mach/hurd/localplt.data (ld.so): Make ref to __open optional.
2018-06-16 01:49:29 +02:00
Samuel Thibault
57e1651557 hurd: Avoid PLT ref for __pthread_get_cleanup_stack
* htl/pt-cleanup.c (___pthread_get_cleanup_stack): Rename to
	__pthread_get_cleanup_stack.
	(__pthread_get_cleanup_stack): Remove alias, add hidden def.
	* htl/pt-exit.c (__pthread_exit): Use __pthread_get_cleanup_stack
	instead of ___pthread_get_cleanup_stack.
	* sysdeps/htl/pthread-functions.h [libpthread]
	(__pthread_get_cleanup_stack): Add hidden proto.
	* sysdeps/htl/pthreadP.h (___pthread_get_cleanup_stack): Remove
	prototype.
2018-06-16 01:37:42 +02:00
Samuel Thibault
faf7bbc2d0 hurd: Detect 32bit overflow in value returned by lseek
* sysdeps/mach/hurd/lseek.c: Include <errno.h>.
	* sysdeps/mach/hurd/lseek.c (__libc_lseek): Check that the value returned
	by __lseek64 can fit off_t, return EOVERFLOW otherwise.
2018-06-16 01:37:14 +02:00
Samuel Thibault
298a8b59d4 hurd: avoid PLT ref between sendfile and sendfile64
* include/sys/sendfile.h (__sendfile64): Declare hidden prototype.
	* sysdeps/mach/hurd/sendfile.c (sendfile): Call __sendfile64 instead
	of sendfile.
	* sysdeps/mach/hurd/sendfile64.c (sendfile64): Rename to __sendfile64.
	(sendfile64): New strong alias.
2018-06-16 00:44:57 +02:00
Joseph Myers
b12c1e7991 Add tests for sign of NaN returned by strtod (bug 23007).
This patch adds tests for bug 23007, strtod ignoring any sign in the
input string in the case of a NaN result.

Tested for x86_64.

	[BZ #23007]
	* stdlib/tst-strtod-nan-sign-main.c: New file.
	* stdlib/tst-strtod-nan-sign.c: Likewise.
	* wcsmbs/tst-wcstod-nan-sign.c: Likewise.
	* stdlib/Makefile (tests): Add tst-strtod-nan-sign.
	($(objpfx)tst-strtod-nan-sign): Depend on $(libm).
	* wcsmbs/Makefile (tests) Add tst-wcstod-nan-sign.
	($(objpfx)tst-wcstod-nan-sign): Depend on $(libm).
2018-06-15 17:36:21 +00:00
Herman ten Brugge
b0debe14fc Fix sign of NaN returned by strtod (bug 23007).
As reported in bug 23007, strtod ignores any sign in the input string
in the case of a NaN result.  Thes patch fixes this.

Tested for x86_64 (in conjunction with tests to be added separately).

	[BZ #23007]
	* stdlib/strtod_l.c (____STRTOF_INTERNAL): Return NaN of
	appropriate sign.
2018-06-15 17:35:17 +00:00
Florian Weimer
14beef7575 localedata: Make IBM273 compatible with ISO-8859-1 [BZ #23290]
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2018-06-14 22:34:10 +02:00
Samuel Thibault
c596630bbd hurd: Fix htl link failure
126b3ec370 ("hurd: Avoid PLTs for __mach_thread_self and
__mach_reply_port") made mach traps hidden, but htl actually uses two of
them. Re-expose them for now. Exposing them properly will be more involved
since their definition is generated.

	* sysdeps/mach/include/mach/mach_traps.h (__mach_thread_self,
	__mach_task_self): Remove attribute_hidden.
2018-06-14 17:09:18 +02:00
Joseph Myers
35ebb6b0c4 Ignore -Wrestrict for one strncat test.
With current GCC mainline, one strncat test involving a size close to
SIZE_MAX results in a -Wrestrict warning that that buffer size would
imply that the two buffers must overlap.  This patch fixes the build
by adding disabling of -Wrestrict (for GCC versions supporting that
option) to the already-present disabling of -Wstringop-overflow= and
-Warray-bounds for this test.

Tested with build-many-glibcs.py that this restores the testsuite
build with GCC mainline for aarch64-linux-gnu.

	* string/tester.c (test_strncat) [__GNUC_PREREQ (7, 0)]: Also
	ignore -Wrestrict for one test.
2018-06-14 14:20:00 +00:00
Steve Ellcey
3c7b9f1fc3 aarch64: Use an ifunc/VDSO to implement gettimeofday in shared glibc.
This patch uses an ifunc to implement gettimeofday in the shared libc.
This is faster compared to the vsyscall mechanism that has to check a
global pointer, demangle it and call it indirectly when the VDSO is
present. Resolving the gettimeofday symbol directly to the VDSO code
is safe because there are no failures that the libc has to handle by
setting errno like in a generic vsyscall (the only failure when the
VDSO code falls back to a syscall is EFAULT, but passing an invalid
pointer is undefined behaviour so returning -EFAULT is fine).

If the kernel supports the VDSO interface we use it for extern calls,
otherwise the old vsyscall method is used which falls back to a syscall.
The static version of gettimeofday continues to use a syscall, libc.so
internal calls use the old vsyscall method.

	* sysdeps/unix/sysv/linux/aarch64/gettimeofday.c: New file.
2018-06-14 13:56:57 +01:00
Florian Weimer
c59ee916a6 scripts/update-abilist.sh: Accept empty list of files to patch
Commit b289cd9db8 (“Ignore absolute
symbols in ABI tests.”) broke “make update-all-abi” because an empty
list of files is now passed to scripts/update-abilist.sh.
2018-06-14 09:37:31 +02:00
Samuel Thibault
06d1a8263d hurd: Avoid a PLT reference
* sysdeps/mach/hurd/i386/____longjmp_chk.S (____longjmp_chk): Do not
	use PLT to call _hurd_self_sigstate.
2018-06-14 01:43:23 +02:00
Samuel Thibault
126b3ec370 hurd: Avoid PLTs for __mach_thread_self and __mach_reply_port
* mach/mach/mach_traps.h (__mach_reply_port, __mach_thread_self,
	__mach_task_self, __mach_host_self, __swtch, __swtch_pri,
	__thread_switch, __evc_wait): Move declarations to...
	* sysdeps/mach/include/mach/mach_traps.h: ... new file, and add
	attribute_hidden.
2018-06-14 01:01:57 +02:00
Samuel Thibault
c8c6e6d6d0 hurd: Avoid PLTs for _hurd_port_locked_get/set
* sysdeps/hurd/include/hurd/port.h: New file.
2018-06-14 00:28:03 +02:00
Samuel Thibault
c8c910ed9c hurd: update localplt.data
after 329ea513b4 ("Avoid cancellable I/O primitives in ld.so.")

	* sysdeps/mach/hurd/localplt.data (ld.so): Add __open64, rename
	__libc_read and __libc_write to __read and __write.
2018-06-14 00:22:20 +02:00
Samuel Thibault
43b5ff50b5 hurd: xfail missing abilist for libmachuser and libhurduser
They need more work to implement, see bug 23286.

	* sysdeps/mach/hurd/i386/Makefile (test-xfail-check-abi-libhurduser,
	test-xfail-check-abi-libmachuser): Add.
2018-06-13 21:12:23 +02:00
Joseph Myers
fcd6b5ac36 Fix strtod overflow detection (bug 23279).
As shown by bug 23279, strtod's round_and_return has an off-by-one
error in its overflow detection, only counting an exponent greater
than MAX_EXP as overflowing when an exponent of MAX_EXP also means
overflow (recall the ISO C definition of DBL_MAX_EXP etc. is based on
a floating-point model where 2^exp is multiplied by a value in the
interval [0.5, 1), so 2^MAX_EXP is not representable).

For decimal arguments to strtod, a separate overflow check in the main
implementation covers the case where the integer part of the argument
(truncated to the nearest integer towards zero) has more than MAX_EXP
bits, meaning that this issue in round_and_return only affects cases
(arguments with absolute value strictly between the maximum
representable value and 2^MAX_EXP) where overflow depends on the
rounding mode; in such cases, the returned value would still have been
correct on overflow but without the overflow exception being raised or
errno being set to ERANGE.  For hex float arguments, however, other
cases can arise, as shown in bug 23279, where a value with exponent
already set to MAX_EXP is passed into round_and_return and a result
can wrongly end up being NaN, or infinity instead of the largest
finite value.

This patch fixes the off-by-one error, adds testing of overflow
exceptions to the tst-strtod-round framework, and adds tests of these
issues.

Tested for x86_64.  Also ran the tst-strtod-round tests for powerpc to
make sure the new tests didn't introduce any new failures for IBM long
double.

	[BZ #23279]
	* stdlib/strtod_l.c (round_and_return): Handle an exponent of
	MAX_EXP as overflowing.
	* stdlib/gen-tst-strtod-round.c (string_to_fp): Clear MPFR
	overflow flag.
	(round_str): Output also whether result overflows in each rounding
	mode.
	* stdlib/tst-strtod-round-data: Add more tests.
	* stdlib/tst-strtod-round-data.h: Regenerated.
	* stdlib/tst-strtod-round-skeleton.c (_XNTRY): Update comment.
	(TEST): Handle extra arguments for overflow flags.
	(struct test_overflow): New type.
	[!FE_OVERFLOW] (FE_OVERFLOW): Define to 0.
	(GEN_ONE_TEST): Clear all exceptions.  Test overflow flag.
	(test_in_one_mode): Take argument with overflow information.
	(do_test): Update calls to test_in_one_mode.
2018-06-13 16:06:14 +00:00