Commit Graph

67 Commits

Author SHA1 Message Date
Joseph Myers
6dcecc6486 Restore non-__thread cases for ARM that were used in dynamic linker. 2011-10-26 16:18:21 +00:00
Andreas Schwab
0507f293c9 arm: don't call ifunc functions in trace mode 2011-10-05 11:52:11 +02:00
Joseph Myers
ce001f45bc Remove non-TLS support for ARM. 2011-09-11 11:15:50 +00:00
Richard Sandiford
70063199c3 Support for R_ARM_IRELATIVE relocations. 2011-04-26 21:00:46 +00:00
Nathan Sidwell
3447f0d785 ARM TLS descriptors support. 2011-03-05 03:39:15 +00:00
Joseph Myers
848fa4a9c0 Update ARM for ABIVERSION changes. 2010-03-30 16:26:07 +00:00
Joseph Myers
5631abde36 2009-02-05 Paul Brook <paul@codesourcery.com>
Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/arm/dl-machine.h (elf_machine_dynamic): Ditto.
	(elf_machine_load_address): Clear T bit of PLT entry contents.
	(RTLD_START): Mark function symbols as such.  Tweak pc-relative
	addressing to avoid depending on pc read pipeline offset.
	* sysdeps/arm/machine-gmon.h (MCOUNT): Add Thumb-2 implementation.
	* sysdeps/arm/tls-macros.h: Add alignment for Thumb-2.
	(ARM_PC_OFFSET): Define.
	(TLS_IE): Define differently for Thumb-2.
	(TLS_LE, TLS_LD, TLS_GD): Use ARM_PC_OFFSET.
	* sysdeps/arm/elf/start.S: Switch to thumb mode for Thumb-2.
	* sysdeps/unix/sysv/linux/arm/eabi/sysdep.h (INTERNAL_SYSCALL_RAW):
	Add Thumb implementation.
	* sysdeps/unix/sysv/linux/arm/eabi/nptl/aio_misc.h: New.
	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-resume.c: Enforce
	alignment for Thumb-2.  Adjust offset from PC for Thumb-2.
	* sysdeps/unix/sysv/linux/arm/eabi/nptl/unwind-forcedunwind.c: Ditto.
	* sysdeps/unix/sysv/linux/arm/nptl/bits/atomic.h (atomic_full_barrier,
	__arch_compare_and_exchange_val_32_acq): Add Thumb-2 implementation.
2009-02-05 14:46:41 +00:00
Daniel Jacobowitz
56865130d0 * sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined
symbols.
	(elf_machine_rela): Likewise.
