Commit Graph

17333 Commits

Author SHA1 Message Date
Torvald Riegel
1ea339b697 Add arch-specific configuration for C11 atomics support.
This sets __HAVE_64B_ATOMICS if provided.  It also sets
USE_ATOMIC_COMPILER_BUILTINS to true if the existing atomic ops use the
__atomic* builtins (aarch64, mips partially) or if this has been
tested (x86_64); otherwise, this is set to false so that C11 atomics will
be based on the existing atomic operations.
2014-11-20 11:57:38 +01:00
Roland McGrath
d960211ff5 NPTL: Don't (re)validate sched_priority in pthread_create. 2014-11-19 17:34:25 -08:00
Roland McGrath
cbd463e2cf Test that pthread_create diagnoses invalid scheduling parameters. 2014-11-19 17:28:31 -08:00
Carlos O'Donell
a39208bd7f CVE-2014-7817: wordexp fails to honour WRDE_NOCMD.
The function wordexp() fails to properly handle the WRDE_NOCMD
flag when processing arithmetic inputs in the form of "$((... ``))"
where "..." can be anything valid. The backticks in the arithmetic
epxression are evaluated by in a shell even if WRDE_NOCMD forbade
command substitution. This allows an attacker to attempt to pass
dangerous commands via constructs of the above form, and bypass
the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
in exec_comm(), the only place that can execute a shell. All other
checks for WRDE_NOCMD are superfluous and removed.

We expand the testsuite and add 3 new regression tests of roughly
the same form but with a couple of nested levels.

On top of the 3 new tests we add fork validation to the WRDE_NOCMD
testing. If any forks are detected during the execution of a wordexp()
call with WRDE_NOCMD, the test is marked as failed. This is slightly
heuristic since vfork might be used in the future, but it provides a
higher level of assurance that no shells were executed as part of
command substitution with WRDE_NOCMD in effect. In addition it doesn't
require libpthread or libdl, instead we use the public implementation
namespace function __register_atfork (already part of the public ABI
for libpthread).

Tested on x86_64 with no regressions.
2014-11-19 14:35:03 -05:00
Siddhesh Poyarekar
130ac68ca2 Auto-generate libc-modules.h
Remove libc-modules.h from the tree and auto-generate it from
soversions.i and the list of modules in the built-modules variable
defined in Makeconfig.  Macros generated have increasing numbered
values, with built-modules having lower values starting from 1,
following which a separator value LIBS_BEGIN is added and then finally
the library names from soversions.i are appended to the list.  This
allows us to conveniently differentiate between the versioned
libraries and other built modules, which is needed in errno.h and
netdb.h to decide whether to use an internal symbol or an external
one.

Verified that generated code remains unchanged on x86_64.

	* Makeconfig (built-modules): List non-library modules to be
	built.
	(module-cppflags): Include libc-modules.h for
	everything except shlib-versions.v.i.
	(CPPFLAGS): Use it.
	(before-compile): Add libc-modules.h.
	($(common-objpfx)libc-modules.h,
	$(common-objpfx)libc-modules.stmp): New targets.
	(common-generated): Add libc-modules.h and libc-modules.stmp.
	($(common-objpfx)Versions.v.i): Depend on libc-modules.h.
	* include/libc-symbols.h: Don't include libc-modules.h.
	* include/libc-modules.h: Remove file.
	* scripts/gen-libc-modules.awk: New script to generate
	libc-modules.h.
	* sysdeps/unix/Makefile ($(common-objpfx)sysd-syscalls):
	Depend on libc-modules.stmp.
2014-11-19 12:16:00 +05:30
Siddhesh Poyarekar
286663c34b Fix -Wundef warning in SHLIB_COMPAT
Replace the IS_IN_##lib with IS_IN(lib).  Verified that the generated
code remains the same.

	* include/shlib-compat.h (_SHLIB_COMPAT): Use IS_IN.
2014-11-19 12:15:01 +05:30
Siddhesh Poyarekar
9cd4747089 Add new macro IN_MODULE to identify module in which source is built
The current scheme to identify which module a translation unit is
built in depends on defining multiple macros IS_IN_* and also defining
NOT_IN_libc if we're building a non-libc module.  In addition, there
is an IN_LIB macro that does effectively the same thing, but for
different modules (notably the systemtap probes).  This macro scheme
unifies both ideas to use just one macro IN_MODULE and assign it a
value depending on the module it is being built into.  If the module
is not defined, it defaults to MODULE_libc.

Patches that follow will replace uses of IS_IN_* variables with the
IS_IN() macro.  libc-symbols.h has been converted already to give an
example of how such a transition will look.

Verified that there are no relevant binary changes.  One source change
that will crop up repeatedly is that of nscd_stat, since it uses the
build timestamp as a constant in its logic.

	* Makeconfig (in-module): Get value of libof set for the
	translation unit.
	(CPPFLAGS): Use $(in-module).
	* Makerules: Don't suffix routine names for nonlib.
	* include/libc-modules.h: New file.
	* include/libc-symbols.h: Include libc-modules.h
	(IS_IN): New macro to replace IS_IN_* macros.
	* elf/Makefile: Set libof-* for each routine.
	* elf/rtld-Rules: Likewise.
	* extra-modules.mk: Likewise.
	* iconv/Makefile: Likewise.
	* iconvdata/Makefile: Likewise.
	* locale/Makefile: Likewise.
	* malloc/Makefile: Likewise.
	* nss/Makefile: Likewise.
	* sysdeps/gnu/Makefile: Likewise.
	* sysdeps/ieee754/ldbl-opt/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/Makefile: Likewise.
	* sysdeps/s390/s390-64/Makefile: Likewise.
	* nscd/Makefile: Set libof-* for each routine.  Set CFLAGS and
	CPPFLAGS for nscd instead of nonlib.
