Commit Graph

27865 Commits

Author SHA1 Message Date
Joseph Myers
c729e7c13a Move OS-specific shlib-versions entries to sysdeps files.
This patch moves OS-specific entries in the top-level shlib-versions
file to appropriate sysdeps directories.  I left the entries in
nptl/shlib-versions and nptl_db/shlib-versions unchanged; I think it
can be for those doing non-Linux NPTL-using ports to figure out
whether those entries should actually be OS-independent or should move
to sysdeps.

Given these two patches, I think the only further change needed before
the first column of shlib-versions can be eliminated will be changing
sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions to use %ifdef
to distinguish BE and LE configurations, instead of relying on the
powerpc64-.*-linux.* and powerpc.*le-.*-linux.* patterns.

Tested on x86_64 that the installed shared libraries are unchanged by
this patch.

	* shlib-versions: Remove OS-specific entries.  Moved to files in
	sysdeps.
	* sysdeps/mach/hurd/shlib-versions: New file.
	* sysdeps/unix/sysv/linux/shlib-versions: Likewise.
2014-09-12 12:24:00 +00:00
Joseph Myers
dc932a24d9 Move architecture-specific shlib-versions entries to sysdeps files.
This patch eliminates another way in which ex-ports and non-ex-ports
architectures differ, by moving architecture-specific entries from the
top-level shlib-versions file and that in nptl/ to appropriate sysdeps
directories.  As with my previous patch
<https://sourceware.org/ml/libc-alpha/2014-06/msg00949.html>, I do not
change the regular expressions used; even where the present
expressions seem more general, I believe they are in fact specific to
the chosen sysdeps directory, because any port that matches the
expression but not the sysdeps directory does not currently exist, and
so would use different symbol versions if added in future (and an
intended goal of these changes is to eliminate the first column in
shlib-versions completely rather than having two different mechanisms
in use for system-specific configuration).

Tested on x86_64 that this does not change the installed shared
libraries.  (x86_64 of course does not provide much test coverage for
this patch - what should be architecture-specific contents in
shlib-versions for x86_64 is currently abi-*-ld-soname Makefile
settings, until gnu/lib-names.h is generated more like gnu/stubs.h so
those can move back to shlib-versions.)

	* nptl/shlib-versions: Remove architecture-specific entries.
	Moved to files in sysdeps.
	* shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions: New
	file.
	* sysdeps/unix/sysv/linux/s390/s390-64/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sh/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc32/shlib-versions: Likewise.
	* sysdeps/unix/sysv/linux/sparc/sparc64/shlib-versions: Likewise.
2014-09-12 12:22:27 +00:00
Joseph Myers
0bd7246803 Add new Linux 3.16 constants to netinet/udp.h.
This patch adds the new constants UDP_NO_CHECK6_TX and
UDP_NO_CHECK6_RX from Linux 3.16 to sysdeps/gnu/netinet/udp.h.  (I
believe the existing constants there are already Linux-specific,
possibly with the intention that other OSes should adopt the same
values if possible if adopting the features in question.)

Tested on x86_64.

	* sysdeps/gnu/netinet/udp.h (UDP_NO_CHECK6_TX): New macro.
	(UDP_NO_CHECK6_RX): Likewise.
2014-09-12 12:13:08 +00:00
Siddhesh Poyarekar
920238e061 Fix typo in macro names in sysconf.c
Spell _POSIX_DEVICE_SPECIFIC and _POSIX_DEVICE_SPECIFIC_R correctly.
Found when trying to make the getconf environment variables
typo-proof.

	* sysdeps/posix/sysconf.c (__sysconf): Spell
	_POSIX_DEVICE_SPECIFIC and _POSIX_DEVICE_SPECIFIC_R correctly.
2014-09-12 16:37:31 +05:30
Florian Weimer
ba7b4d294b Complete the removal of __gconv_translit_find
Prior to the 2.20 release, the function was just changed to fail
unconditionally, in commit a1a6a401ab.
This commit removes the function completely, including gconv bits
which depend on it.