2006-09-21 18:21:19 +00:00
Daniel Jacobowitz
3dff8d2978 * sysdeps/arm/dl-machine.h (elf_machine_dynamic): Correct GOT access to
load the _DYNAMIC slot.
2006-07-05 16:46:20 +00:00
Daniel Jacobowitz
e8256668f3 * sysdeps/arm/dl-machine.h (elf_machine_dynamic): Rewrite to load
_GLOBAL_OFFSET_TABLE_ explicitly.
2006-05-30 15:18:49 +00:00
Daniel Jacobowitz
de96d1483f * sysdeps/arm/dl-machine.h (CLEAR_CACHE): Use INTERNAL_SYSCALL_ARM.
* sysdeps/unix/sysv/linux/arm/brk.c (__brk): Use INLINE_SYSCALL.
	* sysdeps/unix/sysv/linux/arm/clone.S (__clone): Use DO_CALL.
	* sysdeps/unix/sysv/linux/arm/eabi/configure.in: Bump
	arch_minimum_kernel.
	* sysdeps/unix/sysv/linux/arm/eabi/configure: Regenerated.
	* sysdeps/unix/sysv/linux/arm/eabi/epoll_ctl.c,
	sysdeps/unix/sysv/linux/arm/eabi/epoll_wait.c,
	sysdeps/unix/sysv/linux/arm/eabi/fcntl.c,
	sysdeps/unix/sysv/linux/arm/eabi/fstatfs64.c,
	sysdeps/unix/sysv/linux/arm/eabi/ftruncate64.c,
	sysdeps/unix/sysv/linux/arm/eabi/fxstat64.c,
	sysdeps/unix/sysv/linux/arm/eabi/kernel_epoll.h,
	sysdeps/unix/sysv/linux/arm/eabi/kernel_stat.h,
	sysdeps/unix/sysv/linux/arm/eabi/lockf64.c,
	sysdeps/unix/sysv/linux/arm/eabi/lxstat64.c,
	sysdeps/unix/sysv/linux/arm/eabi/semop.c,
	sysdeps/unix/sysv/linux/arm/eabi/semtimedop.c,
	sysdeps/unix/sysv/linux/arm/eabi/statfs64.c,
	sysdeps/unix/sysv/linux/arm/eabi/syscalls.list,
	sysdeps/unix/sysv/linux/arm/eabi/uname.c,
	sysdeps/unix/sysv/linux/arm/eabi/xstat64.c,
	sysdeps/unix/sysv/linux/arm/eabi/xstatconv.c,
	sysdeps/unix/sysv/linux/arm/eabi/xstatconv.h: Removed.
	* sysdeps/unix/sysv/linux/arm/eabi/linuxthreads/sysdep-cancel.h,
	sysdeps/unix/sysv/linux/arm/eabi/mmap64.S,
	sysdeps/unix/sysv/linux/arm/eabi/pread.c,
	sysdeps/unix/sysv/linux/arm/eabi/pread64.c,
	sysdeps/unix/sysv/linux/arm/eabi/pwrite.c,
	sysdeps/unix/sysv/linux/arm/eabi/pwrite64.c,
	sysdeps/unix/sysv/linux/arm/eabi/readahead.c,
	sysdeps/unix/sysv/linux/arm/eabi/sigrestorer.S,
	sysdeps/unix/sysv/linux/arm/eabi/socket.S,
	sysdeps/unix/sysv/linux/arm/eabi/syscall.S,
	sysdeps/unix/sysv/linux/arm/eabi/sysdep.h,
	sysdeps/unix/sysv/linux/arm/eabi/truncate64.c: New files.
	* sysdeps/unix/sysv/linux/arm/linuxthreads/sysdep-cancel.h
	(SINGLE_THREAD_P_INT, SINGLE_THREAD_P_PIC): Removed.
	(SINGLE_THREAD_P): Rewritten to use only ip.
	* sysdeps/unix/sysv/linux/arm/linuxthreads/vfork.S (__vfork): Use
	DO_CALL.
	* sysdeps/unix/sysv/linux/arm/mmap.S (__mmap): Use DO_CALL.
	* sysdeps/unix/sysv/linux/arm/mmap64.S (__mmap64): Use DO_CALL.
	Don't handle EABI here.
	* sysdeps/unix/sysv/linux/arm/socket.S (__socket): Use
	SINGLE_THREAD_P.
	* sysdeps/unix/sysv/linux/arm/vfork.S (__vfork): Use DO_CALL.
2005-11-16 18:08:53 +00:00
Daniel Jacobowitz
f10eff5832 Add ARM EABI port. 2005-10-10 15:29:32 +00:00
Daniel Jacobowitz
485a9bb9f0 * sysdeps/arm/dl-machine.h: Include <tls.h>.
(elf_machine_type_class, elf_machine_rel, elf_machine_rela): Handle
	TLS relocations.
	* sysdeps/unix/sysv/linux/arm/Makefile: Build __aeabi_read_tp.
	* sysdeps/unix/sysv/linux/arm/sysdep.h (INTERNAL_SYSCALL_RAW): Renamed
	from INTERNAL_SYSCALL.
	(INTERNAL_SYSCALL, INTERNAL_SYSCALL_ARM): New macros.
	* sysdeps/arm/dl-tls.h, sysdeps/arm/elf/configure.in,
	sysdeps/arm/elf/configure, sysdeps/arm/libc-tls.c,
	sysdeps/arm/linuxthreads/tls.h, sysdeps/arm/tls-macros.h,
	sysdeps/unix/sysv/linux/arm/aeabi_read_tp.S,
	sysdeps/unix/sysv/linux/arm/libc-aeabi_read_tp.S: New files.
2005-10-05 20:15:22 +00:00
Daniel Jacobowitz
867700cb74 * sysdeps/arm/dl-machine.h (ARCH_LA_PLTENTER,
ARCH_LA_PLTEXIT): Define.
	* sysdeps/arm/ldsodefs.h, sysdeps/arm/tst-audit.h: New files.
2005-10-05 20:13:03 +00:00
Phil Blundell
849e84dde3 2005-05-09 Daniel Jacobowitz <dan@codesourcery.com>
Mark Mitchell  <mark@codesourcery.com>

    	* sysdeps/arm/bits/link.h: New file.
	* sysdeps/arm/dl-trampoline.S: New file.
	* sysdeps/arm/dl-machine.h: Check RESOLVE_MAP instead of RESOLVE.
	(elf_machine_runtime_setup): Check dl_profile before calling
	_dl_name_match_p.
	(ELF_MACHINE_RUNTIME_TRAMPOLINE): Delete.
	(elf_machine_rel, elf_machine_rela): Use RESOLVE_MAP.
	(fix_bad_pc24): Use auto instead of static.
