summaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2011-10-26 16:46:37 +0000
committerjoseph <joseph@7b3dc134-2b1b-0410-93df-9e9f96275f8d>2011-10-26 16:46:37 +0000
commit6e872682bccee956e13e018651be551bb89647de (patch)
tree3d1ba9d6d3933466be9a998cee1709fe2e7c72ba /ports
parent5cdb7e63b5262d2a30d11916242fb6c33746d350 (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.arm5
-rw-r--r--ports/ChangeLog.m68k6
-rw-r--r--ports/sysdeps/arm/dl-machine.h8
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/math_private.h19
-rw-r--r--ports/sysdeps/m68k/m680x0/fpu/sincostab.c1
-rw-r--r--ports/sysdeps/unix/arm/sysdep.S11
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)