Commit Graph

66 Commits

Author SHA1 Message Date
Will Newton
47590bce28 ARM: Fix clone build for ARMv4
ARMv4 does not have the blx instruction, so use the BLX macro which
handles abstracting this for us.

Build tested for armv7, armv4t and armv4.

ports/ChangeLog.arm:

2014-01-24  Will Newton  <will.newton@linaro.org>

	[BZ #16499]
	* sysdeps/unix/sysv/linux/arm/clone.S: Use BLX macro instead
	of blx instruction directly.
2014-01-24 13:15:46 +00:00
Will Newton
2f10c4d690 ARM: Don't apply pointer encryption to the frame pointer
The frame pointer register is rarely used for that purpose on ARM and
applications that look at the contents of the jmp_buf may be relying
on reading an unencrypted value. For example, Ruby uses the contents
of jmp_buf to find the root set for garbage collection so relies on
this pointer value being unencrypted. Without this patch the Ruby
testsuite fails with a segmentation fault.

ports/ChangeLog.arm:

2013-01-14  Will Newton  <will.newton@linaro.org>

	* sysdeps/arm/__longjmp.S: Don't apply pointer encryption
	to fp register.
	* sysdeps/arm/setjmp.S: Likewise.
	* sysdeps/arm/include/bits/setjmp.h (JMP_BUF_REGLIST): Add
	fp to register list, remove a4.
	* sysdeps/unix/sysv/linux/arm/sysdep.h (PTR_MANGLE_LOAD):
	New macro.
2014-01-14 14:02:34 +00:00
Allan McRae
d4697bc93d Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
Ondřej Bílka
d1d9eaf478 Use __glibc_reserved instead __unused. 2013-11-26 12:32:28 +01:00
Mike Frysinger
cb8a6dbd17 rename configure.in to configure.ac
Autoconf has been deprecating configure.in for quite a long time.
Rename all our configure.in and preconfigure.in files to .ac.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2013-10-30 17:32:08 +10:00
Will Newton
6d9b9a67af ARM: Allow building __longjmp as Thumb.
Convert __longjmp code to allow building as Thumb.

ports/ChangeLog.arm:

2013-10-04  Will Newton  <will.newton@linaro.org>

	* sysdeps/arm/__longjmp.S (NO_THUMB): Remove define.
	(__longjmp): Use Thumb supported instructions.
	* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S (NO_THUMB):
	Remove define.
2013-10-04 10:53:43 +01:00
Will Newton
b7f2d27dbd ARM: Add pointer encryption support.
Add support for pointer encryption in glibc internal structures in C
and assembler code. Pointer encryption is a glibc security feature
described here:

https://sourceware.org/glibc/wiki/PointerEncryption

The ARM implementation uses global variables instead of thread pointer
relative accesses to get the value of the pointer encryption guard
because accessing the thread pointer can be very expensive on older
ARM cores.

ports/ChangeLog.arm:

2013-10-03  Will Newton  <will.newton@linaro.org>

	* sysdeps/arm/__longjmp.S (__longjmp): Demangle fp, sp
	and lr when restoring register values.
	* sysdeps/arm/include/bits/setjmp.h (JMP_BUF_REGLIST): Remove
	sp and lr from list and replace fp with a4.
	* sysdeps/arm/jmpbuf-unwind.h (_jmpbuf_sp): New function.
	(_JMPBUF_UNWINDS_ADJ): Call _jmpbuf_sp.
	* sysdeps/arm/setjmp.S (__sigsetjmp): Mangle fp, sp and lr
	before storing register values.
	* sysdeps/arm/sysdep.h (LDST_GLOBAL): New macro.
	* sysdeps/unix/sysv/linux/arm/sysdep.h (PTR_MANGLE): New macro.
	(PTR_DEMANGLE): Likewise. (PTR_MANGLE2): Likewise.
	(PTR_DEMANGLE2): Likewise.
2013-10-03 11:35:50 +01:00
Will Newton
6b06ac56cd ARM: Fix clone code when built for Thumb.
The mov lr, pc instruction will lose the Thumb bit from the return address
so use blx lr instead.

ports/ChangeLog.arm:

2013-08-30  Will Newton  <will.newton@linaro.org>

	[BZ #15909]
	* sysdeps/unix/sysv/linux/arm/clone.S (__clone): Use blx
	instead of mov lr, pc.
2013-08-30 10:50:25 +01:00
Thomas Schwinge
c54290cf08 Use ELFOSABI_GNU instead of ELFOSABI_LINUX. 2013-08-29 12:22:17 +02:00
Ryan S. Arnold
1ae8bfe07c Add GLRO(dl_hwcap2) for new AT_HWCAP2 auxv_t a_type. 2013-06-28 16:50:48 -05:00
Siddhesh Poyarekar
61dd6208fb New API to set default thread attributes
This patch introduces two new convenience functions to set the default
thread attributes used for creating threads.  This allows a programmer
to set the default thread attributes just once in a process and then
run pthread_create without additional attributes.
2013-06-15 12:24:15 +05:30
Joseph Myers
5556231db2 Remove trailing whitespace in ports. 2013-06-05 20:26:40 +00:00
Ryan S. Arnold
e054f49430 Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
Thomas Schwinge
572676160d New <math.h> macro named issignaling to check for a signaling NaN (sNaN).
It is based on draft TS 18661 and currently enabled as a GNU extension.
2013-04-02 13:51:02 +02:00
Joseph Myers
d56ca734b5 Use LIBC_CONFIG_VAR for ARM default-abi setting. 2013-03-20 23:15:42 +00:00
Joseph Myers
b7845b6388 Add comments about ARM configure -fno-unwind-tables handling. 2013-03-11 23:55:55 +00:00
Andreas Schwab
fb6b0fcbf1 Remove extra pthread_atfork compat symbols 2013-03-11 09:47:01 +01:00
Richard Henderson
79fd873111 arm: Implement hard-tp for GET_TLS 2013-03-06 07:47:21 -08:00
Richard Henderson
55668624cf arm: Use push/pop mnemonics
For arm this makes no difference--the result is bit-for-bit identical;
for thumb this results in smaller encodings.  Perhaps it ought not and
this is in fact an assembler bug, but I also think it's clearer.
2013-03-06 07:46:45 -08:00
Richard Henderson
5232b909bf arm: Introduce and use GET_TLS
Factor out the sequence needed to call kuser_get_tls, as we can't
play subtract into pc games in thumb mode.  Prepare for hard-tp,
pulling the save of LR into the macro.
2013-03-06 07:46:38 -08:00
Richard Henderson
3ae44082ab arm: Introduce and use NEGOFF series of macros
There are several places in which we access negative offsets from
the thread-pointer, but thumb2 only supports positive offsets in
memory references.

Avoid duplicating the rather large macros in which these references
are embedded by abstracting out the operation.
2013-03-06 07:44:25 -08:00
Richard Henderson
cd24e113c3 arm: Introduce and use LDST_PCREL
Macro-ising the few instances where we need to distinguish between
arm and thumb pc-relative memory operations.
2013-03-06 07:44:24 -08:00
Andreas Jaeger
c91a49fe20 Use <bits/mman-linux.h> on ARM 2013-03-06 16:27:24 +01:00
Richard Henderson
365261c37f arm: Mark assembly files that will not use thumb mode
Some routines are written with complex LDM/STM insns that cannot be
used in thumb mode, or are highly conditional requiring excessive
IT insns.

When a future patch goes in to enable thumb2 by default, this marker
will be used to override that default.
2013-02-28 00:18:30 -08:00
Richard Henderson
6ccd0107f3 arm: Add IT insns for thumb mode
These are ignored by the assembler in ARM mode, so by
default this has no effect on generated code.
2013-02-28 00:17:21 -08:00
Richard Henderson
783a65c253 arm: Introduce and use PC_OFS
Scour the source for raw "-8" adjustments that are related to the
offset created by reading the pc.
2013-02-28 00:16:05 -08:00
Richard Henderson
63cc0e75ea arm: Tidy whitespace in sysdep.h files 2013-02-28 00:12:07 -08:00
Richard Henderson
c98ec0b97f arm: Include libc-do-syscall in sysdep-rtld-routines
When compiling with -mthumb, ld.so itself also needs __libc_do_syscall.
2013-02-28 00:08:59 -08:00
Roland McGrath
f4564ff0b6 ARM: Macroize use of .cfi_sections directive. 2013-02-27 16:36:47 -08:00
Joseph Myers
6c89344ec2 Add FUTEX_*_REQUEUE_PI support for ARM. 2013-02-18 23:49:05 +00:00
Siddhesh Poyarekar
ba384f6ed9 C++11 thread_local destructors support
This feature is specifically for the C++ compiler to offload calling
thread_local object destructors on thread program exit, to glibc.
This is to overcome the possible complication of destructors of
thread_local objects getting called after the DSO in which they're
defined is unloaded by the dynamic linker.  The DSO is marked as
'unloadable' if it has a constructed thread_local object and marked as
'unloadable' again when all the constructed thread_local objects
defined in it are destroyed.
2013-02-18 19:08:21 +05:30
Joseph Myers
70d9946a44 Remove __ptrvalue, __bounded and __unbounded. 2013-02-13 23:30:40 +00:00
Joseph Myers
a2da1673fe Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
Carlos O'Donell
b39949d211 ARM: Support loading unmarked objects from cache.
ARM now supports loading unmarked objects from
the dynamic loader cache. Unmarked objects can
be used with the hard-float or soft-float ABI.
We must support loading unmarked objects during
the transition period from a binutils that does
not mark objects to one that does mark them with
the correct ELF flags.

Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2013-02-08 12:26:12 -05:00
Joseph Myers
6277fdabc0 Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr. 2013-02-04 16:29:39 +00:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Marcus Shawcroft
931ed9559b arm: Check for the FLAG_ARM_LIBHF flag in the ldconfig cache
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 13:07:24 +00:00
Marcus Shawcroft
bc7981ac2b arm: Tag ARM libc6-dependent binaries with FLAG_ELF_LIBC6
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 11:00:19 +00:00
Marcus Shawcroft
a55bca6542 arm: Tag ARM and AArch64 binaries in the ldconfig cache.
Add the correct tags for ARM and AArch64 libraries in the ldconfig
cache for ARM.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 10:50:34 +00:00
Joseph Myers
a451ee33af Avoid $(shell) in determining default ARM ABI. 2012-11-21 21:04:33 +00:00
Marcus Shawcroft
f507f7d598 Fix thumb2 build breakage in libcrypt 2012-11-14 23:06:40 +00:00
Joseph Myers
316a1b67e1 Define lll_futex_timed_wait_bitset for ARM. 2012-11-05 22:30:37 +00:00
Roland McGrath
6e6249d0b4 BZ#14743: Move clock_* symbols from librt to libc. 2012-10-24 14:50:46 -07:00
Andreas Jaeger
2a0e2669f9 Always define __O_LARGEFILE 2012-10-22 16:23:20 +02:00
Andreas Jaeger
7597ceba89 ARM: Use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
2012-10-22 09:34:11 +02:00
Siddhesh Poyarekar
adcdc775e1 Fix clone flag name in comment to CLONE_CHILD_CLEARTID. 2012-10-02 08:52:55 +05:30
Joseph Myers
ad845c0be9 Remove __ASSUME_STAT64_SYSCALL. 2012-08-27 19:36:04 +00:00
Steve McIntyre
d3bafbc98e Check floating-point ABI in ARM VALID_ELF_HEADER. 2012-08-23 20:38:25 +00:00
Joseph Myers
348363b2c3 Remove __ASSUME_MMAP2_SYSCALL. 2012-08-20 14:37:27 +00:00
Roland McGrath
fdd3affb97 Rename ARM bits/atomic.h not to be specific to nptl add-on. 2012-08-15 09:40:28 -07:00