2005-06-10 11:33:52 +00:00
Roland McGrath
dda081dd50 2005-03-15 Jakub Jelinek <jakub@redhat.com>
* elf/dynamic-link.h (elf_machine_rel, elf_machine_rel_relative,
	elf_machine_rela, elf_machine_rela_relative, elf_machine_lazy_rel):
	Add inline keyword.
	* sysdeps/alpha/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative, elf_machine_lazy_rel): Add always_inline
	attribute.
	* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative, elf_machine_lazy_rel): Likewise.  Change
	static inline into auto inline.
	* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
	elf_machine_rela_relative, elf_machine_lazy_rel): Likewise.
	* sysdeps/generic/dl-machine.h (elf_machine_rel, elf_machine_rela):
	Likewise.
	* sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rel_relative,
	elf_machine_rela, elf_machine_rela_relative, elf_machine_lazy_rel):
	Likewise.
2005-03-15 22:57:26 +00:00
Ulrich Drepper
816c550ea5 (ELF_MACHINE_NO_RELA): Define unconditionally to defined RTLD_BOOTSTRAP. 2005-03-06 00:07:58 +00:00
Roland McGrath
c5cb341b72 2005-03-01 Roland McGrath <roland@redhat.com>
[BZ #721]
	* sysdeps/arm/dl-machine.h (ELF_MACHINE_NO_RELA): Define this outside
	of [RESOLVE_MAP].
2005-03-01 20:34:40 +00:00
Roland McGrath
47f0752a48 2004-11-18 Daniel Jacobowitz <dan@codesourcery.com>
* sysdeps/arm/sysdep.h: Define __USE_BX__ if bx is available.
	Use it instead of __THUMB_INTERWORK__.  Make RETINSTR take
	only a condition and a register.
	* sysdeps/arm/dl-machine.h: Use __USE_BX__ instead of
	__THUMB_INTERWORK__.
	(_dl_start_user): Use BX.
	* sysdeps/arm/strlen.S: Use DO_RET.
	* sysdeps/unix/arm/brk.S, sysdeps/unix/arm/fork.S,
	sysdeps/unix/arm/sysdep.S, sysdeps/unix/arm/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/arm/clone.S,
	sysdeps/unix/sysv/linux/arm/mmap.S,
	sysdeps/unix/sysv/linux/arm/mmap64.S,
	sysdeps/unix/sysv/linux/arm/socket.S,
	sysdeps/unix/sysv/linux/arm/sysdep.h,
	sysdeps/unix/sysv/linux/arm/vfork.S: Update uses of RETINSTR.
2004-12-04 21:20:17 +00:00
Roland McGrath
08b55be5f9 2004-04-29 Philip Blundell <pb@nexus.co.uk>
* sysdeps/arm/dl-machine.h (RTLD_START): Avoid unnecessary GOT
	entries.
2004-04-29 20:06:49 +00:00
Ulrich Drepper
88aa65dae8 (elf_machine_rela): Don't use INTUSE when calling _dl_signal_error.
(elf_machine_rel): Likewise.
2004-04-22 07:31:08 +00:00
Ulrich Drepper
cebbd6e78d Use GLRO instead of GL where appropriate. 2004-03-05 10:22:54 +00:00
Ulrich Drepper
b82390a8da (RTLD_START): Remove setting of __libc_stack_end. 2003-09-24 21:08:31 +00:00
Ulrich Drepper
12a15026b8 (CALL_ROUTINE): Deleted.
(BX): Define.
(ELF_MACHINE_RUNTIME_TRAMPOLINE): Optimise a little.
2003-09-17 18:09:25 +00:00
Alexandre Oliva
5027ae109a * elf/dynamic-link.h (elf_machine_rel, elf_machine_rela,
elf_machine_rel_relative, elf_machine_rela_relative): Don't assume
reloc_addr is aligned.
* sysdeps/alpha/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela,
elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
* sysdeps/cris/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/hppa/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/i386/dl-machine.h (elf_machine_rel, elf_machine_rela,
elf_machine_rel_relative, elf_machine_rela_relative): Adjust.
* sysdeps/ia64/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/m68k/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/mips/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/powerpc/powerpc64/dl-machine.h
(elf_machine_rela_relative, elf_machine_rela): Adjust.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative):
* sysdeps/sh/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
* sysdeps/x86_64/dl-machine.h (elf_machine_rela,
elf_machine_rela_relative): Adjust.
2003-07-31 06:33:52 +00:00
Roland McGrath
d15c9a7856 2002-11-15 Jakub Jelinek <jakub@redhat.com>
* sysdeps/i386/dl-machine.h (elf_machine_rela): Handle R_386_COPY.
	* sysdeps/arm/dl-machine.h (elf_machine_rela): Handle R_ARM_COPY.
