Commit Graph

27296 Commits

Author SHA1 Message Date
Yufeng Zhang
ea6c92f3be [AArch64] Use GCC builtins to count leading/tailing zeros. 2014-04-22 17:26:59 +01:00
Siddhesh Poyarekar
766c4a363d Include atomic.h in sem_wait.c and sem_trywait.c 2014-04-22 16:57:49 +05:30
Venkataramanan Kumar
140cc7abf7 aarch64: Add setjmp and longjmp SystemTap probes
Add setjmp, longjmp and longjmp_target SystemTap probes.

ChangeLog:

2014-04-22  Will Newton  <will.newton@linaro.org>
	    Venkataramanan Kumar  <venkataramanan.kumar@linaro.org>

	* sysdeps/aarch64/__longjmp.S: Include stap-probe.h.
	(__longjmp): Add longjmp and longjmp_target SystemTap
	probes.
	* sysdeps/aarch64/setjmp.S: Include stap-probe.h.
	(__sigsetjmp): Add setjmp SystemTap probe.
2014-04-22 11:13:16 +01:00
Carlos O'Donell
c54e5cf7db manual: Sort overview listing by manual order.
In the glibc manual we have a "Roadmap to the manual" section at
the end of the "Introduction" chapter.

The introductory text says "Here is an overview of the contents
of the remaining chapters of this manual.", but then proceeds to
list chapters out of order and some chapter are never referenced.

This commit reorders the overview to correctly match the manual
order.

See:
https://sourceware.org/ml/libc-alpha/2014-02/msg00823.html
2014-04-17 19:41:09 -04:00
Adhemerval Zanella
75ffb047f6 PowerPC: Sync pthread_once with default implementation
This patch removes the arch specific powerpc implementation and instead
uses the linux default one.  Although the current powerpc implementation
already constains the required memory barriers for correct
initialization, the default implementation shows a better performance on
newer chips.
2014-04-17 14:42:57 -05:00
Adhemerval Zanella
2cd925f743 PowerPC: Add fenv macros for long double
This patch add the missing libc_<function>l_ctx macros for long
double.  Similar for float, they point to default double versions.
2014-04-17 14:01:51 -05:00
Ian Bolton
39e6cd8d64 Add fenv test support for AArch64. 2014-04-17 16:58:35 +01:00
Sihai Yao
f9281df995 Detect if AVX2 is usable
This patch checks and sets bit_AVX2_Usable in __cpu_features.feature.

	* sysdeps/x86_64/multiarch/ifunc-defines.sym (COMMON_CPUID_INDEX_7):
	New.
	* sysdeps/x86_64/multiarch/init-arch.c (__init_cpu_features):
	Check and set bit_AVX2_Usable.
	* sysdeps/x86_64/multiarch/init-arch.h (bit_AVX2_Usable): New
	macro.
	(bit_AVX2): Likewise.
	(index_AVX2_Usable): Likewise.
	(CPUID_AVX2): Likewise.
	(HAS_AVX2): Likewise.
2014-04-17 08:00:21 -07:00
Will Newton
7c6776620d manual/setjmp.texi: Clarify setcontext and signal handlers text
Calling setcontext from a signal handler can be done safely so
it is sufficient to note that it is not recommended.

Also mention in setcontext documentation that the behaviour of
setcontext when restoring a context created by a call to a signal
handler is unspecified.

2014-04-17  Will Newton  <will.newton@linaro.org>

	* manual/setjmp.texi (System V contexts): Add note that
	calling setcontext on a context created by a call to a
	signal handler is undefined.  Update text to note that
	setcontext from a signal handler is possible but not
	recommended.