This changes the gconv ABI, which is not a public interface.
2014-09-12 09:17:32 +02:00
Siddhesh Poyarekar
5379aebddd Enhance tst-xmmymm.sh to detect zmm register usage in ld.so (BZ #16194)
2d63a517e4 added support to save and
restore zmm register in the dynamic linker, but did not enhance
test-xmmymm.sh to detect accidental usage of these registers.  The
patch below adds that check.

The script has also been renamed to tst-ld-sse-use.sh.  To see the
minimal changes, run `git show -M`.

	[BZ #16194]
	* sysdeps/x86/tst-xmmymm.sh: Rename file to...
	* sysdeps/x86/tst-ld-sse-use.sh: ... this.  Check for zmm
	register usage.
	* sysdeps/x86/Makefile: Adjust.
2014-09-12 12:31:05 +05:30
Roland McGrath
8c0ab919f6 Move findidx nested functions to top-level. 2014-09-11 16:02:17 -07:00
Florian Weimer
52ffbdf25a malloc: additional unlink hardening for non-small bins [BZ #17344]
Turn two asserts into a conditional call to malloc_printerr.  The
memory locations are accessed later anyway, so the performance
impact is minor.
2014-09-11 10:59:05 +02:00
Tim Lammens
984c0ea97f Fix memory leak in libio/wfileops.c do_ftell_wide [BZ #17370] 2014-09-11 10:44:02 +05:30
Chris Metcalf
3daee1076b tile: remove linux lowlevellock.h 2014-09-10 16:57:29 -04:00
Siddhesh Poyarekar
58b930ae21 Return failure in getnetgrent only when all netgroups have been searched (#17363)
The netgroups lookup code fails when one of the groups in the search
tree is empty.  In such a case it only returns the leaves of the tree
after the blank netgroup.  This is because the line parser returns a
NOTFOUND status when the netgroup exists but is empty.  The
__getnetgrent_internal implementation needs to be fixed to try
remaining groups if the current group is entry.  This patch implements
this fix.  Tested on x86_64.

	[BZ #17363]
	* inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next
	group if the current group is empty.
2014-09-10 21:51:50 +05:30
Adhemerval Zanella
71ae86478e PowerPC: memset optimization for POWER8/PPC64
This patch adds an optimized memset implementation for POWER8.  For
sizes from 0 to 255 bytes, a word/doubleword algorithm similar to
POWER7 optimized one is used.

For size higher than 255 two strategies are used:

1. If the constant is different than 0, the memory is written with
   altivec vector instruction;

2. If constant is 0, dbcz instructions are used.  The loop is unrolled
   to clear 512 byte at time.

Using vector instructions increases throughput considerable, with a
double performance for sizes larger than 1024.  The dcbz loops unrolls
also shows performance improvement, by doubling throughput for sizes
larger than 8192 bytes.
2014-09-10 07:39:46 -04:00
Adhemerval Zanella
3b473fecdf PowerPC: multiarch bzero cleanup for PPC64
This patch cleanups the multiarch bzero for powerpc64 by remove
the multiarch objects and use instead the the memset embedded
implementation presented in each multiarch optimization.  The
code generate is essentially the same, but the TB_TOCLESS (which
is not essential).
2014-09-10 07:39:46 -04:00
Florian Weimer
e6fb95871c Turn on -Werror=implicit-function-declaration
GCC 4.4, the minimum compiler version, supports this option.  Unlike
other warnings, -Wimplicit-function-declaration warnings should be
independent of compiler versions, so this change should not cause
compiler-specific build failures.
2014-09-10 08:13:06 +02:00
Steve Ellcey
9d3a350b49 Put mips preconfigure code inside mips* case statement.
Fix capitalization of error message.
2014-09-09 10:58:00 -07:00
Steve Ellcey
0febba23dd Modify ABI tests in MIPS preconfigure. 2014-09-09 10:01:51 -07:00
Carlos O'Donell
645a0e9c17 HPPA: Add c++-types.data.
Added c++-types.data to baseline for HPPA. At this point `make check`
completes without error, and the full testing results are summarized.
2014-09-07 22:09:49 -04:00
Carlos O'Donell
d83f0734e1 HPPA: Transition to new non-addon NPTL.
Merge roland/nptl-hppa to master, update and test for hppa-linux-gnu.

This commit squashes and commits the work done by Roland McGrath on
roland/nptl-hppa to migrate hppa to the new non-addon NPTL. Some
additional tweaks were required for tcb-offsets.sym to work correctly
along with clone.S (unique to hppa).
2014-09-07 22:08:36 -04:00
Allan McRae
21c83793a2 Open development for 2.21 2014-09-08 09:22:55 +10:00
Allan McRae
b8079dd0d3 Update version.h and include/features.h for 2.20 release 2014-09-07 18:09:09 +10:00
Allan McRae
c46303efa1 Update contrib.texi
Add entries for Wilco Dijkstra and Stefan Liebler.
2014-09-07 16:07:10 +10:00
Allan McRae
1cd9b65cea Update Korean translation 2014-09-07 15:50:34 +10:00
Chris Metcalf
8622092d58 [BZ #17354] tile: Fix up corner cases with signed relocations
Some types of relocations technically need to be signed rather than
unsigned: in particular ones that are used with moveli or movei,
or for jump and branch.  This is almost never a problem.  Jump and
branch opcodes are pretty much uniformly resolved by the static linker
(unless you omit -fpic for a shared library, which is not recommended).
The moveli and movei opcodes that need to be sign-extended generally
are for positive displacements, like the construction of the address of
main() from _start().  However, tst-pie1 ends up with main below _start
(in a different module) and the test failed due to signedness issues in
relocation handling.

This commit treats the value as signed when shifting (to preserve the
high bit) and also sign-extends the value generated from the updated
bundle when comparing with the desired bundle, which we do to make sure
no overflow occurred.  As a result, the tst-pie1 test now passes.
2014-09-06 12:24:03 -04:00
Florian Weimer
41488498b6 CVE-2014-6040: Crashes on invalid input in IBM gconv modules [BZ #17325]
These changes are based on the fix for BZ #14134 in commit
6e230d1183.
2014-09-03 19:46:42 +02:00
Khem Raj
a78b712d40 Define __GI_fegetenv for e500 libm
generic HAVE_RM_CTX implementation which is used for ppc/e500 as well
has introduced calls to fegetenv which should be resolved internally
with in libm

Signed-off-by: Khem Raj <raj.khem@gmail.com>

	* sysdeps/powerpc/powerpc32/e500/nofpu/fegetenv.c (fegetenv): Add
	libm_hidden_ver.
2014-09-02 21:39:04 +00:00
Allan McRae
2c31e102fa Update Esperanto translation 2014-09-01 10:48:22 +10:00
Allan McRae
cb08abc685 Update Catalan translation 2014-09-01 10:47:30 +10:00
Samuel Thibault
17a62de1ff Fix hang on fork
If e.g. a signal is being received while we are running fork(), the signal
thread may be having our SS lock when we make the space copy, and thus in the
child we can not take the SS lock any more.

* sysdeps/mach/hurd/fork.c (__fork): Lock SS->lock around __proc_dostop call.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
2014-08-28 22:09:29 +02:00
Mark Wielaard
9570bc53fc i386 TLS_INIT_TP might produce bogus asm changing stack pointer [BZ #17319]
TLS_INIT_TP in sysdeps/i386/nptl/tls.h uses some hand written asm to
generate a set_thread_area that might result in exchanging ebx and esp
around the syscall causing introspection tools like valgrind to loose
track of the user stack. Just use INTERNAL_SYSCALL which makes sure
esp isn't changed arbitrarily.

Before the patch the code would generate:

mov    $0xf3,%eax
movl   $0xfffff,0x8(%esp)
movl   $0x51,0xc(%esp)
xchg   %esp,%ebx
int    $0x80
xchg   %esp,%ebx

Using INTERNAL_SYSCALL instead will generate:

movl   $0xfffff,0x8(%esp)
movl   $0x51,0xc(%esp)
xchg   %ecx,%ebx
mov    $0xf3,%eax
int    $0x80
xchg   %ecx,%ebx

Thanks to Florian Weimer for analysing why the original code generated
the bogus esp usage:

  _segdescr.desc happens to be at the top of the stack, so its address
  is in %esp.  The asm statement says that %3 is an input, so its value
  will not change, and GCC can use %esp as the input register for the
  expression &_segdescr.desc.  But the constraints do not fully describe
  the asm statement because the %3 register is actually modified, albeit
  only temporarily.

	[BZ #17319]
	* sysdeps/i386/nptl/tls.h (TLS_INIT_TP): Use INTERNAL_SYSCALL
	to call set_thread_area instead of hand written asm.
	(__NR_set_thread_area): Removed define.
	(TLS_FLAG_WRITABLE): Likewise.
	(__ASSUME_SET_THREAD_AREA): Remove check.
	(TLS_EBX_ARG): Remove define.
	(TLS_LOAD_EBX): Likewise.
2014-08-28 09:53:08 +02:00
Samuel Thibault
b0f955c9ac Simplify atomicity of socket creation in bind. 2014-08-28 00:46:44 +02:00
Carlos O'Donell
45ef66289a NEWS: Typo fix: s/wil /will /g 2014-08-27 11:54:15 -04:00
Allan McRae
529bf51595 Update x86 ULPs
Using gcc-4.9, i7-2620M, i686 Linux.
2014-08-27 13:36:02 +10:00
Florian Weimer
f9df71e895 Fix typo in CVE ID 2014-08-26 20:43:07 +02:00
Florian Weimer
a1a6a401ab __gconv_translit_find: Disable function [BZ #17187]
This functionality has never worked correctly, and the implementation
contained a security vulnerability (CVE-2014-5119).
2014-08-26 19:38:59 +02:00
Allan McRae
e4e7cfd287 Update Vietnamese translation 2014-08-26 22:44:23 +10:00
Allan McRae
6aa09f710c Update Ukrainian translation 2014-08-26 22:43:31 +10:00
Allan McRae
edc0660e78 Update French translation 2014-08-26 22:42:36 +10:00
Allan McRae
7eea72ac23 Update Russian translation 2014-08-26 22:41:48 +10:00
Allan McRae
93c49eff43 Update Polish translation 2014-08-26 22:41:00 +10:00
Allan McRae
46acaf6361 Update Czech translation 2014-08-26 22:40:01 +10:00
Allan McRae
a9f5ce989c Update German translation 2014-08-26 22:38:47 +10:00
Allan McRae
373f2b7878 Update Bulgarian translation 2014-08-26 22:36:52 +10:00
Allan McRae
e7548bd8c2 Update Sweedish translation 2014-08-26 22:36:02 +10:00
Allan McRae
c526bf4df6 Update Dutch translation 2014-08-26 22:34:42 +10:00
Allan McRae
686ab29055 Update Spanish translation 2014-08-26 22:31:31 +10:00
Siddhesh Poyarekar
dd763fdb1e Remove NOT_IN_libc definition for pthread_atfork
pthread_atfork is already built in an extra-libs context, which gives
it NOT_IN_libc in its CPPFLAGS.  Adding the same definition to CFLAGS
is pointless.

Verified that the code is unchanged on x86_64.
2014-08-21 10:30:55 +05:30
Siddhesh Poyarekar
318c7a5846 Remove redundant CPPFLAGS for some programs
These programs get the NOT_IN_libc twice, once through the 'other'
target and another explicitly.  Remove the explicitly added CPFLAG.

	* catgets/Makefile (CPPFLAGS-gencat): Remove.
	* iconv/Makefile (CPPFLAGS-iconv_prog): Likewise.
	(CPPFLAGS-iconvconfig): Likewise.
	* timezone/Makefile (CPPFLAGS-zic): Likewise.
2014-08-21 10:27:13 +05:30
Siddhesh Poyarekar
eb72478a28 Remove unnecessary uses of NOT_IN_libc
If a IS_IN_* macro is defined, then NOT_IN_libc is always defined,
except obviously for IS_IN_libc.  There's no need to check for both.
Verified on x86_64 and i686 that the source is unchanged.

       * include/libc-symbols.h: Remove unnecessary check for
       NOT_IN_libc.
       * nptl/pthreadP.h: Likewise.
       * sysdeps/aarch64/setjmp.S: Likewise.
       * sysdeps/alpha/setjmp.S: Likewise.
       * sysdeps/arm/sysdep.h: Likewise.
       * sysdeps/i386/setjmp.S: Likewise.
       * sysdeps/m68k/setjmp.c: Likewise.
       * sysdeps/posix/getcwd.c: Likewise.
       * sysdeps/powerpc/powerpc32/setjmp-common.S: Likewise.
       * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise.
       * sysdeps/s390/s390-32/setjmp.S: Likewise.
       * sysdeps/s390/s390-64/setjmp.S: Likewise.
       * sysdeps/sh/sh3/setjmp.S: Likewise.
       * sysdeps/sh/sh4/setjmp.S: Likewise.
       * sysdeps/unix/alpha/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/aarch64/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/i386/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/ia64/setjmp.S: Likewise.
       * sysdeps/unix/sysv/linux/ia64/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/sh/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/tile/sysdep.h: Likewise.
       * sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
       * sysdeps/x86_64/setjmp.S: Likewise.
2014-08-21 10:26:46 +05:30
H.J. Lu
7e54fd0421 Mention fixes for BZs 16194 and 16275 in NEWS 2014-08-13 09:24:07 -07:00
Joseph Myers
d44a052c49 Fix powerpc32 __get_clockfreq for non-power4 (bug 17263).
In my powerpc32 testing I've observed misc/test-gettimebasefreq
failing.

This is a glibc build (soft-float, though that's not relevant here)
without any --with-cpu and without any special configuration of the
default CPU for GCC either.  In particular, it's one not using
sysdeps/powerpc/powerpc32/power4/hp-timing.h (although in fact the
processor I'm using for testing is POWER4-based), so hp_timing_t is
32-bit not 64-bit.  But the VDSO call being used by
INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK is generating a 64-bit result
(high part in r3, low part in r4).  The code extracting that result,
however, expects a result of the type hp_timing_t as passed to
INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK, meaning that only r3 (= 0) is
used and the value in r4 is ignored.  This patch fixes this by always
using uint64_t as the type in INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK -
reflecting the actual ABI (unconditional in the kernel) of that VDSO
call.  This is the minimal change for this issue - no check for
overflow, no change of the type of the timebase_freq variable or the
return type of __get_clockfreq to something other than hp_timing_t
(such a change would simply move the implicit conversions to the over
callers of that function), no change to hp_timing_t itself.

Tested for powerpc32 soft float.

	[BZ #17263]
	* sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c: Include
	<stdint.h>.
	(__get_clockfreq): Use uint64_t instead of hp_timing_t in
	INTERNAL_VSYSCALL_NO_SYSCALL_FALLBACK call.
2014-08-13 16:06:18 +00:00