2002-11-15 22:51:20 +00:00
Roland McGrath
a30e09230b 2002-09-28 Roland McGrath <roland@redhat.com>
* sysdeps/mach/hurd/dl-sysdep.c (_dl_important_hwcaps): Use INTUSE for
	_dl_signal_error.
	* sysdeps/mips/dl-machine.h (elf_machine_runtime_link_map): Likewise.
	* sysdeps/powerpc/powerpc64/dl-machine.c
	(_dl_reloc_overflow): Likewise.
	* sysdeps/arm/dl-machine.h (elf_machine_rel): Likewise.
	(elf_machine_rela): Likewise.
2002-09-28 19:45:29 +00:00
Ulrich Drepper
bbb3856d85 Avoid unescaped newlines in string constants. 2002-08-28 21:26:20 +00:00
Ulrich Drepper
2aac58fcdf (elf_machine_rel): Don't handle
R_ARM_RELATIVE if RTLD_BOOTSTRAP and HAVE_Z_COMBRELOC.  Only check
for rtld map if neither RTLD_BOOTSTRAP nor HAVE_Z_COMBRELOC is defined.
(elf_machine_rela): Remove unused variable.
2002-07-15 02:07:00 +00:00
Ulrich Drepper
ceb7d0bbbe Use rtld_progrname instead of _dl_argv[0]. 2002-03-01 09:43:36 +00:00
Ulrich Drepper
dca9c7304b Add HAVE_VISIBILITY_ATTRIBUTE and HAVE_SDATA_SECTION. 2002-02-28 22:36:33 +00:00
Ulrich Drepper
c577723005 (RTLD_START): Call _dl_init_internal instead of _dl_init. 2002-02-03 00:29:15 +00:00
Ulrich Drepper
f71d7f5726 Move global variables for SHARED code in struct _rtld_global. Export
this struct, remove all exports for the signal variables.
2002-02-01 01:32:06 +00:00
Andreas Jaeger
b6845b6741 (elf_machine_rela): Fix typo in last patch. 2001-12-12 09:02:09 +00:00
Ulrich Drepper
bcb5a520da (elf_machine_runtime_setup): Save original content of .got[1].
(ELF_MACHINE_NO_RELA): Only define if RTLD_BOOTSTRAP.
(ELF_MACHINE_PLT_REL): Define.
(elf_machine_rela, elf_machine_rela_relative): New.
(elf_machine_lazy_rel): Reinitialize R_ARM_JUMP_SLOT address instead
of adjusting it if prelinked and prelinking cannot be used.
2001-12-12 00:11:47 +00:00
Ulrich Drepper
d4ef613a24 (elf_machine_rel): Fix thinko in usage of RESOLVE() (r_type, not
reloc->r_type).
2001-09-08 21:31:40 +00:00
Ulrich Drepper
09d4f65308 Fix usage of new _dl_signal_error() format. 2001-09-08 17:16:44 +00:00
Ulrich Drepper
5c6029e5c0 (elf_machine_lookup_noplt_p, elf_machine_lookup_noexec_p): Remove.
(elf_machine_type_class): Define.
2001-08-26 22:26:38 +00:00
Ulrich Drepper
85bdccdbd2 Define elf_machine_rel_relative. Minor optimizations. 2001-08-24 08:43:21 +00:00
Ulrich Drepper
17f56d2f9c (elf_machine_runtime_setup): Only set _dl_profile_map for the right object. 2001-08-11 08:54:29 +00:00
Andreas Jaeger
3214b89b32 Update to LGPL v2.1. 2001-07-06 04:56:23 +00:00
Ulrich Drepper
773b640096 Replace use of old output functions with the new ones. 2001-02-28 06:35:24 +00:00
Ulrich Drepper
b8f7c6f761 (elf_machine_rel): Correct handling of PC24 relocs with negative value. 2001-02-05 05:59:49 +00:00
Ulrich Drepper
f1dba30859 (elf_machine_matches_host): Parameter is now pointer to ELF header. 2000-10-20 17:04:28 +00:00
Ulrich Drepper
a27fd4306a (fix_bad_pc24): New function.
(elf_machine_rel): Use it for out-of-range PC24 relocs.
2000-07-29 19:32:27 +00:00
Ulrich Drepper
408c9db5d3 (elf_machine_fixup_plt): Change return valuie to lookup_t and return the value. 2000-05-05 07:12:09 +00:00
Ulrich Drepper
21d129104c (RTLD_START): Rewrite for new init function interface. 2000-04-12 20:12:05 +00:00
Ulrich Drepper
7189e3b807 Use D_PTR to access relocated entries in l_info. 2000-03-31 05:16:19 +00:00
Ulrich Drepper
9b1eef96d2 (CLEAR_CACHE): System calls clobber R0.
(dl_platform_init): Allow _dl_platform to be NULL.
2000-01-10 01:42:43 +00:00
Ulrich Drepper
2dfdce515f (CLEAR_CACHE): Fix a2 value. 1999-12-21 17:50:04 +00:00