2014-04-17 11:40:36 +01:00
Will Newton
e04a4e9d2e stdlib/tst-setcontext.c: Check for clobbering of signal stack
On aarch64 calling swapcontext clobbers the state of the signal
stack (BZ #16629). Check that the address and size of the signal
stack before and after the call to swapcontext remains the same.

ChangeLog:

2014-04-17  Will Newton  <will.newton@linaro.org>

	[BZ #16629]
	* stdlib/tst-setcontext.c: Include signal.h.
	(main): Check that the signal stack before and
	after swapcontext is the same.
2014-04-17 11:39:50 +01:00
Will Newton
37d3500738 aarch64: Re-implement setcontext without rt_sigreturn syscall
The current implementation of setcontext uses rt_sigreturn to restore
the contents of registers. This contrasts with the way most other
architectures implement setcontext:

  powerpc64, mips, tile:

  Call rt_sigreturn if context was created by a call to a signal handler,
  otherwise restore in user code.

  powerpc32:

  Call swapcontext system call and don't call sigreturn or rt_sigreturn.

  x86_64, sparc, hppa, sh, ia64, m68k, s390, arm:

  Only support restoring "synchronous" contexts, that is contexts
  created by getcontext, and restoring in user code and don't call
  sigreturn or rt_sigreturn.

  alpha:

  Call sigreturn (but not rt_sigreturn) in all cases to do the restore.

The text of the setcontext manpage suggests that the requirement to be
able to restore a signal handler created context has been dropped from
SUSv2:

  If  the context was obtained by a call to a signal handler, then old
  standard text says that "program execution continues with the program
  instruction following the instruction interrupted by the signal".
  However, this sentence was removed in SUSv2, and the present verdict
  is "the result is unspecified".

Implementing setcontext by calling rt_sigreturn unconditionally causes
problems when used with sigaltstack as in BZ #16629. On this basis it
seems that aarch64 is broken and that new ports should only support
restoring contexts created with getcontext and do not need to call
rt_sigreturn at all.

This patch re-implements the aarch64 setcontext function to restore
the context in user code in a similar manner to x86_64 and other ports.

ChangeLog:

2014-04-17  Will Newton  <will.newton@linaro.org>

	[BZ #16629]
	* sysdeps/unix/sysv/linux/aarch64/setcontext.S (__setcontext):
	Re-implement to restore registers in user code and avoid
	rt_sigreturn system call.
2014-04-17 11:38:50 +01:00
Wilco
423a7160af Add fenv test support for targets which don't have FP traps. 2014-04-17 09:39:27 +01:00
Ian Bolton
bc93ab2946 [AArch64] Define HAVE_RM_CTX and related hooks. 2014-04-17 08:30:07 +01:00
Ian Bolton
7e0b6763e9 [AArch64] Provide initial implementation of math_private.h. 2014-04-17 08:28:41 +01:00
Richard Henderson
ddb04724ed alpha: Remove alpha-linux pthread_once.c 2014-04-16 21:36:33 -07:00
Richard Henderson
d77c0899db alpha: Enable unwind tables for backtrace.c 2014-04-16 21:35:29 -07:00
Richard Henderson
a3df56fcae alpha: Fix __pointer_chk_guard definition for the testsuite 2014-04-16 21:35:27 -07:00
Richard Henderson
95fc5fa3db alpha: Regenerate sysdeps/alpha/libm-test-ulps 2014-04-16 21:35:24 -07:00
Marcus Shawcroft
a9ea2e0cbe [AArch64] Regenerate libm-test-ulps. 2014-04-16 23:08:51 +01:00
Igor Zamyatin
ea8ba7cd14 Save/restore bound registers for _dl_runtime_profile
This patch saves and restores bound registers in x86-64 PLT for
ld.so profile and LD_AUDIT:

	* sysdeps/x86_64/bits/link.h (La_x86_64_regs): Add lr_bnd.
	(La_x86_64_retval): Add lrv_bnd0 and lrv_bnd1.
	* sysdeps/x86_64/dl-trampoline.S (_dl_runtime_profile): Save
	Intel MPX bound registers before _dl_profile_fixup.
	* sysdeps/x86_64/dl-trampoline.h: Restore Intel MPX bound
	registers after _dl_profile_fixup.  Save and restore bound
	registers bnd0/bnd1 when calling _dl_call_pltexit.
	* sysdeps/x86_64/link-defines.sym (BND_SIZE): New.
	(LR_BND_OFFSET): Likewise.
	(LRV_BND0_OFFSET): Likewise.
	(LRV_BND1_OFFSET): Likewise.
2014-04-16 14:46:49 -07:00
Samuel Thibault
3c799e9131 hurd: Add i386 fields to TLS structure
* sysdeps/mach/hurd/i386/tls.h (tcbhead_t): Add multiple_threads,
	sysinfo, stack_guard, pointer_guard, gscope_flag, private_futex,
	__private_tm, __private_ss fields.
2014-04-16 23:45:36 +02:00
Samuel Thibault
9f2a4fbc3c hurd: Move dtv, dtv_t, tcbhead_t declaration to per-arch file. 2014-04-16 23:43:28 +02:00
Samuel Thibault
fd15a59b20 hurd: Do not allow unmapping address 0
* sysdeps/mach/munmap.c (__munmap): Return EINVAL if `addr' is 0.
2014-04-16 23:16:15 +02:00
Stefan Liebler
f19dfa0afd S/390: Regenerate ULPs 2014-04-16 13:04:34 +02:00
Stefan Liebler
4fa8bc3b35 [BZ #14770] S/390: Require Binutils >= 2.24 for target S/390. 2014-04-16 13:04:33 +02:00
Stefan Liebler
8ea587db2b [BZ #16824] Fix failing y1 due to too large ulps in downward/upward rounding mode. 2014-04-16 13:03:46 +02:00
Alan Modra
9860b04502 Update fixed bug list 2014-04-16 19:47:02 +09:30
Alan Modra
aa5f0ff11a Correct IBM long double frexpl.
Besides fixing the bugzilla, this also fixes corner-cases where the high
and low double differ greatly in magnitude, and handles a denormal
input without resorting to a fp rescale.

	[BZ #16740]
	[BZ #16619]
	* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c (__frexpl): Rewrite.
	* math/libm-test.inc (frexp_test_data): Add tests.
2014-04-16 19:33:32 +09:30
Siddhesh Poyarekar
bb9c256fb0 benchtests: Link against objects in build directory
Using -lm and -lpthread results in the shared objects in the system
being used to link against.  This happened to work for libm because
there haven't been any changes to the libm ABI recently that could
break the existing benchmarks.  This doesn't always work for the
pthread benchmarks.  The correct way to build against libraries in the
build directory is to have the binaries explicitly depend on them so
that $(+link) can pick them up.
2014-04-15 14:33:06 +05:30
Carlos O'Donell
f737dfd071 Support _r_debug for static binaries.
We initialize _r_debug for static binaries to allows debug
agents to treat static binaries a little more like dyanmic
ones. This simplifies the work a debug agent has to do to
access TLS in a static binary via libthread_db.

Tested on x86_64.

See:
https://sourceware.org/ml/libc-alpha/2014-04/msg00183.html

	[BZ #16831]
	* csu/libc-start.c (LIBC_START_MAIN) [!SHARED]: Call
	_dl_debug_initialize.
2014-04-14 15:45:40 -04:00
Carlos O'Donell
0699f766b1 nscd: Make SELinux checks dynamic.
The SELinux team has indicated to me that glibc's SELinux checks
in nscd are not being carried out as they would expect the API
to be used today. They would like to move away from static header
defines for class and permissions and instead use dynamic checks
at runtime that provide an answer which is dependent on the runtime
status of SELinux i.e. more dynamic.

The following patch is a minimal change that moves us forward in
this direction.

It does the following:

* Stop checking for SELinux headers that define NSCD__SHMEMHOST.
  Check only for the presence or absence of the library.

* Don't encode the specific SELinux permission constants into a
  table at build time, and instead use the symbolic name for the
  permission as expected.

* Lookup the "What do we do if we don't know this permission?"
  policy and use that if we find SELinux's policy is older than
  the glibc policy e.g. we make a request for a permission that
  SELinux doesn't know about.

* Lastly, translate the class and permission and then make
  the permission check. This is done every time we lookup
  a permission, and this is the expected way to use the API.
  SELinux will optimize this for us, and we expect the network
  latencies to hide these extra library calls.

Tested on x86, x86-64, and via Fedora Rawhide since November 2013.

See:
https://sourceware.org/ml/libc-alpha/2014-04/msg00179.html
2014-04-14 04:10:39 -04:00
David S. Miller
809bd45fa9 Regenerate sparc ULPs.
* sysdeps/sparc/fpu/libm-test-ulps: Update.
2014-04-13 18:27:19 -07:00
Allan McRae
89e691f2ae Fix qsort argument order in collation example 2014-04-12 14:26:29 +10:00
Paul Pluzhnikov
fe8d072cb7 Fix typo on ChangeLog. 2014-04-11 12:16:38 -07:00
Chris Metcalf
9c9daaeb83 math: make test-fenv-preserve.c a no-op if FE_ALL_EXCEPT == 0.
This fixes a testsuite failure for tile (and possibly microblaze).
2014-04-11 15:13:42 -04:00
Paul Pluzhnikov
95561fb9c5 2014-04-11 Paul Pluzhnikov <ppluzhnikov@google.com>
* elf/Makefile (tests): make tst-dlopen-aout conditional on
	enable-hardcoded-path-in-tests
2014-04-11 11:25:53 -07:00
Will Newton
970c602aa6 benchtests: Improve readability of JSON output
Add a small library to print JSON values and use it to improve the
readability of the benchmark output and the readability of the
benchmark code.

ChangeLog:

2014-04-11  Will Newton  <will.newton@linaro.org>

	* benchtests/Makefile (extra-objs): Add json-lib.o.
	(bench-func): Tidy up JSON output.
	* benchtests/bench-skeleton.c: Include json-lib.h.
	(main): Use JSON library functions to do output of
	benchmark results.
	* benchtests/bench-timing-type.c (main): Output the
	timing type simply, leaving formatting to the user.
	* benchtests/json-lib.c: New file.
	* benchtests/json-lib.h: Likewise.
2014-04-11 16:05:03 +01:00
Torvald Riegel
36875b06e0 Fixed and unified pthread_once.
[BZ #15215] This unifies various pthread_once architecture-specific
implementations which were using the same algorithm with slightly different
implementations.  It also adds missing memory barriers that are required for
correctness.
2014-04-11 15:54:19 +02:00
Stefan Liebler
579db35a06 S/390: Unify 31 and 64 bit configure.ac 2014-04-11 13:14:35 +02:00
Andreas Krebbel
ee4ec1d7f9 NEWS: Add comment about changed ABI on s390 and s390x. 2014-04-11 13:08:10 +02:00
Joseph Anthony Pasquale Holsten
c12e9f3741 Fix typo in comment in res_query.c 2014-04-11 15:19:49 +05:30
Will Newton
439bda3209 malloc: Fix MALLOC_DEBUG -Wundef warning
MALLOC_DEBUG is set optionally on the command line. Default the value
to zero if it is not set on the command line, and test its value
with #if rather than #ifdef. Verified the code is identical before
and after this change apart from line numbers.

ChangeLog:

2014-04-11  Will Newton  <will.newton@linaro.org>

	* malloc/malloc.c [!MALLOC_DEBUG]: #define MALLOC_DEBUG
	to zero if it is not defined elsewhere.  (mtrim): Test
	the value of MALLOC_DEBUG with #if rather than #ifdef.
2014-04-11 09:54:18 +01:00
Torvald Riegel
6a5d6ea128 benchtests: Add pthread_once common-case test.
We have a single thread that runs a no-op initialization once and then
repeatedly runs checks of the initialization (i.e., an acquire load and
conditional jump) in a tight loop.  This gives us, on average, the
best-case latency of pthread_once (the initialization is the
exactly-once slow path, and we're not looking at initialization-related
synchronization overheads in this case).
2014-04-10 21:22:28 +02:00
Igor Zamyatin
a4c75cfd56 Save/restore bound registers in _dl_runtime_resolve
This patch saves and restores bound registers in symbol lookup for x86-64:

1. Branches without BND prefix clear bound registers.
2. x86-64 pass bounds in bound registers as specified in MPX psABI
extension on hjl/mpx/master branch at

https://github.com/hjl-tools/x86-64-psABI
https://groups.google.com/forum/#!topic/x86-64-abi/KFsB0XTgWYc

Binutils has been updated to create an alternate PLT to add BND prefix
when branching to ld.so.

	* config.h.in (HAVE_MPX_SUPPORT): New #undef.
	* sysdeps/x86_64/configure.ac: Set HAVE_MPX_SUPPORT.
	* sysdeps/x86_64/configure: Regenerated.
	* sysdeps/x86_64/dl-trampoline.S (REGISTER_SAVE_AREA): New
	macro.
	(REGISTER_SAVE_RAX): Likewise.
	(REGISTER_SAVE_RCX): Likewise.
	(REGISTER_SAVE_RDX): Likewise.
	(REGISTER_SAVE_RSI): Likewise.
	(REGISTER_SAVE_RDI): Likewise.
	(REGISTER_SAVE_R8): Likewise.
	(REGISTER_SAVE_R9): Likewise.
	(REGISTER_SAVE_BND0): Likewise.
	(REGISTER_SAVE_BND1): Likewise.
	(REGISTER_SAVE_BND2): Likewise.
	(_dl_runtime_resolve): Use them.  Save and restore Intel MPX
	bound registers when calling _dl_fixup.
2014-04-09 15:38:09 -07:00
Adhemerval Zanella
27822ce67f Define _STRING_ARCH_unaligned unconditionally
This patch defines _STRING_ARCH_unaligned to 0 on default bits/string.h
header to avoid undefined compiler warnings on platforms that do not
define it.  It also make adjustments in code where tests checked if macro
existed or not.
2014-04-09 15:05:36 -05:00
Peter TB Brett
a88ddc902b Use statvfs64() for pathconf(_PC_NAME_MAX).
pathconf(_PC_NAME_MAX) was implemented on top of statfs().  The 32bit
version therefore fails EOVERFLOW if the filesystem blockcount is
sufficiently large.

Most pathconf() queries use statvfs64(), which avoids this issue.  This
patch modifies pathconf(_PC_NAME_MAX) to do likewise.
2014-04-09 20:09:56 +02:00
Adhemerval Zanella
01f8eac224 Move __PTHREAD_SPINS definition to architecture specific header
This patch moves the __PTHREAD_SPINS definition to arch specific header
since pthread_mutex_t layout is also arch specific.  This leads to no
need to defining __PTHREAD_MUTEX_HAVE_ELISION and thus removing of the
undefined compiler warning.
2014-04-09 06:41:44 -05:00
Adhemerval Zanella
de21c33c06 PowerPC: Fix --disable-multi-arch builds
This patch fixes some powerpc32 and powerpc64 builds with
--disable-multi-arch option along with different --with-cpu=powerN.
It cleanups the Implies directories by removing the multiarch
folder for non multiarch config and also fixing two assembly
implementations: powerpc64/power7/strncat.S that is calling the
wrong strlen; and power8/fpu/s_isnan.S that misses the hidden_def and
weak_alias directives.
2014-04-09 06:22:53 -05:00
Carlos O'Donell
862c472efa manual/ipc.texi: Fix AC-safety notes.
The function sem_close is AC-unsafe because lll_lock*
leaks a lock (aculock) and not because of twalk.
2014-04-08 17:12:15 -04:00
Will Newton
8667f90ec5 string: Cosmetic cleanup of string functions
Clean up string functions that do not have a version in gnulib on
the assumption that glibc is the canonical upstream copy of this
code. basename has a copy in gnulib but it is largely written to
handle Windows paths so merging it is not really viable. The changes
mostly consist of switching to ANSI function prototypes and removing
unused includes.

As many of these functions do not get built in a typical build due
to architecture optimized versions being used instead I built these
by hand to verify there were no build warnings and the code was
identical.

2014-04-07  Will Newton  <will.newton@linaro.org>

	* string/basename.c [HAVE_CONFIG_H]: Remove #ifdef and
	and contents.  [!_LIBC] Remove #ifndef and contents.
	(basename): Use ANSI prototype.  [_LIBC] Remove #idef.
	* string/memccpy.c (__memccpy): Use ANSI prototype.
	* string/memfrob.c (memfrob): Likewise.
	* string/strcoll.c (STRCOLL): Likewise.
	* string/strlen.c (strlen): Likewise.
	* string/strtok.c (STRTOK): Likewise.
	* string/strcat.c: Remove unused #include of memcopy.h.
	(strcat): Use ANSI prototype.
	* string/strchr.c: Remove unused #include of memcopy.h.
	(strchr): Use ANSI prototype.
	* string/strcmp.c: Remove unused #include of memcopy.h.
	(strcmp): Use ANSI prototype.
	* string/strcpy.c: Remove unused #include of memcopy.h.
	(strcpy): Use ANSI prototype.
2014-04-07 09:44:02 +01:00