diff options
author | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2011-10-26 16:46:37 +0000 |
---|---|---|
committer | joseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d> | 2011-10-26 16:46:37 +0000 |
commit | 6e872682bccee956e13e018651be551bb89647de (patch) | |
tree | 3d1ba9d6d3933466be9a998cee1709fe2e7c72ba /ports | |
parent | 5cdb7e63b5262d2a30d11916242fb6c33746d350 (diff) |
Merge changes between r15557 and r15584 from /fsf/trunk.
git-svn-id: svn://svn.eglibc.org/trunk@15585 7b3dc134-2b1b-0410-93df-9e9f96275f8d
Diffstat (limited to 'ports')
-rw-r--r-- | ports/ChangeLog.arm | 5 | ||||
-rw-r--r-- | ports/ChangeLog.m68k | 6 | ||||
-rw-r--r-- | ports/sysdeps/arm/dl-machine.h | 8 | ||||
-rw-r--r-- | ports/sysdeps/m68k/m680x0/fpu/math_private.h | 19 | ||||
-rw-r--r-- | ports/sysdeps/m68k/m680x0/fpu/sincostab.c | 1 | ||||
-rw-r--r-- | ports/sysdeps/unix/arm/sysdep.S | 11 |
6 files changed, 49 insertions, 1 deletions
diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm index ba319b832..c61cfe461 100644 --- a/ports/ChangeLog.arm +++ b/ports/ChangeLog.arm @@ -1,3 +1,8 @@ +2011-10-26 Joseph Myers <joseph@codesourcery.com> + + * sysdeps/arm/dl-machine.h, sysdeps/unix/arm/sysdep.S: Restore + cases for use in rtld. + 2011-10-05 Andreas Schwab <schwab@redhat.com> * sysdeps/arm/dl-machine.h (elf_machine_rel, elf_machine_rela) diff --git a/ports/ChangeLog.m68k b/ports/ChangeLog.m68k index d7e03efd2..09de15987 100644 --- a/ports/ChangeLog.m68k +++ b/ports/ChangeLog.m68k @@ -1,3 +1,9 @@ +2011-10-26 Andreas Schwab <schwab@linux-m68k.org> + + * sysdeps/m68k/m680x0/fpu/math_private.h: New file. + + * sysdeps/m68k/m680x0/fpu/sincostab.c: New file. + 2011-10-23 Andreas Schwab <schwab@linux-m68k.org> * sysdeps/m68k/coldfire/fpu/e_sqrt.c: Add __sqrt_finite alias. diff --git a/ports/sysdeps/arm/dl-machine.h b/ports/sysdeps/arm/dl-machine.h index 5a5896560..5ceeaa979 100644 --- a/ports/sysdeps/arm/dl-machine.h +++ b/ports/sysdeps/arm/dl-machine.h @@ -242,12 +242,18 @@ _dl_start_user:\n\ define the value. ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one of the main executable's symbols, as for a COPY reloc. */ -#define elf_machine_type_class(type) \ +#ifndef RTLD_BOOTSTRAP +# define elf_machine_type_class(type) \ ((((type) == R_ARM_JUMP_SLOT || (type) == R_ARM_TLS_DTPMOD32 \ || (type) == R_ARM_TLS_DTPOFF32 || (type) == R_ARM_TLS_TPOFF32 \ || (type) == R_ARM_TLS_DESC) \ * ELF_RTYPE_CLASS_PLT) \ | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY)) +#else +#define elf_machine_type_class(type) \ + ((((type) == R_ARM_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT) \ + | (((type) == R_ARM_COPY) * ELF_RTYPE_CLASS_COPY)) +#endif /* A reloc type used for ld.so cmdline arg lookups to reject PLT entries. */ #define ELF_MACHINE_JMP_SLOT R_ARM_JUMP_SLOT diff --git a/ports/sysdeps/m68k/m680x0/fpu/math_private.h b/ports/sysdeps/m68k/m680x0/fpu/math_private.h new file mode 100644 index 000000000..3793cff20 --- /dev/null +++ b/ports/sysdeps/m68k/m680x0/fpu/math_private.h @@ -0,0 +1,19 @@ +#ifndef _MATH_PRIVATE_H + +#define math_opt_barrier(x) \ +({ __typeof (x) __x; \ + __asm ("" : "=f" (__x) : "0" (x)); \ + __x; }) +#define math_force_eval(x) \ +do \ + { \ + __typeof (x) __x = (x); \ + if (sizeof (x) <= sizeof (double)) \ + __asm __volatile ("" : : "m" (__x)); \ + else \ + __asm __volatile ("" : : "f" (__x)); \ + } \ +while (0) + +#include <math/math_private.h> +#endif diff --git a/ports/sysdeps/m68k/m680x0/fpu/sincostab.c b/ports/sysdeps/m68k/m680x0/fpu/sincostab.c new file mode 100644 index 000000000..1cc893170 --- /dev/null +++ b/ports/sysdeps/m68k/m680x0/fpu/sincostab.c @@ -0,0 +1 @@ +/* Not needed. */ diff --git a/ports/sysdeps/unix/arm/sysdep.S b/ports/sysdeps/unix/arm/sysdep.S index dcd3ce252..2a534baf8 100644 --- a/ports/sysdeps/unix/arm/sysdep.S +++ b/ports/sysdeps/unix/arm/sysdep.S @@ -42,6 +42,7 @@ syscall_error: moveq r0, $EAGAIN /* Yes; translate it to EAGAIN. */ #endif +#ifndef IS_IN_rtld mov ip, lr cfi_register (lr, ip) mov r1, r0 @@ -57,6 +58,16 @@ syscall_error: RETINSTR (, ip) 1: .word errno(gottpoff) + (. - 2b - 8) +#elif RTLD_PRIVATE_ERRNO + ldr r1, 1f +0: str r0, [pc, r1] + mvn r0, $0 + DO_RET(r14) + +1: .word C_SYMBOL_NAME(rtld_errno) - 0b - 8 +#else +#error "Unsupported non-TLS case" +#endif #undef __syscall_error END (__syscall_error) |