2014-11-19 12:13:54 +05:30
Roland McGrath
d71035bd9a NPTL: Add stub createthread.c 2014-11-18 11:03:35 -08:00
Roland McGrath
6540b9916b NPTL: Move Linux-specific createthread.c to sysdeps. 2014-11-18 11:03:20 -08:00
Roland McGrath
32fed10f0f NPTL: Refactor createthread.c 2014-11-18 11:03:00 -08:00
Joseph Myers
107a5bf085 Fix libm mpone, mptwo namespace (bug 17616).
libm uses symbols mpone and mptwo for internal purposes.  This patch
moves them to the implementation namespace (__mpone and __mptwo).

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by the patch).

	[BZ #17616]
	* sysdeps/ieee754/dbl-64/mpa.c (mpone): Rename to __mpone.
	(mptwo): Rename to __mptwo.
	(__inv): Use __mptwo instead of mptwo.
	* sysdeps/ieee754/dbl-64/mpa.h (mpone): Rename to __mpone.
	(mptwo): Rename to __mptwo.
	* sysdeps/ieee754/dbl-64/mpatan.c (__mpatan): Use __mpone instead
	of mpone and __mptwo instead of mptwo.
	* sysdeps/ieee754/dbl-64/mpatan2.c (__mpatan2): Use __mpone
	instead of mpone.
	* sysdeps/ieee754/dbl-64/mpexp.c (__mpexp): Likewise.
	* sysdeps/ieee754/dbl-64/mplog.c (__mplog): Likewise.
	* sysdeps/ieee754/dbl-64/sincos32.c (__c32): Use __mpone instead
	of mpone and __mptwo instead of mptwo.
	(__mpranred): Use __mpone instead of mpone.
	* conform/Makefile (test-xfail-ISO/math.h/linknamespace): Remove
	variable.
	(test-xfail-ISO99/complex.h/linknamespace): Likewise.
	(test-xfail-ISO99/math.h/linknamespace): Likewise.
	(test-xfail-ISO99/tgmath.h/linknamespace): Likewise.
	(test-xfail-ISO11/complex.h/linknamespace): Likewise.
	(test-xfail-ISO11/math.h/linknamespace): Likewise.
	(test-xfail-ISO11/tgmath.h/linknamespace): Likewise.
	(test-xfail-XPG3/math.h/linknamespace): Likewise.
	(test-xfail-XPG4/math.h/linknamespace): Likewise.
	(test-xfail-POSIX/math.h/linknamespace): Likewise.
	(test-xfail-UNIX98/math.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/complex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/math.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/tgmath.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/complex.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/math.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/tgmath.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/complex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/math.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/tgmath.h/linknamespace): Likewise.
2014-11-18 15:40:56 +00:00
Tom de Vries
3b679ab34c Fix crossreference to nonexistent node BSD Handler
2014-11-18  Tom de Vries  <tom@codesoucery.com>

	* manual/signal.texi (Primitives Interrupted by Signals): In section,
	replace BSD Handler xref with BSD Signal Handling.
2014-11-18 11:19:20 +01:00
Richard Henderson
4886f34179 alpha: Fix soft-fp breakage
Commit 5c0508a318 broke the Alpha
port, as the extra parenthesis got in the way of some token pasting
that we were doing in a redefined raw unpack macro.

Avoid this situation in the future by not attempting to redefine a
basic macro, but rather work from the outermost public interface.
The compiler does in fact see through the added indirection.

	* sysdeps/alpha/soft-fp/local-soft-fp.h (_FP_UNPACK_RAW_2): Remove.
	(_FP_PACK_RAW_2): Remove.
	(AXP_DECL_RETURN_Q): Rename from FP_DECL_RETURN, use _FP_UNION_Q.
	(AXP_RETURN_Q): Rename from FP_RETURN, use _FP_UNION_Q.
	(AXP_UNPACK_RAW_Q, AXP_UNPACK_SEMIRAW_Q, AXP_UNPACK_Q): New.
	(AXP_PACK_RAW_Q, AXP_PACK_SEMIRAW_Q, AXP_PACK_Q): New.
	* sysdeps/alpha/soft-fp/ots_add.c (_OtsAddX): Update to match.
	* sysdeps/alpha/soft-fp/ots_cmp.c (internal_equality): Likewise.
	* sysdeps/alpha/soft-fp/ots_cmpe.c (internal_compare): Likewise.
	* sysdeps/alpha/soft-fp/ots_cvtqux.c (_OtsCvtQUX): Likewise.
	* sysdeps/alpha/soft-fp/ots_cvtqx.c (_OtsCvtQX): Likewise.
	* sysdeps/alpha/soft-fp/ots_cvttx.c (_OtsConvertFloatTX): Likewise.
	* sysdeps/alpha/soft-fp/ots_cvtxq.c (_OtsCvtXQ): Likewise.
	* sysdeps/alpha/soft-fp/ots_cvtxt.c (_OtsConvertFloatXT): Likewise.
	* sysdeps/alpha/soft-fp/ots_div.c (_OtsDivX): Likewise.
	* sysdeps/alpha/soft-fp/ots_mul.c (_OtsMulX): Likewise.
	* sysdeps/alpha/soft-fp/ots_nintxq.c (_OtsNintXQ): Likewise.
	* sysdeps/alpha/soft-fp/ots_sub.c (_OtsSubX): Likewise.
2014-11-17 09:20:02 -08:00
Roland McGrath
0781a7772a Remove sigvec. 2014-11-14 11:06:08 -08:00
Joseph Myers
5ae4fe60e6 Remove x86_64 __GNUC_PREREQ (4, 6) conditional.
This patch removes a conditional on __GNUC_PREREQ (4, 6) in x86_64
code.

Tested for x86_64 that installed shared libraries are unchanged by
this patch.  Committed (I think this file reasonably comes under math
maintainership).

	* sysdeps/x86_64/fpu/dla.h [__FMA4__ && __GNUC_PREREQ (4, 6)]
	(DLA_FMS): Make definition conditional only on [__FMA4__].
	[__FMA4__ && !__GNUC_PREREQ (4, 6)] (DLA_FMS): Remove conditional
	definition.
2014-11-14 18:53:07 +00:00
Joseph Myers
6a0dd472f4 Remove ARM __GNUC_PREREQ(4,4) conditionals.
This patch removes conditionals in ARM code on __GNUC_PREREQ(4,4),
which were already obsolete even before the move from 4.4 to 4.6 as
minimum GCC version for building glibc.

Tested for ARM that installed shared libraries are unchanged by this
patch.

	* sysdeps/arm/sysdep.h [PROF && __GNUC_PREREQ(4,4)] (CALL_MCOUNT):
	Make definition conditional only on [PROF].
	[PROF && !__GNUC_PREREQ(4,4)] (CALL_MCOUNT): Remove conditional
	definition.
	[__GNUC_PREREQ(4,4)] (mcount): Make definition unconditional.
	[!__GNUC_PREREQ(4,4)] (mcount): Remove conditional definition.
2014-11-14 18:39:33 +00:00
Joseph Myers
a473381208 Only declare __sigpause in installed signal.h when necessary.
This patch makes the installed signal.h declare __sigpause only when
necessary (when a macro definition of sigpause makes use of
__sigpause), rather than unconditionally.  This fixes false positives
in the linknamespace tests by making it visible to those tests that no
use of ISO C functionality will actually bring in the definition of
__sigpause and so bring in the other symbols defined in the same
object.  There is no bug filed in Bugzilla because this is fixing
false positives rather than any user-visible bug.

Tested for x86_64 (testsuite, and that installed stripped shared
libraries are unchanged by this patch).

	* signal/signal.h (__sigpause): Only declare if [__USE_XOPEN &&
	!__GNUC__].
	* include/signal.h (__sigpause): Move declaration above call to
	libc_hidden_proto.
	* conform/Makefile (test-xfail-ISO/signal.h/linknamespace): Remove
	variable.
	(test-xfail-ISO99/signal.h/linknamespace): Likewise.
	(test-xfail-ISO11/signal.h/linknamespace): Likewise.
2014-11-14 18:35:42 +00:00
David S. Miller
cf7246ddf5 Fix sparc build.
* sysdeps/sparc/sparc64/rtld-memcpy.c (NO_MEMPCPY_STPCPY_REDIRECT):
	Define before including <string/memcpy.c> and <string/mempcpy.c>.
2014-11-14 10:32:52 -08:00
Joseph Myers
4863355ad5 Require GCC 4.6 or later to build glibc.
As discussed in the thread starting at
<https://sourceware.org/ml/libc-alpha/2014-10/msg00792.html>, and
continuing into November, this patch increases the minimum GCC version
for building glibc to 4.6 (there seemed to be no clear consensus for
4.7).  In particular, this allows us to use #pragma GCC diagnostic for
fine-grained warning control with -Werror (subject to establishing a
suitable policy for that use).  The documentation has a statement, as
requested, about the most recent GCC version tested for building
glibc, and I've updated <https://sourceware.org/glibc/wiki/Release> to
refer to updating that statement.  A NEWS entry is added for this
change, although previous such changes didn't get them.

Tested for x86_64 (testsuite, and that installed shared libraries are
unchanged by this patch).

	* configure.ac (libc_cv_compiler_ok): Require GCC 4.6 or later.
	* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Document a
	requirement of GCC 4.6 or later and that GCC 4.9 is the newest
	compiler verified to work.
	* INSTALL: Regenerated.
2014-11-14 18:00:34 +00:00
Joseph Myers
c1b0aadcdf Fix build of C mempcpy and stpcpy.
This patch fixes the build of C mempcpy and stpcpy by disabling the
redirection to __mempcpy and __stpcpy asm names if
NO_MEMPCPY_STPCPY_REDIRECT is defined, and defining that macro in the
relevant source files.

Tested for powerpc32 that the build is fixed.

	* include/string.h [NO_MEMPCPY_STPCPY_REDIRECT] (mempcpy): Do not
	redeclare with asm name.
	[NO_MEMPCPY_STPCPY_REDIRECT] (stpcpy): Likewise.
	* string/mempcpy.c (NO_MEMPCPY_STPCPY_REDIRECT): Define before
	including <string.h>.
	* string/stpcpy.c (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
	* sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy.c
	[!NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/mempcpy.c
	[!NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
	* sysdeps/powerpc/powerpc64/multiarch/stpcpy.c
	[SHARED && !NOT_IN_libc] (NO_MEMPCPY_STPCPY_REDIRECT): Likewise.
2014-11-14 13:48:39 +00:00
Joseph Myers
bf438382bd Use prototype definition for __strtol.
This patch fixes those warnings by using a prototype definition for
__strtol.

Tested for x86_64 that stripped installed shared libraries are
unchanged by this patch.

	* stdlib/strtol.c (__strtol): Use prototype definition.
2014-11-13 21:37:53 +00:00
Joseph Myers
2a1cfd94a2 Fix strtoll / strtoull namespace for 32-bit (bug 17594).
For 32-bit platforms, strtoll and strtoull are strong symbols in libc,
but they are not in ISO C90, and are brought in by references to
__strtoll_internal / __strtoull_internal from scanf.  (For 64-bit
platforms, they are properly weak.)  This patch makes them weak for
32-bit (it has a side-effect of making other symbols weak that don't
need to be weak, such as strtol, but that's harmless).

Tested for x86 (testsuite, and that the disassembly of installed
shared libraries is unchanged by the patch).  This fixes all 120
unXFAILed FAILs of the new linknamespace tests seen for x86 (in fact,
there are now seven XPASSes of those tests for x86

XPASS: conform/POSIX2008/fcntl.h/linknamespace
XPASS: conform/UNIX98/libgen.h/linknamespace
XPASS: conform/XOPEN2K/fcntl.h/linknamespace
XPASS: conform/XOPEN2K/libgen.h/linknamespace
XPASS: conform/XOPEN2K8/fcntl.h/linknamespace
XPASS: conform/XOPEN2K8/libgen.h/linknamespace
XPASS: conform/XPG4/libgen.h/linknamespace

so suggesting that the failures seen for those on x86_64 are in some
way architecture-specific or 64-bit-specific).

	[BZ #17594]
	* stdlib/strtol.c (SYM__): New macro.
	(SYM__1): Likewise.
	(__strtol): Likewise.
	(strtol): Rename to __strtol and define as weak alias of
	__strtol.  Use libc_hidden_weak.
2014-11-13 19:50:55 +00:00
Stefan Liebler
20ed0d266f S/390: dl-machine.h: Use numbered labels in inline assembly. 2014-11-13 10:45:28 +01:00
Stefan Liebler
53244a4e12 S/390: Add SystemTap probes to longjmp and setjmp. 2014-11-13 10:44:42 +01:00
Stefan Liebler
47df8251e8 S/390: Get rid of warning unused variable in dl-machine.h. 2014-11-13 10:44:11 +01:00
Stefan Liebler
618cebeff8 S/390: Get rid of warning: the comparision will always evaluate as false. 2014-11-13 10:43:24 +01:00
Roland McGrath
c6aab2cb52 NPTL: Move __libc_multiple_threads_ptr defn to nptl-init.c 2014-11-12 14:52:31 -08:00
Joseph Myers
24f4f8253f Add tests for namespace for static linking.
One thing we currently try to ensure manually is that glibc is
namespace-clean for static linking; that is, if you only use features
from a particular standard (including the set of features exposed by
headers given feature test macros such as _DEFAULT_SOURCE that don't
correspond to any written standard), the library objects brought in by
the static linker will not define or use (strong) names that are
reserved to the user in that standard.

This patch implements automatic tests for this, using the same set of
standards as for the header conformance tests (it would, however, be
easy to add more standards for this testing, without them needing to
have the definitions of expected header contents for the header
tests).  The tests are based on the functions declared in each header,
as extracted using GCC's -aux-info option.  The following comment from
linknamespace.pl explains the caveats around this approach:

Here's an example of the output for ISO (C90) assert.h, from before my
recent fixes and whitelisting of cases that seem more complicated to
fix:

[initial] __assert_fail -> [libc.a(assert.o)] free -> [libc.a(malloc.o)] __get_nprocs -> [libc.a(getsysstats.o)] fgets_unlocked
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] fileno
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] fread_unlocked
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_archive_subfreeres -> [libc.a(loadarchive.o)] __sysconf -> [libc.a(sysconf.o)] __tzname_max -> [libc.a(tzset.o)] __tzfile_compute -> [libc.a(tzfile.o)] ftello
[initial] __assert_fail -> [libc.a(assert.o)] free -> [libc.a(malloc.o)] malloc_info
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __libc_setlocale_lock -> [libc.a(setlocale.o)] _nl_default_locale_path -> [libc.a(findlocale.o)] memmem
[initial] __assert_perror_fail -> [libc.a(assert-perr.o)] __strerror_r -> [libc.a(_strerror.o)] mempcpy
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] _nl_find_domain -> [libc.a(finddomain.o)] _nl_expand_alias -> [libc.a(localealias.o)] qsort -> [libc.a(msort.o)] qsort_r
[initial] __assert_fail -> [libc.a(assert.o)] _dl_pagesize -> [libc.a(dl-support.o)] __rawmemchr -> [libc.a(rawmemchr.o)] rawmemchr
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] __getcwd -> [libc.a(getcwd.o)] rewinddir
[initial] __assert_fail -> [libc.a(assert.o)] stderr
[initial] __assert_fail -> [libc.a(assert.o)] stderr -> [libc.a(stdio.o)] stdin
[initial] __assert_fail -> [libc.a(assert.o)] stderr -> [libc.a(stdio.o)] stdout
[initial] __assert_fail -> [libc.a(assert.o)] __dcgettext -> [libc.a(dcgettext.o)] __dcigettext -> [libc.a(dcigettext.o)] stpcpy
[initial] __assert_fail -> [libc.a(assert.o)] __fxprintf -> [libc.a(fxprintf.o)] _IO_vfprintf -> [libc.a(vfprintf.o)] __printf_fp -> [libc.a(printf_fp.o)] wmemset

Of the 161 XFAILs, seven are the inevitable varargs.h and ndbm.h
failures; I think the remaining 154 mostly represent genuine bugs in
glibc that should mostly be straightforward to fix (probably rather
fewer than 154 bugs - issues generally affect multiple headers, for
multiple standards).  (When fixing, of course you need to file a bug
in Bugzilla, and check for the possibility that the header
conditionals are what's incorrect - that the first listed symbol
shouldn't have been declared, or that the symbol finally brought in
should have been declared.)

	* conform/GlibcConform.pm: New file.
	* conform/conformtest.pl: Use GlibcConform module.
	* conform/linknamespace.pl: New file.
	* conform/list-header-symbols.pl: Likewise.
	* conform/Makefile (linknamespace-symlists-base): New variable.
	(linknamespace-symlists-tests): Likewise.
	(linknamespace-header-base): Likewise.
	(linknamespace-header-tests): Likewise.
	(tests-special): Add new tests.
	($(linknamespace-symlists-tests)): New rule.
	(linknamespace-libs): New variable.
	($(objpfx)symlist-stdlibs): New rule.
	($(linknamespace-header-tests)): Likewise.
	(test-xfail-XPG3/varargs.h/linknamespace): New variable.
	(test-xfail-XPG4/varargs.h/linknamespace): Likewise.
	(test-xfail-UNIX98/varargs.h/linknamespace): Likewise.
	(test-xfail-XPG4/ndbm.h/linknamespace): Likewise.
	(test-xfail-UNIX98/ndbm.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/ndbm.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/ndbm.h/linknamespace): Likewise.
	(test-xfail-ISO/math.h/linknamespace): Likewise.
	(test-xfail-ISO/signal.h/linknamespace): Likewise.
	(test-xfail-ISO/stdio.h/linknamespace): Likewise.
	(test-xfail-ISO/time.h/linknamespace): Likewise.
	(test-xfail-ISO99/complex.h/linknamespace): Likewise.
	(test-xfail-ISO99/ctype.h/linknamespace): Likewise.
	(test-xfail-ISO99/math.h/linknamespace): Likewise.
	(test-xfail-ISO99/signal.h/linknamespace): Likewise.
	(test-xfail-ISO99/stdio.h/linknamespace): Likewise.
	(test-xfail-ISO99/tgmath.h/linknamespace): Likewise.
	(test-xfail-ISO11/complex.h/linknamespace): Likewise.
	(test-xfail-ISO11/ctype.h/linknamespace): Likewise.
	(test-xfail-ISO11/math.h/linknamespace): Likewise.
	(test-xfail-ISO11/signal.h/linknamespace): Likewise.
	(test-xfail-ISO11/stdio.h/linknamespace): Likewise.
	(test-xfail-ISO11/tgmath.h/linknamespace): Likewise.
	(test-xfail-XPG3/ctype.h/linknamespace): Likewise.
	(test-xfail-XPG3/fnmatch.h/linknamespace): Likewise.
	(test-xfail-XPG3/glob.h/linknamespace): Likewise.
	(test-xfail-XPG3/math.h/linknamespace): Likewise.
	(test-xfail-XPG3/regex.h/linknamespace): Likewise.
	(test-xfail-XPG3/search.h/linknamespace): Likewise.
	(test-xfail-XPG3/stdio.h/linknamespace): Likewise.
	(test-xfail-XPG3/time.h/linknamespace): Likewise.
	(test-xfail-XPG3/unistd.h/linknamespace): Likewise.
	(test-xfail-XPG3/wordexp.h/linknamespace): Likewise.
	(test-xfail-XPG4/ctype.h/linknamespace): Likewise.
	(test-xfail-XPG4/fmtmsg.h/linknamespace): Likewise.
	(test-xfail-XPG4/fnmatch.h/linknamespace): Likewise.
	(test-xfail-XPG4/glob.h/linknamespace): Likewise.
	(test-xfail-XPG4/grp.h/linknamespace): Likewise.
	(test-xfail-XPG4/libgen.h/linknamespace): Likewise.
	(test-xfail-XPG4/math.h/linknamespace): Likewise.
	(test-xfail-XPG4/netdb.h/linknamespace): Likewise.
	(test-xfail-XPG4/pwd.h/linknamespace): Likewise.
	(test-xfail-XPG4/regex.h/linknamespace): Likewise.
	(test-xfail-XPG4/search.h/linknamespace): Likewise.
	(test-xfail-XPG4/stdio.h/linknamespace): Likewise.
	(test-xfail-XPG4/stdlib.h/linknamespace): Likewise.
	(test-xfail-XPG4/sys/mman.h/linknamespace): Likewise.
	(test-xfail-XPG4/sys/statvfs.h/linknamespace): Likewise.
	(test-xfail-XPG4/syslog.h/linknamespace): Likewise.
	(test-xfail-XPG4/time.h/linknamespace): Likewise.
	(test-xfail-XPG4/unistd.h/linknamespace): Likewise.
	(test-xfail-XPG4/wordexp.h/linknamespace): Likewise.
	(test-xfail-POSIX/aio.h/linknamespace): Likewise.
	(test-xfail-POSIX/fnmatch.h/linknamespace): Likewise.
	(test-xfail-POSIX/glob.h/linknamespace): Likewise.
	(test-xfail-POSIX/math.h/linknamespace): Likewise.
	(test-xfail-POSIX/mqueue.h/linknamespace): Likewise.
	(test-xfail-POSIX/pthread.h/linknamespace): Likewise.
	(test-xfail-POSIX/regex.h/linknamespace): Likewise.
	(test-xfail-POSIX/sched.h/linknamespace): Likewise.
	(test-xfail-POSIX/semaphore.h/linknamespace): Likewise.
	(test-xfail-POSIX/sys/mman.h/linknamespace): Likewise.
	(test-xfail-POSIX/time.h/linknamespace): Likewise.
	(test-xfail-POSIX/unistd.h/linknamespace): Likewise.
	(test-xfail-POSIX/wordexp.h/linknamespace): Likewise.
	(test-xfail-UNIX98/aio.h/linknamespace): Likewise.
	(test-xfail-UNIX98/ctype.h/linknamespace): Likewise.
	(test-xfail-UNIX98/fmtmsg.h/linknamespace): Likewise.
	(test-xfail-UNIX98/fnmatch.h/linknamespace): Likewise.
	(test-xfail-UNIX98/glob.h/linknamespace): Likewise.
	(test-xfail-UNIX98/grp.h/linknamespace): Likewise.
	(test-xfail-UNIX98/libgen.h/linknamespace): Likewise.
	(test-xfail-UNIX98/math.h/linknamespace): Likewise.
	(test-xfail-UNIX98/mqueue.h/linknamespace): Likewise.
	(test-xfail-UNIX98/netdb.h/linknamespace): Likewise.
	(test-xfail-UNIX98/pthread.h/linknamespace): Likewise.
	(test-xfail-UNIX98/pwd.h/linknamespace): Likewise.
	(test-xfail-UNIX98/regex.h/linknamespace): Likewise.
	(test-xfail-UNIX98/sched.h/linknamespace): Likewise.
	(test-xfail-UNIX98/search.h/linknamespace): Likewise.
	(test-xfail-UNIX98/semaphore.h/linknamespace): Likewise.
	(test-xfail-UNIX98/stdio.h/linknamespace): Likewise.
	(test-xfail-UNIX98/stdlib.h/linknamespace): Likewise.
	(test-xfail-UNIX98/sys/mman.h/linknamespace): Likewise.
	(test-xfail-UNIX98/sys/statvfs.h/linknamespace): Likewise.
	(test-xfail-UNIX98/syslog.h/linknamespace): Likewise.
	(test-xfail-UNIX98/time.h/linknamespace): Likewise.
	(test-xfail-UNIX98/unistd.h/linknamespace): Likewise.
	(test-xfail-UNIX98/wchar.h/linknamespace): Likewise.
	(test-xfail-UNIX98/wordexp.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/aio.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/complex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/fcntl.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/fmtmsg.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/fnmatch.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/glob.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/grp.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/libgen.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/math.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/mqueue.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/net/if.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/netdb.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/pthread.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/pwd.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/regex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/search.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/semaphore.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/signal.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/spawn.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/stdlib.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/sys/mman.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/sys/statvfs.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/sys/wait.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/syslog.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/tgmath.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/time.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/ucontext.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/unistd.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K/wordexp.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/aio.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/complex.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/ctype.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/dirent.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/fcntl.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/grp.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/math.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/mqueue.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/net/if.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/netdb.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/pthread.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/regex.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/semaphore.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/spawn.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/sys/mman.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/sys/statvfs.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/tgmath.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/time.h/linknamespace): Likewise.
	(test-xfail-POSIX2008/unistd.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/aio.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/complex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/dirent.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/fcntl.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/fmtmsg.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/grp.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/libgen.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/math.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/mqueue.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/net/if.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/netdb.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/pthread.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/pwd.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/regex.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/search.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/semaphore.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/spawn.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/sys/mman.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/sys/statvfs.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/syslog.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/tgmath.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/time.h/linknamespace): Likewise.
	(test-xfail-XOPEN2K8/unistd.h/linknamespace): Likewise.
2014-11-12 22:45:25 +00:00
Joseph Myers
cc67478e28 Fix localealias.c fgets_unlocked namespace (bug 17589).
intl/localealias.c is brought in by ISO C functions, but uses
fgets_unlocked, which is not an ISO C function.  This patch changes
this to use __fgets_unlocked.

Tested for x86_64 (testsuite, and that stripped installed shared
libraries are unchanged by the patch).

	[BZ #17589]
	* intl/localealias.c [_LIBC] (FGETS): Use __fgets_unlocked instead
	of fgets_unlocked.
2014-11-12 22:42:22 +00:00
Joseph Myers
9975e3d37d Fix locale memmem namespace (bug 17585).
Locale code, brought in by ISO C functions, calls memmem, which is not
an ISO C function.  This isn't an ISO C conformance bug, because all
mem* names are reserved, but glibc practice is not to rely on that
reservation (thus, memmem is only declared in string.h if __USE_GNU
even though ISO C would allow it to be declared unconditionally, for
example).  This patch changes that code to use __memmem.

Note: there are uses of memmem elsewhere in glibc that I didn't
change, although it may turn out some of those also need to use
__memmem.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by this patch).

	[BZ #17585]
	* string/memmem.c [!_LIBC] (__memmem): Define to memmem.
	(memmem): Rename to __memmem and define as weak alias of
	__memmem.  Use libc_hidden_weak.
	(__memmem): Use libc_hidden_def.
	* include/string.h (__memmem): Declare.  Use libc_hidden_proto.
	* locale/findlocale.c (valid_locale_name): Use __memmem instead of
	memmem.
2014-11-12 22:41:03 +00:00
Joseph Myers
c4eae75271 Fix __get_nprocs fgets_unlocked namespace (bug 17582).
__get_nprocs is called from malloc code, but calls fgets_unlocked,
which is not an ISO C or POSIX function.  This patch fixes it to call
a new __fgets_unlocked name instead.

Note: there are various other uses of fgets_unlocked in glibc's
libraries, and I haven't yet investigated which others might also be
problematic (called directly or indirectly from standard functions)
and so need to change to use __fgets_unlocked.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17582]
	* libio/iofgets.c [weak_alias && !_IO_MTSAFE_IO]
	(__fgets_unlocked): Add alias of _IO_fgets.  Use libc_hidden_def.
	* libio/iofgets_u.c (fgets_unlocked): Rename to __fgets_unlocked
	and define as weak alias of __fgets_unlocked.  Use
	libc_hidden_weak.
	(__fgets_unlocked): Use libc_hidden_def.
	* include/stdio.h (__fgets_unlocked): Declare.  Use
	libc_hidden_proto.
	* sysdeps/unix/sysv/linux/getsysstats.c (phys_pages_info): Use
	__fgets_unlocked instead of fgets_unlocked.
	* sysdeps/unix/sysv/linux/alpha/getsysstats.c
	(GET_NPROCS_CONF_PARSER): Likewise.
	* sysdeps/unix/sysv/linux/sparc/getsysstats.c
	(GET_NPROCS_CONF_PARSER): Likewise.
2014-11-12 22:39:36 +00:00
Joseph Myers
01cad84e19 Fix __printf_fp wmemset namespace (bug 17574).
__printf_fp calls wmemset, but that is not an ISO C90 function.  This
patch fixes it to call a new __wmemset name instead (with wmemset
being a weak alias).

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17574]
	* wcsmbs/wmemset.c (wmemset): Rename to __wmemset and define as
	weak alias of __wmemset.  Use libc_hidden_weak.
	(__wmemset): Use libc_hidden_def.
	* include/wchar.h (__wmemset): Declare.  Use libc_hidden_proto.
	* stdio-common/printf_fp.c (___printf_fp): Call __wmemset instead
	of wmemset.
2014-11-12 22:38:11 +00:00
Joseph Myers
939da41143 Fix stpcpy / mempcpy namespace (bug 17573).
Various glibc functions call __stpcpy and __mempcpy for namespace
reasons instead of plain stpcpy and mempcpy.  But __stpcpy and
__mempcpy are macros that call __builtin_stpcpy and __builtin_mempcpy,
and unless GCC optimizes the calls, they end up calling the C
functions stpcpy and mempcpy.

For calls from within shared libc, libc_hidden_builtin_proto ensures
that calls to those C functions are in turn mapped to call __GI_stpcpy
and __GI_mempcpy.  However, for static libc, and for calls from shared
libraries other than libc, the ELF symbols stpcpy and mempcpy end up
getting called, breaking the ISO C namespace (in the case of stpcpy)
or glibc conventions about not relying on the "future library
directions" reservations (in the case of mempcpy).

This patch fixes this by adding declarations of these functions to
include/string.h, under an appropriate condition, with __asm__ used to
change the assembler name used for calls (the mempcpy case was
previously discussed, and the approach for the fix is as I suggested
in <https://sourceware.org/ml/libc-alpha/2013-02/msg00063.html>).

Tested for x86_64 with the testsuite; also checked that dcigettext.o
(an example previously noted of undesired calls to stpcpy and mempcpy)
now calls __stpcpy and __mempcpy instead, as do non-libc shared
libraries (__stpcpy and __mempcpy were already exported from shared
libc).  Disassembly of installed shared libraries isn't easy to
compare because of reordered PLT entries resulting from the change in
functions called (libnsl, libnss_compat, libnss_dns, libnss_files,
libnss_hesiod, libnss_nis, libnss_nisplus, libpthread, librt all have
such changes).

	[BZ #17573]
	* include/string.h [NOT_IN_libc || !SHARED] (mempcpy): Declare
	with asm name __mempcpy.
	[NOT_IN_libc || !SHARED] (stpcpy): Declare with asm name __stpcpy.
2014-11-12 22:36:34 +00:00
Joseph Myers
293d9a4180 Fix x86_64 rawmemchr namespace (bug 17572).
rawmemchr is not an ISO C function, but __rawmemchr is called from ISO
C functions, so rawmemchr should be a weak alias.  On most
architecture it is, but x86_64 defines the function as rawmemchr with
__rawmemchr as a strong alias.  This patch makes x86_64 follow the
same arrangements as other architectures.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17572]
	* sysdeps/x86_64/rawmemchr.S (rawmemchr): Rename to __rawmemchr
	and define as weak alias of __rawmemchr.
	(__rawmemchr): Do not define as strong alias of rawmemchr.
2014-11-12 22:35:12 +00:00
Joseph Myers
bef8fd6013 Fix qsort_r namespace (bug 17571).
qsort_r is defined in the same file as qsort, but is not an ISO C
function, so should be a weak alias for __qsort_r.  The uses in
getaddrinfo should also call __qsort_r, since getaddrinfo is a POSIX
function and qsort_r isn't.  This patch implements this.  Because nscd
uses the getaddrinfo sources outside libc, as do the tst-rfc3484
tests, a #define of __qsort_r to qsort_r is added there alongside the
similar defines for other libc-internal symbols used in getaddrinfo.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17571]
	* stdlib/msort.c (qsort_r): Rename to __qsort_r and define as weak
	alias of __qsort_r.
	(qsort): Call __qsort_r instead of qsort_r.
	* include/stdlib.h (qsort_r): Do not call libc_hidden_proto.
	(__qsort_r): Declare.  Call libc_hidden_proto.
	* sysdeps/posix/getaddrinfo.c (getaddrinfo): Call __qsort_r
	instead of qsort_r.
	* nscd/gai.c (__qsort_r): Define to qsort_r.
	* posix/tst-rfc3484.c (__qsort_r): Likewise.
	* posix/tst-rfc3484-2.c (__qsort_r): Likewise.
	* posix/tst-rfc3484-3.c (__qsort_r): Likewise.
2014-11-12 22:33:41 +00:00
Joseph Myers
c52ff39e8e Fix malloc_info namespace (bug 17570).
malloc_info is defined in the same file as malloc and free, but is not
an ISO C function, so should be a weak symbol.  This patch makes it
so.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch).

	[BZ #17570]
	* malloc/malloc.c (malloc_info): Rename to __malloc_info and
	define as weak alias of __malloc_info.
2014-11-12 22:31:38 +00:00
Joseph Myers
2f5c1b000a Fix __getcwd rewinddir namespace (bug 17584).
__getcwd is called from dcigettext.o (brought in by various ISO C
functionality), but calls rewinddir, which is not an ISO C function.
This patch makes __getcwd call __rewinddir instead and makes rewinddir
a weak alias for __rewinddir.

Since getcwd.c is shared with gnulib (albeit not merged in either
direction for a long time, and omitted from gnulib's
config/srclist.txt list of shared files) I put in a #ifndef _LIBC
define of __rewinddir to rewinddir, although a future merged version
of getcwd could end up looking significantly different.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by this patch).

	[BZ #17584]
	* dirent/rewinddir.c (rewinddir): Rename to __rewinddir and define
	as weak alias of __rewinddir.  Don't use libc_hidden_def.
	(__rewinddir): Use libc_hidden_def.
	* sysdeps/mach/hurd/rewinddir.c: Rename to __rewinddir and define
	as weak alias of __rewinddir.  Don't use libc_hidden_def.
	(__rewinddir): Use libc_hidden_def.
	* sysdeps/posix/rewinddir.c: Rename to __rewinddir and define as
	weak alias of __rewinddir.  Don't use libc_hidden_def.
	(__rewinddir): Use libc_hidden_def.
	* include/dirent.h (rewinddir): Don't use libc_hidden_proto.
	(__rewinddir): Use libc_hidden_proto.
	* sysdeps/posix/getcwd.c [!_LIBC] (__rewinddir): Define to
	rewinddir.
	(__getcwd): Use __rewinddir instead of rewinddir.
2014-11-12 16:24:16 +00:00
Joseph Myers
5a6fa4d7ed Fix tzfile.c namespace (bug 17583).
tzfile.c is brought in by various ISO C functions, but calls fileno,
fread_unlocked and ftello, which are not ISO C functions.  This patch
adds names __fileno, __fread_unlocked and __ftello for those
functions, making tzfile.c use those new names.

Note: there are various uses of fileno elsewhere in glibc that I
didn't change, although it may turn out that some of those also need
to use __fileno.

Tested for x86_64 with the glibc testsuite.  Changed line numbers in
tzfile.c cause changes in assertions, and for some reason this ends up
with different instruction choice and register allocation, affecting
the size of __tzfile_read and so making comparison of disassembly for
libc.so problematic.

	[BZ #17583]
	* libio/fileno.c (fileno): Rename to __fileno and define as weak
	alias of __fileno.  Use libc_hidden_weak.
	(__fileno): Use libc_hidden_def.
	[weak_alias] (fileno_unlocked): Define as weak alias of __fileno.
	* libio/ftello.c (ftello): Rename to __ftello and define as weak
	alias of __ftello.
	[__OFF_T_MATCHES_OFF64_T] (ftello64): Define as weak alias of
	__ftello.
	* libio/iofread.c [weak_alias && !_IO_MTSAFE_IO]
	(__fread_unlocked): Define as strong alias of _IO_fread.  Use
	libc_hidden_def.
	(fread_unlocked): Don't use libc_hidden_ver.
	* libio/iofread_u.c (fread_unlocked): Rename to __fread_unlocked
	and define as weak alias of __fread_unlocked.  Don't use
	libc_hidden_def.
	(__fread_unlocked): Use libc_hidden_def.
	* include/stdio.h (__fileno): Declare.  Use libc_hidden_proto.
	(ftello): Don't use libc_hidden_proto.
	(__ftello): Declare.  Use libc_hidden_proto.
	(fread_unlocked): Don't use libc_hidden_proto.
	(__fread_unlocked): Declare.  Use libc_hidden_proto.
	* time/tzfile.c (__tzfile_read): Use __fileno, __fread_unlocked
	and __ftello instead of fileno, fread_unlocked and ftello.
2014-11-12 16:22:51 +00:00
Siddhesh Poyarekar
2581b98ecb Use GOT instead of GOT12 all over
GOT12 is a synonym for GOT, so just use GOT everywhere for
consistency.  Generated code is unchanged on s390.
2014-11-12 19:43:04 +05:30
Siddhesh Poyarekar
533bb7c2ae Fix stack alignment when loader is invoked directly
The s390 ABI requires the stack pointer to be aligned at 8-bytes.
When a program is invoked as an argument to the dynamic linker,
_dl_start_user adjusts the stack to remove the dynamic linker
arguments so that the program sees only its name and arguments.  This
may result in the stack being misaligned since each argument shift is
only a word and not a double-word.

This is now fixed shifting argv and envp down instead of shifting argc
up and reclaiming the stack.  This requires _dl_argv to be adjusted
and hence, is no longer relro.
2014-11-12 19:42:59 +05:30
Leonhard Holz
fffa1cf8a7 Fix tst-strcoll-overflow returning before timeout (BZ #17506)
Modifies the test examination in test-skeleton.c so that a test can be
successful if it is interrupted or it returns uninterrupted with the
expected status. For this both EXPECTED_SIGNAL and EXPECTED_STATUS
have to be set, as is done in tst-strcoll-overflow.c.
2014-11-12 17:10:21 +05:30
Tatiana Udalova
fb89b46d1d New Bhilodi and Tulu locales (BZ #17475) 2014-11-12 17:06:39 +05:30
Alan Hayward
5c40c3bab2 [AArch64] Add ipc.h.
Adding ipc.h for AArch64 adjusted to behave correctly on big endian
targets.
2014-11-11 16:32:34 +00:00
Marcus Shawcroft
b17fe01b63 Fix ChangeLog formatting of previous commit. 2014-11-11 15:51:55 +00:00
Renlin Li
80085defb8 [AArch64] End frame record chain correctly. 2014-11-11 15:02:02 +00:00
Andrew Senkevich
bd80507166 Update minimal required bunutils version to 2.22 2014-11-10 11:16:46 -08:00
Andreas Schwab
1400983e04 m68k: don't expect PLT reference to __tls_get_addr 2014-11-07 17:39:55 +01:00
Joseph Myers
2c46a66a3a Remove __libc_waitpid function name.
Continuing the removal of unused __libc_* function names, this patch
removes the __libc_waitpid name.

Tested for x86_64 (testsuite, and that disassembly of installed shared
libraries is unchanged by the patch; __waitpid, which is exported from
shared libc, changes from weak to strong on some configurations, which
is of no significance).

	* include/sys/wait.h (__libc_waitpid): Remove declaration.
	* posix/waitpid.c (__libc_waitpid): Rename to __waitpid.
	(__waitpid): Don't define as alias.  Use libc_hidden_def not
	libc_hidden_weak.
	(waitpid): Define as alias of __waitpid.
	* sysdeps/unix/bsd/waitpid.c (__libc_waitpid): Rename to
	__waitpid.
	(__waitpid): Don't define as alias.  Use libc_hidden_def not
	libc_hidden_weak.
	(waitpid): Define as alias of __waitpid.
	* sysdeps/unix/sysv/linux/i386/syscalls.list (waitpid): Remove
	__libc_waitpid alias.
	* sysdeps/unix/sysv/linux/m68k/syscalls.list (waitpid): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/syscalls.list (waitpid):
	Likewise.
	* sysdeps/unix/sysv/linux/sh/syscalls.list (waitpid): Likewise.
	* sysdeps/unix/sysv/linux/sparc/syscalls.list (waitpid): Likewise.
	* sysdeps/unix/sysv/linux/tile/waitpid.S (__libc_waitpid): Remove
	alias.
	* sysdeps/unix/sysv/linux/waitpid.c (__libc_waitpid): Rename to
	__waitpid.
	(__waitpid): Don't define as alias.  Use libc_hidden_def not
	libc_hidden_weak.
	(waitpid): Define as alias of __waitpid.
2014-11-07 01:27:16 +00:00
Carlos O'Donell
a2887bdb27 manual/llio.texi: Comment on write atomicity.
We add Linux-realted comments about the atomicity of
write with respect to file offsets. As of Linux 3.14
the file offset update is atomic. That means that
multiple threads calling the write syscall can not possibly
get the same file offset. Therefore the writes should
not overlap and data should not be lost as is required
by POSIX.
2014-11-06 15:58:52 -05:00
Carlos O'Donell
da53d6dbc2 Run check-localpltk/textrel/execstack over ld.so.
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
2014-11-06 15:48:44 -05:00
Joseph Myers
9cf27b8d09 Remove INTDEF / INTUSE / INTVARDEF (bug 14132).
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.
2014-11-05 23:35:36 +00:00
Adhemerval Zanella
af83568d3f libio: Refactor tst-fmemopen to use test-skeleton.c
This patch refactor tst-fmemopen.c to use test-skeleton.c.  No logic
changes are added.
2014-11-05 12:19:40 -02:00
Will Newton
b01ee67cb5 benchtests: Add malloc microbenchmark
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.
2014-11-05 14:13:00 +00:00
Richard Earnshaw
be9d4ccc7f [AArch64] Add optimized strchrnul.
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.
2014-11-05 13:51:56 +00:00
Adhemerval Zanella
7110166d4f powerpc: Simplify encoding of POWER8 instruction 2014-11-05 08:01:09 -05:00
Arjun Shankar
29955b5d96 Modify several tests to use test-skeleton.c
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.
2014-11-05 15:24:08 +05:30
Joseph Myers
ab97ee8f1b Don't use INTDEF/INTUSE with _dl_mcount (bug 14132).
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.
2014-11-05 01:02:47 +00:00
Joseph Myers
c5684fdb2b Don't use INTDEF/INTUSE with _dl_init (bug 14132).
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.
2014-11-04 23:26:39 +00:00
Joseph Myers
4243cbea6d Don't use INTDEF/INTUSE with _dl_argv (bug 14132).
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.
2014-11-04 17:39:39 +00:00
Joseph Myers
2004e7fb76 soft-fp: Add _FP_TO_INT_ROUND.
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.
2014-11-04 16:34:49 +00:00
Andreas Schwab
97827bfc5f Remove unused include 2014-11-04 15:32:07 +01:00
Adhemerval Zanella
5e4df2848d powerpc: Fix encoding of POWER8 instruction
This patch adds a binary encoding for 'mtvsrd' instruction to avoid
build failures when assembler does not support POWER8.
2014-11-03 07:26:33 -05:00
Andreas Schwab
04b76b5aa8 Don't error out writing a multibyte character to an unbuffered stream (bug 17522) 2014-11-03 09:58:24 +01:00
Jose E. Marchesi
4c6da7da9f Fix sparc struct fpu definition.
* sysdeps/unix/sysv/linux/sparc/sys/ucontext.h (struct fpu): fix
	the size of the fpu_fr.fpu_dregs[] array.
2014-11-01 13:45:02 -07:00
Joseph Myers
1679ba8eb6 Remove __libc_nanosleep function name.
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.
2014-11-01 12:26:09 +00:00
Joseph Myers
2626c18374 Make aclocal.m4 comment mention updating install.texi for autoconf version.
* aclocal.m4 (GLIBC_AUTOCONF_VERSION): Mention need to update
	install.texi in comment.
2014-10-31 22:44:17 +00:00
Torvald Riegel
7f981fc24a powerpc: Change atomic_write_barrier to have release semantics. 2014-10-31 23:26:22 +01:00
Matthew Fortune
d6f373d21b Add a hook to enable load-time inspection of program headers
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.
2014-10-31 22:19:23 +00:00
Roland McGrath
67c379871e BZ#17496: Fix gnu/lib-names.h dependency. 2014-10-31 15:07:36 -07:00
Joseph Myers
f3f5d89569 Update autoconf version requirement in install.texi.
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.
2014-10-31 21:49:35 +00:00
Joseph Myers
f62ff28683 Remove __libc_pselect alias.
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.
2014-10-31 21:22:35 +00:00
Joseph Myers
94a4245525 Move powerpc64 pread/pwrite definitions to syscalls.list (bug 14138).
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.
2014-10-31 21:13:32 +00:00
Torvald Riegel
ff9dbdc048 Fix SPARC atomic_write_barrier. 2014-10-31 12:00:38 +01:00
Roland McGrath
b4f6688462 Clean up internal ctype.h header. 2014-10-30 14:00:26 -07:00
Joseph Myers
e19c95fd5e Remove __libc_readv and __libc_writev function names.
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.
2014-10-30 20:56:34 +00:00
Roland McGrath
65b00b6c51 Clean up wchar_t conversion code in iconv program. 2014-10-30 12:56:51 -07:00
Joseph Myers
d4e157aaae Remove __libc_creat function name.
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.
2014-10-30 19:44:31 +00:00
Carlos O'Donell
0c6891a003 manual/llio.texi: Add Linux-specific comments for write().
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.
2014-10-29 20:39:07 -04:00
Carlos O'Donell
cc00cecef5 elf/dl-load.c: Use __strdup.
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.
2014-10-28 19:46:15 -04:00
Joseph Myers
51e623f241 Don't use INTDEF/INTUSE in unwind-dw2-fde.c (bug 14132).
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.
2014-10-28 17:12:57 +00:00
Gratian Crisan
03d41216fe arm: Re-enable PI futex support for ARM kernels >= 3.14.3
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.
2014-10-27 22:45:43 +00:00
Joseph Myers
a4b3624d20 Move setfsgid/setfsuid definitions to syscalls.list (bug 14138).
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.
2014-10-27 12:24:42 +00:00
Andreas Schwab
3574f2fdf3 Fix misdetected Slow_SSE4_2 cpu feature bit (bug 17501) 2014-10-27 10:44:28 +01:00
Roland McGrath
461a7b1e45 Rework compiler version check in configure. 2014-10-24 14:45:47 -07:00
Roland McGrath
70996a373d Prototypify htonl and htons definitions. 2014-10-24 12:37:36 -07:00
Wilco Dijkstra
e80514b5a8 This patch improves strncat performance by using strlen. Strlen has a fast C 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.
2014-10-24 16:12:12 +00:00
Wilco Dijkstra
6e46de42fe This patch improves strcat performance by using strlen and strcpy. Strlen 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.
2014-10-24 16:08:42 +00:00
Wilco Dijkstra
6a9ad2faee Call libc_fetestexcept_aarch64 from math_private.h rather than duplicating functionality. 2014-10-24 13:23:12 +00:00
Wilco Dijkstra
1c8810ed95 Call libc_feholdexcept_aarch64 from math_private.h rather than duplicating functionality. 2014-10-24 13:21:27 +00:00
Wilco Dijkstra
8b1af712d1 Call get_rounding_mode rather than duplicating functionality. 2014-10-24 13:19:24 +00:00
Wilco Dijkstra
a7b00c1101 Cleanup feenableexcept to use the same logic as the ARM version. No functional changes. 2014-10-24 13:07:17 +00:00
Wilco Dijkstra
3a84f1a651 Cleanup fedisableexcept to use the same logic as the ARM version. No functional changes. 2014-10-24 13:06:04 +00:00
Wilco Dijkstra
ea9a7c8b06 Cleanup feclearexcept to use the same logic as the ARM version. No functional changes. 2014-10-24 13:03:11 +00:00
Wilco Dijkstra
e226de3372 Cleanup fesetexceptflag to use the same logic as the ARM version. No functional changes. 2014-10-24 13:03:09 +00:00
Wilco Dijkstra
6e3d8ed360 Remove an unused include. 2014-10-24 13:03:08 +00:00
Joseph Myers
c8bc40386a Move get*id and getgroups definitions to syscalls.list (bug 14138).
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.
2014-10-24 13:01:17 +00:00
Joseph Myers
48eb7a94e2 Move some chown / lchown / fchown definitions to syscalls.list (bug 14138).
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.
2014-10-24 12:59:23 +00:00
Wilco Dijkstra
eb04247d5d Remove spaces. 2014-10-24 12:53:19 +00:00
Carlos O'Donell
13d845549e hppa: Make __SIGRTMIN 32 (ABI break).
In the Linux kernel version 3.17 the signal numbers were rearranged in
order to make hppa like every other arch. Previously we started
__SIGRTMIN at 37, and that meant several pieces of important software,
including systemd, would fail to build. To support systemd we removed
SIGEMT and SIGLOST, and rearranged the others according to expected
values. This is technically an ABI incompatible change, but because
zero applications use SIGSTKFLT, SIGXCPU, SIGXFSZ and SIGSYS nothing
broke.  Nothing uses SIGEMT and SIGLOST, and they were present for
HPUX compatibility which is no longer supported. Thus because nothing
breaks we don't do any compatibility work here.

Upstream kernel commit is 1f25df2eff5b25f52c139d3ff31bc883eee9a0ab.

Signed-off-by: Carlos O'Donell <carlos@systemhalted.org>
Signed-off-by: Helge Deller <deller@gmx.de>

2014-10-23  Carlos O'Donell  <carlos@systemhalted.org>
	    Helge Deller <deller@gmx.de>

	[BZ #17508]
	* sysdeps/unix/sysv/linux/hppa/bits/signum.h: Remove SIGEMT.
	Define SIGSTKFLT as 7. Define SIGSYS as 31. Define SIGXCPU as 12.
	Remove SIGLOST. Define SIGXFSZ as 30. Define __SIGRTMIN as 32.
2014-10-23 23:18:19 -04:00
Joseph Myers
15f9c5dfaf Don't use INTDEF for powerpc32 compat symbols (bug 14132).
Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this
patch removes the use of INTUSE to rename symbols in
sysdeps/powerpc/powerpc32/libgcc-compat.S.  As the names in question
are purely internal to this particular object and not used anywhere
else, it doesn't matter at all whether __*_v_glibc20 or __*_internal
is used, so this patch just removes the macros in question.

Tested for powerpc32 that stripped installed shared libraries are
unchanged by this patch.

	[BZ #14132]
	* sysdeps/powerpc/powerpc32/libgcc-compat.S (__ashldi3_v_glibc20):
	Remove macro definition.
	(__ashrdi3_v_glibc20): Likewise.
	(__lshrdi3_v_glibc20): Likewise.
	(__cmpdi2_v_glibc20): Likewise.
	(__ucmpdi2_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__fixdfdi_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__fixsfdi_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__fixunsdfdi_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__fixunssfdi_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__floatdidf_v_glibc20): Likewise.
	[!_SOFT_FLOAT && !__NO_FPRS__] (__floatdisf_v_glibc20): Likewise.
2014-10-23 21:43:41 +00:00
Roland McGrath
c6dfed243e Rework some nscd code not to use variable-length struct types. 2014-10-22 14:28:51 -07:00
Roland McGrath
8c2b1ed8bb ARM: Use movw/movt more when available 2014-10-22 14:20:35 -07:00
Maciej W. Rozycki
b5af9297d5 MIPS: Avoid a dangling `vfork@GLIBC_2.0' reference
This satisfies a symbol reference created with:

	.symver	__libc_vfork, vfork@GLIBC_2.0

where `__libc_vfork' has not been defined or referenced.  In this case
the `vfork@GLIBC_2.0' reference is supposed to be discarded, however a
bug present in GAS since forever causes an undefined symbol table entry
to be created.  This in turn triggers a problem in the linker that can
manifest itself by link errors such as:

ld: libpthread.so: invalid string offset 2765592330 >= 5154 for section `.dynstr'

The GAS and linker bugs need to be resolved, but we can avoid them too
by providing a `__libc_vfork' definition just like our other platforms.

	[BZ #17485]
	* sysdeps/unix/sysv/linux/mips/vfork.S (__libc_vfork): Define.
2014-10-22 15:20:37 +01:00
Joseph Myers
a13d0d745c Don't use INTDEF with __ldexpf (bug 14132).
Continuing the removal of the obsolete INTDEF / INTUSE mechanism, this
patch removes the use of INTDEF for __ldexpf.  As far as I can tell,
the resulting alias is completely unused.

Tested for x86_64 that stripped installed shared libraries are
unchanged by this patch.

	[BZ #14132]
	* math/s_ldexpf.c (__ldexpf): Do not use INTDEF.
2014-10-21 23:11:49 +00:00
Roland McGrath
f05e73f660 Avoid local PLT reference in __nptl_main. 2014-10-21 10:18:17 -07:00
Roland McGrath
6ab1d1ea96 Tiny refactoring in fts to eliminate a warning. 2014-10-20 15:32:45 -07:00
Roland McGrath
e436eb790f NPTL: Clean up gratuitous Linuxism in libpthread.so entry point. 2014-10-20 14:54:12 -07:00
Roland McGrath
6af246cf8b NPTL: Add some missing #include's 2014-10-20 14:46:00 -07:00
Roland McGrath
ab49e7630f Make internal lock-init macros return void. 2014-10-20 14:13:14 -07:00
Torvald Riegel
f50277c19d pthread_once: Add fast path and remove x86 variants. 2014-10-20 20:28:08 +02:00
Torvald Riegel
63668b7084 pthread_once: Clean up constants.
[BZ #15215] This just gives a name to the integer constants being used.
2014-10-20 18:22:30 +02:00
Joseph Myers
42b7f5d485 Move readv and writev definitions to syscalls.list (bug 14138).
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 definitions of readv and writev.

The relevant syscalls.list entries were already in
sysdeps/unix/syscalls.list, but to match the C files they needed to
have the names __libc_readv and __libc_writev added.  In fact, I don't
see anything making use of those names - as far as I can tell, these
functions could just be defined as __readv and __writev with aliases
readv and writev.  But cleaning up unnecessary aliases for functions
should be a separate matter from cleaning up unnecessary C syscall
wrappers.

Tested for x86_64.

	[BZ #14138]
	* sysdeps/unix/syscalls.list (readv): Use __libc_readv as strong
	name.
	(writev): Use __libc_writev as strong name.
	* sysdeps/unix/sysv/linux/readv.c: Remove file.
	* sysdeps/unix/sysv/linux/writev.c: Likewise.
2014-10-20 15:49:08 +00:00
Roland McGrath
114c4e0954 Remove obsolete TLS_DEFINE_INIT_TP fallback. 2014-10-17 15:40:36 -07:00
Roland McGrath
674b89786e NPTL: Clean up THREAD_SYSINFO macros. 2014-10-17 15:03:00 -07:00
Roland McGrath
184ee94010 NPTL: Conditionalize direct futex syscall uses. 2014-10-17 14:30:16 -07:00
Roland McGrath
327ae25707 NPTL: Conditionalize more uses of SIGCANCEL and SIGSETXID. 2014-10-17 13:40:46 -07:00
Roland McGrath
b0643088bc Fix NPTL build error when missing __NR_set_robust_list. 2014-10-17 11:30:15 -07:00
Siddhesh Poyarekar
33cc770b98 Fix up incorrect formatting in last commit 2014-10-17 15:52:46 +05:30
Leonhard Holz
0742aef6e5 strcoll: improve performance by removing the cache (#15884)
this is a path that should solve bug 15884. It complains about the performance
of strcoll(). It was found out that the runtime of strcoll() is actually bound
to strlen which is needed for calculating the size of a cache that was
installed to improve the comparison performance.

The idea for this patch was that the cache is only useful in rare cases
(strings of same length and same first-level-chars) and that it would be
better to avoid memory allocation at all. To prove this I wrote a performance
test bench-strcoll.c with test data in benchtests-strcoll.tar.gz. Also
modifications in benchtests/Makefile and localedata/Makefile are necessary to
make it work.

After removing the cache the strcoll method showed the predicted behavior
(getting slightly faster) in all but the test case for hindi word sorting.
This was due the hindi text having much more equal words than the other ones.
For equal strings the performance was worse since all comparison levels were
run through and from the second level on the cache improved the comparison
performance of the original version.

Therefore I added a bytewise test via strcmp iff the first level comparison
found that both strings did match because in this case it is very likely that
equal strings are compared. This solved the problem with the hindi test case
and improved the performance of the others.

Performance comparison:

glibc files     -33.77%
vi_VN.UTF-8     -34.12%
en_US.UTF-8     -42.42%
ar_SA.UTF-8     -27.49%
zh_CN.UTF-8     +07.90%
cs_CZ.UTF-8     -29.67%
en_GB.UTF-8     -28.50%
da_DK.UTF-8     -36.57%
pl_PL.UTF-8     -39.31%
fr_FR.UTF-8     -28.57%
pt_PT.UTF-8     -22.82%
el_GR.UTF-8     -26.77%
ru_RU.UTF-8     -35.81%
iw_IL.UTF-8     -35.34%
es_ES.UTF-8     -34.46%
hi_IN.UTF-8     -00.38%
sv_SE.UTF-8     -36.99%
hu_HU.UTF-8     -16.35%
tr_TR.UTF-8     -27.80%
is_IS.UTF-8     -33.24%
it_IT.UTF-8     -24.39%
sr_RS.UTF-8     -37.55%
ja_JP.UTF-8     +02.84%
2014-10-17 15:47:23 +05:30
Roland McGrath
ee54ce44cb Remove sysdeps/arm/soft-fp directory. 2014-10-16 09:54:45 -07:00
Joseph Myers
a75d3b0288 conformtest: clean up POSIX expections for sys/utsname.h, sys/wait.h.
Continuing the series of patches to clean up conformtest expectations
for "POSIX" (1995/6) based on review of the expectations against the
standard, this patch cleans up expectations for sys/utsname.h and
sys/wait.h.  Tested x86_64; a new XFAIL for sys/wait.h is added.

	* conform/data/sys/utsname.h-data (*_t): Allow.
	* conform/data/sys/wait.h-data [POSIX] (uid_t): Do not define.
	[POSIX] (WEXITED): Do not expect constant.
	[POSIX] (WSTOPPED): Likewise.
	[POSIX] (WNOHANG): Likewise.
	[POSIX] (WNOWAIT): Likewise.
	[POSIX] (siginfo_t): Do not expect type or elements.
	[POSIX] (pid_t): Do not expect type.
	[POSIX] (signal.h): Do not allow header.
	[POSIX] (sys/resource.h): Likewise.
	[POSIX] (si_*): Do not allow pattern.
	[POSIX] (W*): Likewise.
	[POSIX] (P_*): Likewise.
	[POSIX] (BUS_*): Likewise.
	[POSIX] (CLD_*): Likewise.
	[POSIX] (FPE_*): Likewise.
	[POSIX] (ILL_*): Likewise.
	[POSIX] (POLL_*): Likewise.
	[POSIX] (SEGV_*): Likewise.
	[POSIX] (SI_*): Likewise.
	[POSIX] (TRAP_*): Likewise.
	* conform/Makefile (test-xfail-POSIX/sys/wait.h/conform): New
	variable.
2014-10-14 17:00:11 +00:00
Siddhesh Poyarekar
fda389c8f0 Fix infinite loop in check_pf (BZ #12926)
The recvmsg could return 0 under some conditions and cause the
make_request function to be stuck in an infinite loop.

Thank you Jim King <jim.king@simplivity.com> for posting Paul's patch
on the list.
2014-10-14 21:05:33 +05:30
Joseph Myers
fcb32af153 Remove CANCEL-FCT-WAIVE and CANCEL-FILE-WAIVE.
As far as I can tell, CANCEL-FCT-WAIVE and CANCEL-FILE-WAIVE are old
notes from the addition of cancellation support to glibc and are not
currently used by any glibc testcases or otherwise in the build
process, and it does not seem useful to me to keep them around.  This
patch removes them.

Tested for x86_64.

	* CANCEL-FCT-WAIVE: Remove file.
	* CANCEL-FILE-WAIVE: Likewise.
2014-10-10 17:05:58 +00:00
Joseph Myers
6bc6bd3b10 Don't use INTVARDEF/INTUSE with __libc_enable_secure (bug 14132).
Continuing the removal of the obsolete INTDEF / INTVARDEF / INTUSE
mechanism, this patch replaces its use for __libc_enable_secure with
the use of rtld_hidden_data_def and rtld_hidden_proto.

Tested for x86_64 that installed stripped shared libraries are
unchanged by the patch.

	[BZ #14132]
	* elf/dl-sysdep.c (__libc_enable_secure): Use rtld_hidden_data_def
	instead of INTVARDEF.
	(_dl_sysdep_start): Do not use INTUSE with __libc_enable_secure.
	* sysdeps/mach/hurd/dl-sysdep.c (__libc_enable_secure): Use
	rtld_hidden_data_def instead of INTVARDEF.
	(_dl_sysdep_start): Do not use INTUSE with __libc_enable_secure.
	* elf/dl-deps.c (expand_dst): Likewise.
	* elf/dl-load.c (_dl_dst_count): Likewise.
	(_dl_dst_substitute): Likewise.
	(decompose_rpath): Likewise.
	(_dl_init_paths): Likewise.
	(open_path): Likewise.
	(_dl_map_object): Likewise.
	* elf/rtld.c (dl_main): Likewise.
	(process_dl_audit): Likewise.
	(process_envvars): Likewise.
	* include/unistd.h [IS_IN_rtld] (__libc_enable_secure_internal):
	Remove declaration.
	(__libc_enable_secure): Use rtld_hidden_proto.
2014-10-10 11:13:11 +00:00
Kostya Serebryany
b8c80a7e0d remove nested functions from elf/dl-load.c 2014-10-09 11:15:24 -07:00
Joseph Myers
5c0508a318 soft-fp: Use parentheses around macro arguments.
This patch cleans up the soft-fp code to use parentheses around macro
arguments (where possible; many macro arguments are identifiers used
with ## rather than arbitrary expressions, so cannot be put in
parentheses).  (I'm not aware of any bugs caused by the lack of
parentheses, but this is generally good practice.  The patch is not
exhaustive regarding internal macros where the arguments always come
directly from the mantissa of a floating-point number, although
probably those should be cleaned up in this regard as well.)

Tested for powerpc-nofpu that the installed shared libraries are
unchanged by this patch.

	* soft-fp/double.h [_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_D): Use
	parentheses around macro arguments.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_RAW_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_RAW_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_DP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (_FP_SQRT_MEAT_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_EQ_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_UNORD_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_TO_INT_D): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_FROM_INT_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_RAW_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_RAW_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_DP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (_FP_SQRT_MEAT_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_EQ_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_UNORD_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_D): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_FROM_INT_D): Likewise.
	* soft-fp/extended.h [_FP_W_TYPE_SIZE < 64] (FP_UNPACK_E):
	Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_EP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_EP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_EP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_EP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (_FP_SQRT_MEAT_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_EQ_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_UNORD_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_TO_INT_E): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_FROM_INT_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_EP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_EP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_EP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_EP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (_FP_SQRT_MEAT_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_EQ_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_UNORD_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_E): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_FROM_INT_E): Likewise.
	* soft-fp/op-1.h (_FP_FRAC_SRST_1): Likewise.
	(_FP_FRAC_SRS_1): Likewise.
	(_FP_FRAC_CLZ_1): Likewise.
	(_FP_MUL_MEAT_1_imm): Likewise.
	(_FP_MUL_MEAT_1_wide): Likewise.
	(_FP_MUL_MEAT_1_hard): Likewise.
	(_FP_SQRT_MEAT_1): Likewise.
	(_FP_FRAC_ASSEMBLE_1): Likewise.
	(_FP_FRAC_DISASSEMBLE_1): Likewise.
	* soft-fp/op-2.h (_FP_FRAC_CLZ_2): Likewise.
	(__FP_CLZ_2): Likewise.
	(_FP_MUL_MEAT_2_wide): Likewise.
	(_FP_MUL_MEAT_2_wide_3mul): Likewise.
	(_FP_MUL_MEAT_2_gmp): Likewise.
	(_FP_MUL_MEAT_2_120_240_double): Likewise.
	(_FP_SQRT_MEAT_2): Likewise.
	(_FP_FRAC_ASSEMBLE_2): Likewise.
	(_FP_FRAC_DISASSEMBLE_2): Likewise.
	* soft-fp/op-4.h (_FP_FRAC_SRS_4): Likewise.
	(_FP_FRAC_CLZ_4): Likewise.
	(_FP_MUL_MEAT_4_wide): Likewise.
	(_FP_MUL_MEAT_4_gmp): Likewise.
	(_FP_SQRT_MEAT_4): Likewise.
	(_FP_FRAC_ASSEMBLE_4): Likewise.
	(_FP_FRAC_DISASSEMBLE_4): Likewise.
	* soft-fp/op-common.h (_FP_CMP): Likewise.
	(_FP_CMP_EQ): Likewise.
	(_FP_CMP_UNORD): Likewise.
	(_FP_TO_INT): Likewise.
	(_FP_FROM_INT): Likewise.
	[!__FP_CLZ] (__FP_CLZ): Likewise.
	(_FP_DIV_HELP_imm): Likewise.
	* soft-fp/quad.h [_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_Q):
	Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_RAW_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_RAW_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_RAW_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_UNPACK_SEMIRAW_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_PACK_SEMIRAW_QP): Likewise.
	[_FP_W_TYPE_SIZE < 64] (_FP_SQRT_MEAT_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_EQ_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_CMP_UNORD_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_TO_INT_Q): Likewise.
	[_FP_W_TYPE_SIZE < 64] (FP_FROM_INT_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_RAW_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_RAW_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_RAW_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_UNPACK_SEMIRAW_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_PACK_SEMIRAW_QP): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (_FP_SQRT_MEAT_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_EQ_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_CMP_UNORD_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_TO_INT_Q): Likewise.
	[_FP_W_TYPE_SIZE >= 64] (FP_FROM_INT_Q): Likewise.
	* soft-fp/single.h (FP_UNPACK_RAW_S): Likewise.
	(FP_UNPACK_RAW_SP): Likewise.
	(FP_PACK_RAW_S): Likewise.
	(FP_PACK_RAW_SP): Likewise.
	(FP_UNPACK_S): Likewise.
	(FP_UNPACK_SP): Likewise.
	(FP_UNPACK_SEMIRAW_S): Likewise.
	(FP_UNPACK_SEMIRAW_SP): Likewise.
	(FP_PACK_S): Likewise.
	(FP_PACK_SP): Likewise.
	(FP_PACK_SEMIRAW_S): Likewise.
	(FP_PACK_SEMIRAW_SP): Likewise.
	(_FP_SQRT_MEAT_S): Likewise.
	(FP_CMP_S): Likewise.
	(FP_CMP_EQ_S): Likewise.
	(FP_CMP_UNORD_S): Likewise.
	(FP_TO_INT_S): Likewise.
	(FP_FROM_INT_S): Likewise.
2014-10-09 17:05:26 +00:00
Joseph Myers
a736ec370a soft-fp: Support rsigned == 2 in _FP_TO_INT.
Continuing the addition of soft-fp features in the Linux kernel
version, this patch adds _FP_TO_INT support for rsigned == 2 (reduce
overflowing results modulo 2^rsize to fit in the destination, used for
alpha emulation).

The kernel version is buggy; it can left shift by a negative amount
when right shifting is required in an overflow case (the kernel
version also has other bugs fixed long ago in glibc; at least,
spurious exceptions converting to the most negative integer).  This
version avoids that by handling overflow (other than to 0) for rsigned
== 2 along with the normal non-overflow case, which already properly
determines the direction in which to shift.

Tested for powerpc-nofpu.  Some functions get slightly bigger and some
get slightly smaller, no doubt as a result of the change to where in
the macro "inexact" is raised, but I don't think those changes are
significant.  Also tested for powerpc-nofpu with the relevant __fix*
functions changed to use rsigned == 2 (which is after all just as
valid as rsigned == 1 in IEEE terms), including verifying the results
and exceptions for various cases of conversions.

With these seven patches, the one remaining feature to add for the
soft-fp code to have all the features of the kernel version is
_FP_TO_INT_ROUND.

	* soft-fp/op-common.h (_FP_TO_INT): Handle rsigned == 2.
2014-10-09 15:00:37 +00:00
Joseph Myers
ff12c11f45 soft-fp: Support more precise "invalid" exceptions.
As previously discussed
<https://sourceware.org/ml/libc-alpha/2013-10/msg00345.html>, it would
be desirable to be able to use the same version of the soft-fp code in
the Linux kernel as well as in glibc and libgcc (instead of an old
version in the kernel that's missing ten years of bug fixes,
performance improvements and new features), and to that end it is
useful to add to glibc's copy features in the kernel's copy, even when
they are not directly useful in glibc.

To that end, this patch adds one of those features: support for more
precise "invalid" exceptions describing the particular kind of invalid
operation.  These are relevant for powerpc emulation, and are also as
described in IEEE 754-2008 as sub-exceptions.

The set of sub-exceptions here is the union of those supported on
powerpc and those from IEEE 754-2008 (the former adds a distinction
between 0/0 and Inf/Inf; the latter adds a distinction between Inf*0
from multiplication and the same from fma).  This includes
sub-exceptions for sqrt, conversions to integer and comparisons that
are not supported in the kernel; I see no obvious reason for these
being missing from the kernel support, given that they are supported
on powerpc so accurate powerpc emulation should generate them.

Tested for powerpc-nofpu that the disassembly of installed shared
libraries is unchanged by this patch.

	* soft-fp/soft-fp.h (FP_EX_INVALID_SNAN): New macro.
	(FP_EX_INVALID_IMZ): Likewise.
	(FP_EX_INVALID_IMZ_FMA): Likewise.
	(FP_EX_INVALID_ISI): Likewise.
	(FP_EX_INVALID_ZDZ): Likewise.
	(FP_EX_INVALID_IDI): Likewise.
	(FP_EX_INVALID_SQRT): Likewise.
	(FP_EX_INVALID_CVI): Likewise.
	(FP_EX_INVALID_VC): Likewise.
	* soft-fp/op-common.h (_FP_UNPACK_CANONICAL): Specify more precise
	"invalid" exceptions.
	(_FP_CHECK_SIGNAN_SEMIRAW): Likewise.
	(_FP_ADD_INTERNAL): Likewise.
	(_FP_MUL): Likewise.
	(_FP_FMA): Likewise.
	(_FP_DIV): Likewise.
	(_FP_CMP_CHECK_NAN): Likewise.
	(_FP_SQRT): Likewise.
	(_FP_TO_INT): Likewise.
	(FP_EXTEND): Likewise.
2014-10-09 14:59:23 +00:00
Allan McRae
b6dcfe8c24 Update French translation 2014-10-09 22:11:30 +10:00
Joseph Myers
cb8312455b Don't use INTDEF/INTUSE with __cxa_atexit (bug 14132).
This patch removes use of the obsolete INTDEF/INTUSE mechanism for
__cxa_atexit, replacing it with libc_hidden_def/libc_hidden_proto.

Tested for x86_64 that installed stripped shared libraries are
unchanged by the patch.

	[BZ #14132]
	* stdlib/cxa_atexit.c (__cxa_atexit): Use libc_hidden_def instead
	of INTDEF.
	* include/stdlib.h (__cxa_atexit_internal): Remove declaration.
	(__cxa_atexit): Use libc_hidden_proto.
	[!NOT_IN_libc] (__cxa_atexit): Remove macro definition.
2014-10-09 11:22:33 +00:00
Joseph Myers
5deeb19014 Remove stray *_internal aliases (bug 14132).
This patch removes some stray (unused) *_internal aliases, and
function prototypes with no corresponding definitions at all, at least
some of which were missed in previous INTDEF / INTUSE removal.

Not removed in this patch: __canonicalize_directory_name_internal,
noticed in the course of preparing this patch, isn't an alias, but an
actual function in sysdeps/mach/hurd/getcwd.c - apparently unused,
however.

Tested for x86_64 that installed stripped shared libraries are
unchanged by this patch.

	[BZ #14132]
	* include/wctype.h [!_ISOMAC] (__iswalpha_l_internal): Remove
	declaration.
	[!_ISOMAC] (__iswdigit_l_internal): Likewise.
	[!_ISOMAC] (__iswspace_l_internal): Likewise.
	[!_ISOMAC] (__iswxdigit_l_internal): Likewise.
	[!_ISOMAC] (__iswctype_internal): Likewise.
	* stdio-common/siglist.c (_sys_siglist_internal): Remove alias.
	* sysdeps/unix/syscalls.list (chown): Remove __chown_internal
	alias.
	(fcntl): Remove __fcntl_internal alias.
	* sysdeps/unix/sysv/linux/hppa/syscalls.list (connect): Remove
	__connect_internal alias.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list (connect):
	Likewise.
2014-10-09 01:11:14 +00:00
Joseph Myers
454ac701e3 soft-fp: Add FP_DENORM_ZERO.
Continuing the addition of soft-fp features used in the Linux kernel,
this patch adds soft-fp support for FP_DENORM_ZERO (flushing input
subnormal operands to zero of the same sign).

There are some differences from the kernel version.  In the kernel,
the "inexact" exception is set when flushing to zero.  This does not
appear to match the documented semantics for either of the
architectures (alpha and sh) for which the kernel uses FP_DENORM_ZERO,
so this patch does not set "inexact" in this case.  More operations
now use raw or semi-raw unpacking for optimization than did in the
ten-year-old soft-fp version in the kernel, so checks of
FP_DENORM_ZERO are inserted in those operations.  They are also
inserted for comparisons (which already used raw unpacking in the old
version) as I believe that's the correct thing to do when input
subnormals are flushed to zero.  They are *not* inserted for _FP_NEG.
(If any processors do flush input subnormals to zero for negation, or
otherwise vary from the rules implemented when FP_DENORM_ZERO is set,
further macros for sfp-machine.h to control this may need to be
added.)

Although the addition for comparisons will cause FP_EX_DENORM to be
set in this case, it still won't be set for comparisons involving
subnormals when not flushed to zero.  It's quite possible that
accurate emulation of processors that have such an exception for
subnormal operands will require further changes relating to when
FP_EX_DENORM is set (in general, the support for things defined by
IEEE should be considered more reliable and mature than the support
for things outside the scope of IEEE floating point).

Although some processors also have a mode for abrupt underflow -
producing zeroes instead of output subnormals - there is no such mode
in the kernel's soft-fp, so no such mode is added to glibc's soft-fp
(although it could be if someone wanted to emulate such processor
support).

Tested for powerpc-nofpu that the disassembly of installed shared
libraries is unchanged by this patch.

	* soft-fp/soft-fp.h (FP_DENORM_ZERO): New macro.
	* soft-fp/op-common.h (_FP_UNPACK_CANONICAL): Check
	FP_DENORM_ZERO.
	(_FP_CHECK_FLUSH_ZERO): New macro.
	(_FP_ADD_INTERNAL): Call _FP_CHECK_FLUSH_ZERO.
	(_FP_CMP): Likewise.
	(_FP_CMP_EQ): Likewise.
	(_FP_TO_INT): Do not set inexact for subnormal arguments if
	FP_DENORM_ZERO.
	(FP_EXTEND): Call _FP_CHECK_FLUSH_ZERO.
	(FP_TRUNC): Likewise.
2014-10-09 01:09:22 +00:00
Joseph Myers
0022e688d0 soft-fp: Fix _FP_TO_INT latent bug in overflow handling.
This patch fixes a latent bug in _FP_TO_INT regarding handling of
arguments with maximum exponent (infinities and NaNs).  If the maximum
exponent is below that calculated as an overflow threshold, such
values would incorrectly be treated as normal values for the purposes
of the conversion.  This could not occur for any of the conversions
actually occurring in glibc, libgcc or the Linux kernel (the maximum
exponent for float is, just, big enough to ensure overflow for
unsigned __int128), but would apply if soft-fp were used for IEEE
binary16.  Appropriate checks are inserted to ensure that the maximum
exponent is always treated as an overflowing exponent, and never as a
normal one.

Tested for powerpc-nofpu that the disassembly of installed shared
libraries is unchanged by this patch.

	* soft-fp/op-common.h (_FP_TO_INT): Ensure maximum exponent is
	treated as invalid conversion, not as normal exponent.
2014-10-09 01:07:10 +00:00
Joseph Myers
73e28d9c88 soft-fp: Refactor exception handling for comparisons.
This patch refactors how soft-fp comparisons handle setting exceptions
for NaN operands, so that exceptions are set through the FP_CMP macros
rather than directly in the C files calling them.

The _FP_CMP* and FP_CMP* macros gain an extra argument to specify when
exceptions should be set, 0 for no exception setting (I'm not sure
this is actually needed - at least it's not needed for IEEE operations
in glibc / libgcc, but might be relevant in some cases for kernel
use), 1 for exceptions only for signaling NaNs and 2 for exceptions
for all NaNs.  This argument is handled through _FP_CMP_CHECK_NAN,
newly called by the _FP_CMP* macros when a NaN is encountered.  Calls
to these macros are updated, which eliminates all the existing
checking and exception setting in soft-fp *.c files in glibc.

Tested for powerpc-nofpu.  (The __unord* functions have no code
changes; the __eq* / __ge* / __le* functions get slightly larger, but
I don't think that's significant.)

	* soft-fp/op-common.h (_FP_CMP_CHECK_NAN): New macro.
	(_FP_CMP): Add extra argument EX.  Call _FP_CMP_CHECK_NAN.
	(_FP_CMP_EQ): Likewise.
	(_FP_CMP_UNORD): Likewise.
	* soft-fp/double.h (FP_CMP_D): Add extra argument EX.
	(FP_CMP_EQ_D): Likewise.
	(FP_CMP_UNORD_D): Likewise.
	* soft-fp/extended.h (FP_CMP_E): Likewise.
	(FP_CMP_EQ_E): Likewise.
	(FP_CMP_UNORD_E): Likewise.
	* soft-fp/quad.h (FP_CMP_Q): Likewise.
	(FP_CMP_EQ_Q): Likewise.
	(FP_CMP_UNORD_Q): Likewise.
	* soft-fp/single.h (FP_CMP_S): Likewise.
	(FP_CMP_EQ_S): Likewise.
	(FP_CMP_UNORD_S): Likewise.
	* soft-fp/eqdf2.c (__eqdf2): Update call to FP_CMP_EQ_D.
	* soft-fp/eqsf2.c (__eqsf2): Update call to FP_CMP_EQ_S.
	* soft-fp/eqtf2.c (__eqtf2): Update call to FP_CMP_EQ_Q.
	* soft-fp/gedf2.c (__gedf2): Update call to FP_CMP_D.
	* soft-fp/gesf2.c (__gesf2): Update call to FP_CMP_S.
	* soft-fp/getf2.c (__getf2): Update call to FP_CMP_Q.
	* soft-fp/ledf2.c (__ledf2): Update call to FP_CMP_D.
	* soft-fp/lesf2.c (__lesf2): Update call to FP_CMP_S.
	* soft-fp/letf2.c (__letf2): Update call to FP_CMP_Q.
	* soft-fp/unorddf2.c (__unorddf2): Update call to FP_CMP_UNORD_D.
	* soft-fp/unordsf2.c (__unordsf2): Update call to FP_CMP_UNORD_S.
	* soft-fp/unordtf2.c (__unordtf2): Update call to FP_CMP_UNORD_Q.
	* sysdeps/alpha/soft-fp/ots_cmpe.c (internal_compare): Update call
	to FP_CMP_Q.
	* sysdeps/sparc/sparc32/soft-fp/q_cmp.c (_Q_cmp): Update call to
	FP_CMP_Q.
	* sysdeps/sparc/sparc32/soft-fp/q_cmpe.c (_Q_cmpe): Likewise.
	* sysdeps/sparc/sparc32/soft-fp/q_feq.c (_Q_feq): Update call to
	FP_CMP_EQ_Q.
	* sysdeps/sparc/sparc32/soft-fp/q_fge.c (_Q_fge): Update call to
	FP_CMP_Q.
	* sysdeps/sparc/sparc32/soft-fp/q_fgt.c (_Q_fgt): Likewise.
	* sysdeps/sparc/sparc32/soft-fp/q_fle.c (_Q_fle): Likewise.
	* sysdeps/sparc/sparc32/soft-fp/q_flt.c (_Q_flt): Likewise.
	* sysdeps/sparc/sparc32/soft-fp/q_fne.c (_Q_fne): Update call to
	FP_CMP_EQ_Q.
	* sysdeps/sparc/sparc64/soft-fp/qp_cmp.c (_Qp_cmp): Update call to
	FP_CMP_Q.
	* sysdeps/sparc/sparc64/soft-fp/qp_cmpe.c (_Qp_cmpe): Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_feq.c (_Qp_feq): Update call to
	FP_CMP_EQ_Q.
	* sysdeps/sparc/sparc64/soft-fp/qp_fge.c (_Qp_fge): Update call to
	FP_CMP_Q.
	* sysdeps/sparc/sparc64/soft-fp/qp_fgt.c (_Qp_fgt): Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fle.c (_Qp_fle): Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_flt.c (_Qp_flt): Likewise.
	* sysdeps/sparc/sparc64/soft-fp/qp_fne.c (_Qp_fne): Update call to
	FP_CMP_EQ_Q.
2014-10-09 01:03:56 +00:00
Joseph Myers
43059f42db soft-fp: Make extensions of subnormals from XFmode to TFmode signal underflow if traps enabled.
This patch fixes a soft-fp corner case I previously noted in
<https://sourceware.org/ml/libc-alpha/2013-10/msg00349.html>: when
trapping on underflow is enabled, extensions of subnormals from XFmode
to TFmode need to signal underflow because the result is tiny (but
exact, so the underflow flag is not raised unless trapping is
enabled).

To avoid any excess initialization or tests for other cases of
floating-point extensions, a new FP_INIT_TRAPPING_EXCEPTIONS is added
that does the initialization required for this particular case (more
than FP_INIT_EXCEPTIONS, less than FP_INIT_ROUNDMODE, in general), and
FP_NO_EXACT_UNDERFLOW is added to stub out FP_TRAPPING_EXCEPTIONS
tests for those cases of extensions where the test would be dead code,
to avoid any uninitialized variable warnings.

As the relevant case only applies in libgcc, not to any use of soft-fp
in glibc, there is no bug report in Bugzilla and no non-default
definitions of FP_INIT_TRAPPING_EXCEPTIONS are added by the patch.  A
testcase will be added to GCC as part of an update of soft-fp in
libgcc once this patch is in libc.

Tested for powerpc-nofpu that the disassembly of installed shared
libraries is unchanged by this patch.  Bootstrapped GCC with updated
soft-fp with no regressions on x86_64-unknown-linux-gnu and verified
that a test of the relevant case passes where it failed before.

	* soft-fp/op-common.h (FP_EXTEND): When a subnormal input produces
	a subnormal result, set the underflow exception if trapping on
	underflow is enabled.
	* soft-fp/soft-fp.h (FP_INIT_TRAPPING_EXCEPTIONS): New macro.
	(FP_INIT_EXCEPTIONS): Default to FP_INIT_TRAPPING_EXCEPTIONS.
	[FP_NO_EXACT_UNDERFLOW] (FP_TRAPPING_EXCEPTIONS): Undefine and
	redefine to 0.
	* soft-fp/extenddftf2.c (FP_NO_EXACT_UNDERFLOW): Define.
	* soft-fp/extendsfdf2.c (FP_NO_EXACT_UNDERFLOW): Likewise.
	* soft-fp/extendsftf2.c (FP_NO_EXACT_UNDERFLOW): Likewise.
	* soft-fp/extendxftf2.c (__extendxftf2): Use
	FP_INIT_TRAPPING_EXCEPTIONS instead of FP_INIT_ROUNDMODE.
2014-10-09 01:00:41 +00:00
Joseph Myers
2d6a47ba4c soft-fp: Remove FP_CLEAR_EXCEPTIONS.
As noted in
<https://sourceware.org/ml/libc-alpha/2013-10/msg00516.html>, the
soft-fp macro FP_CLEAR_EXCEPTIONS should not be necessary, as soft-fp
code should never set an exception and later clear it.

In fact, all four uses in glibc (for SPARC) are indeed unnecessary:
they appear in files that convert 32-bit or 64-bit integers to IEEE
binary128, an operation that can never raise any exceptions.  If this
was intended to enable the compiler to optimize away any FP_FROM_INT
code testing for exceptional cases, we now have a better way of doing
this: defining FP_NO_EXCEPTIONS before including soft-fp.h causes all
code handling exceptions to be stubbed out, and the rounding mode to
be hardwired for round-to-zero, to allow such optimizations for source
files where (a) the operation in question, for the particular types in
question, can never raise exceptions, but (b) some instances of the
operation for other types can, so the macros used in the file do
contain references to rounding or exceptions, albeit dead in that
particular file.

The uses in the Linux kernel are also unnecessary (clearing exceptions
at a point where they are already cleared).

This patch duly removes FP_CLEAR_EXCEPTIONS, making the SPARC code in
question use FP_NO_EXCEPTIONS and stop using exception-related macros.

	* soft-fp/soft-fp.h (FP_CLEAR_EXCEPTIONS): Remove macro.
	* sysdeps/sparc/sparc32/soft-fp/q_itoq.c: Define FP_NO_EXCEPTIONS.
	(_Q_itoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or
	FP_HANDLE_EXCEPTIONS.
	* sysdeps/sparc/sparc32/soft-fp/q_lltoq.c: Define FP_NO_EXCEPTIONS.
	(_Q_lltoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or
	FP_HANDLE_EXCEPTIONS.
	* sysdeps/sparc/sparc32/soft-fp/q_ulltoq.c: Define FP_NO_EXCEPTIONS.
	(_Q_ulltoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or
	FP_HANDLE_EXCEPTIONS.
	* sysdeps/sparc/sparc32/soft-fp/q_utoq.c: Define FP_NO_EXCEPTIONS.
	(_Q_utoq): Do not use FP_DECL_EX, FP_CLEAR_EXCEPTIONS or
	FP_HANDLE_EXCEPTIONS.
2014-10-09 00:58:42 +00:00
Joseph Myers
620f462e88 Don't use INTUSE with __adjtimex (bug 14132).
Bug 14132 is removal of the old INTDEF/INTUSE system of *_internal
aliases as obsoleted by the hidden_proto / hidden_def system.  Various
cases were cleaned up in 2012, but some remain.  This patch removes
the use of this mechanism for __adjtimex.

Tested for x86_64 that stripped installed shared libraries are
unchanged by the patch.

	[BZ #14132]
	* sysdeps/unix/sysv/linux/include/sys/timex.h: New file.
	* sysdeps/unix/sysv/linux/adjtime.c [!ADJTIMEX] (ADJTIMEX): Do not
	use INTUSE.
	[!ADJTIMEX] (INTUSE(__adjtimex)): Remove declaration.
	* sysdeps/unix/sysv/linux/alpha/adjtime.c (__adjtimex_internal):
	Remove alias.
	(__adjtimex): Define using libc_hidden_ver.
	* sysdeps/unix/sysv/linux/ntp_gettime.c (INTUSE(__adjtimex)):
	Remove declaration.
	(ntp_gettime): Call __adjtimex directly.
	* sysdeps/unix/sysv/linux/ntp_gettimex.c (INTUSE(__adjtimex)):
	Remove declaration.
	(ntp_gettimex): Call __adjtimex directly.
	* sysdeps/unix/sysv/linux/syscalls.list (adjtimex): Remove
	__adjtimex_internal alias.
2014-10-08 23:19:32 +00:00
Roland McGrath
c763c5d271 BZ#17460: Fix buffer overrun in nscd --help. 2014-10-08 15:36:12 -07:00
Roland McGrath
7b8fb2b8db Remove unnecessarily nested function in do_lookup_unique. 2014-10-08 15:18:02 -07:00
Joseph Myers
f7b425175c Support and use mixed compat/non-compat aliases in syscalls.list.
This patch enables syscalls.list entries to specify both compat and
non-compat symbol versions for the same syscall definition, making use
of this for setrlimit / chown / lchown where the inability to specify
such aliases showed up in the course of work on bug 14138.

The change to make-syscalls.sh is minimal: adding a SHARED conditional
on the compat_symbol calls.  It remains the case that if a compat
symbol version is specified, the syscall is only built for the shared
library at all if an explicit symbol version is given for a non-compat
symbol (so it's necessary to specify "lchown@@GLIBC_2.0
chown@GLIBC_2.0" rather than just "lchown chown@GLIBC_2.0").  It also
remains the case, as already commented in make-syscalls.sh, that no
SHLIB_COMPAT conditionals are generated, so there would be problems if
the same syscalls.list file, with compat symbols, were used for both
configurations that should have those symbols and configurations for
which they should be conditioned out with SHLIB_COMPAT.

Tested for x86.

	* sysdeps/unix/make-syscalls.sh (emit_weak_aliases): Condition
	compat_symbol calls on [SHARED].
	* sysdeps/unix/sysv/linux/powerpc/lchown.S: Remove file.
	* sysdeps/unix/sysv/linux/i386/syscalls.list (oldsetrlimit):
	Remove.
	(setrlimit): Add setrlimit@GLIBC_2.0 alias.
	* sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list
	(oldsetrlimit): Remove.
	(setrlimit): Add setrlimit@GLIBC_2.0 alias.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list
	(lchown): New syscall entry.
	(oldsetrlimit): Remove.
	(setrlimit): Add setrlimit@GLIBC_2.0 alias.
	* sysdeps/unix/sysv/linux/s390/s390-32/syscalls.list
	(oldsetrlimit): Remove.
	(setrlimit): Add setrlimit@GLIBC_2.0 alias.
2014-10-06 22:58:59 +00:00
Joseph Myers
abb280f799 Move some chown / lchown / fchown definitions to syscalls.list (bug 14138).
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.

In the case of powerpc, chown.c (providing the chown@@GLIBC_2.1
default version) is replaced by a syscalls.list entry (for powerpc32;
powerpc64 has no need for this because of its more recent minimum
symbol version, so can just use the entry in
sysdeps/unix/syscalls.list), but lchown.S is left as-is because it
provides the compat version of chown as an actual alias for __lchown,
which is not yet supported by syscalls.list.  This file can be removed
once such aliases are supported in syscalls.list.

	[BZ #14138]
	* sysdeps/unix/sysv/linux/arm/fchown.c: Remove file.
	* sysdeps/unix/sysv/linux/arm/lchown.c: Likewise.
	* sysdeps/unix/sysv/linux/m68k/fchown.c: Likewise.
	* sysdeps/unix/sysv/linux/m68k/lchown.c: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/chown.c: Likewise.
	* sysdeps/unix/sysv/linux/arm/syscalls.list (lchown): Add syscall.
	(fchown): Likewise.
	* sysdeps/unix/sysv/linux/m68k/syscalls.list (lchown): Likewise.
	(fchown): Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list (chown):
	Likewise.
2014-10-06 22:30:54 +00:00
Adhemerval Zanella
47d4623785 powerpc: remove linux lowlevellock.h
This patch remove the powerpc specific lowlevellock.h and adjust some
implementation that rely on __lll_[rel/acq]_instr defines.
2014-10-06 16:08:32 -05:00
Chris Metcalf
845a73434c tile: add clock_gettime support via vDSO 2014-10-06 11:22:14 -04:00
Chris Metcalf
83d641efd1 tile: make the prolog of clone() more conformant
With this change we properly set up the frame first, and tear
it down last, doing argument checking only when the frame is set up.
2014-10-06 11:21:29 -04:00
Chris Metcalf
d9cd52e64d tile: optimize memcmp
Customize memcmp.c for tile, using similar tricks from memcpy:

- replace MERGE macro with dblalign.
- replace memcmp_bytes function with revbytes.
- use __glibc_likely.
- use post-increment addressing.

The schedule is still not perfect: the compiler is not hoisting
code above the comparison branch, which could save a bundle or two.
memcmp speeds up by 30-40% on shorter aligned tests in benchtest,
with some tests with unaligned lengths taking a small performance hit.
2014-10-06 11:20:59 -04:00
Chris Metcalf
4b68ea1162 tile: add support for _SC_LEVEL*CACHE* sysconf() queries 2014-10-06 11:20:30 -04:00
Chris Metcalf
c86f7b80f4 tilegx: provide optimized strnlen, strstr, and strcasestr
strnlen() is based on the existing tile strlen() with length
checking added.  It speeds up by up to 5x, but on average across
the benchtest corpus by around 35%.  No regressions are seen.

strstr() does 8-byte aligned loads and compares using a 2-byte
filter on the first two bytes of the needle and then testing
the remaining bytes in needle using memcmp().  It speeds up
about 5x in the best case (for "found" needles), about 2x looking
at benchtest as a whole, with some slowdowns as much as 45%.
on a few cases (including the "fail" case for 128KB search).

strcasestr() is based on strstr() but uses a SIMD tolower
routine to convert 8-bytes to lower case in 5 instructions.
It also uses a 2-byte filter and then strncasecmp() for the
remaining bytes.  strncasecmp() is not optimized for SIMD, so
there is futher room for improvement.  However, it is still up
to 16x faster for "found" needles, averaging 2x faster on the
whole corpus of benchtests.  It does slow down by up to 35%
on a few cases, similarly to strstr().
2014-10-06 11:19:18 -04:00
Chris Metcalf
1c4c1a6f4d tilegx: optimize string copy_byte() internal function
We can use one "shufflebytes" instruction instead of 3 "bfins"
instructions to optimize the string functions.
2014-10-06 11:18:41 -04:00
Arjun Shankar
99d86ea324 Write errors to stdout and not stderr in nptl/tst-setuid3.c
nptl/tst-setuid3.c was using the `err' and `errx' functions to write
error messages. This wrote to stderr instead of the preferred stdout.
2014-10-06 10:23:17 +05:30
Kostya Serebryany
06210a44e9 remove nested functions from elf/dl-deps.c 2014-10-01 14:34:45 -07:00