This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.17-308-g365261c


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  365261c37ff9156372a32f4ab3f07dcfbd72217e (commit)
       via  6ccd0107f3303732409aadffc3bac0e741f1eac4 (commit)
       via  783a65c253b144cd7b500720cf37bbddaf861a03 (commit)
       via  63cc0e75eadde85676bdde0fe8c90b540c200465 (commit)
       via  c98ec0b97f5223b1788adde6c25e9f7963efba48 (commit)
       via  8a0018d62f3f25d3c36eb45a92a1c64023695b6c (commit)
       via  60812ba09d346d2d355bd8272c5e75ca55bc8f03 (commit)
      from  8d19fe64eeeece42639c65f9a73558f89ffbe7bb (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=365261c37ff9156372a32f4ab3f07dcfbd72217e

commit 365261c37ff9156372a32f4ab3f07dcfbd72217e
Author: Richard Henderson <rth@twiddle.net>
Date:   Wed Feb 13 20:32:14 2013 -0800

    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.

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 33a1f57..28ec8f9 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -37,6 +37,17 @@
 	* sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET): Likewise.
 	* sysdeps/unix/sysv/linux/arm/vfork.S (__vfork): Likewise.
 
+	* ports/sysdeps/arm/__longjmp.S: Define NO_THUMB before <sysdep.h>
+	* sysdeps/arm/crti.S, sysdeps/arm/crtn.S: Likewise.
+	* sysdeps/arm/dl-trampoline.S: Likewise.
+	* sysdeps/arm/memcpy.S: Likewise.
+	* sysdeps/arm/memmove.S: Likewise.
+	* sysdeps/arm/memset.S: Likewise.
+	* sysdeps/arm/setjmp.S: Likewise.
+	* sysdeps/arm/strlen.S: Likewise.
+	* sysdeps/unix/sysv/linux/arm/____longjmp_chk.S: Likewise.
+	* sysdeps/unix/sysv/linux/arm/setcontext.S: Likewise.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
index 3d6e114..a3a2a8a 100644
--- a/ports/sysdeps/arm/__longjmp.S
+++ b/ports/sysdeps/arm/__longjmp.S
@@ -16,6 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* ??? Needs more rearrangement for the LDM to handle thumb mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 #define _SETJMP_H
 #define _ASM
diff --git a/ports/sysdeps/arm/crti.S b/ports/sysdeps/arm/crti.S
index 44e20f0..1d55ae2 100644
--- a/ports/sysdeps/arm/crti.S
+++ b/ports/sysdeps/arm/crti.S
@@ -38,6 +38,8 @@
    they can be called as functions.  The symbols _init and _fini are
    magic and cause the linker to emit DT_INIT and DT_FINI.  */
 
+/* Always build .init and .fini sections in ARM mode.  */
+#define NO_THUMB
 #include <libc-symbols.h>
 #include <sysdep.h>
 
diff --git a/ports/sysdeps/arm/crtn.S b/ports/sysdeps/arm/crtn.S
index 5ff3661..a01eb01 100644
--- a/ports/sysdeps/arm/crtn.S
+++ b/ports/sysdeps/arm/crtn.S
@@ -33,6 +33,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* Always build .init and .fini sections in ARM mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 /* crtn.S puts function epilogues in the .init and .fini sections
diff --git a/ports/sysdeps/arm/dl-trampoline.S b/ports/sysdeps/arm/dl-trampoline.S
index 6d41ebd..561d8ae 100644
--- a/ports/sysdeps/arm/dl-trampoline.S
+++ b/ports/sysdeps/arm/dl-trampoline.S
@@ -16,6 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* ??? Needs more rearrangement for the LDM to handle thumb mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 #include <libc-symbols.h>
 
diff --git a/ports/sysdeps/arm/memcpy.S b/ports/sysdeps/arm/memcpy.S
index d8164b4..98b9b47 100644
--- a/ports/sysdeps/arm/memcpy.S
+++ b/ports/sysdeps/arm/memcpy.S
@@ -17,6 +17,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* Thumb requires excessive IT insns here.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 /*
diff --git a/ports/sysdeps/arm/memmove.S b/ports/sysdeps/arm/memmove.S
index d33c1ce..059ca7a 100644
--- a/ports/sysdeps/arm/memmove.S
+++ b/ports/sysdeps/arm/memmove.S
@@ -17,6 +17,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* Thumb requires excessive IT insns here.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 /*
diff --git a/ports/sysdeps/arm/memset.S b/ports/sysdeps/arm/memset.S
index 3152a84..9924cb911 100644
--- a/ports/sysdeps/arm/memset.S
+++ b/ports/sysdeps/arm/memset.S
@@ -16,6 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* Thumb requires excessive IT insns here.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 /* void *memset (dstpp, c, len) */
diff --git a/ports/sysdeps/arm/setjmp.S b/ports/sysdeps/arm/setjmp.S
index baa02be..6776cab 100644
--- a/ports/sysdeps/arm/setjmp.S
+++ b/ports/sysdeps/arm/setjmp.S
@@ -16,6 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* ??? Needs more rearrangement for the STM to handle thumb mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 #define _SETJMP_H
 #define _ASM
diff --git a/ports/sysdeps/arm/strlen.S b/ports/sysdeps/arm/strlen.S
index 15e9221..2b947e2 100644
--- a/ports/sysdeps/arm/strlen.S
+++ b/ports/sysdeps/arm/strlen.S
@@ -16,6 +16,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* Thumb requires excessive IT insns here.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 /* size_t strlen(const char *S)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
index bdcfa20..29edec6 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/____longjmp_chk.S
@@ -15,6 +15,8 @@
    License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* ??? Needs more rearrangement for the LDM to handle thumb mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 
 	.section .rodata.str1.1,"aMS",%progbits,1
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
index edd17bc..b3148c8 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
@@ -15,6 +15,8 @@
    License along with the GNU C Library; if not, see
    <http://www.gnu.org/licenses/>.  */
 
+/* ??? Needs more rearrangement for the LDM to handle thumb mode.  */
+#define NO_THUMB
 #include <sysdep.h>
 #include <rtld-global-offsets.h>
 

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=6ccd0107f3303732409aadffc3bac0e741f1eac4

commit 6ccd0107f3303732409aadffc3bac0e741f1eac4
Author: Richard Henderson <rth@twiddle.net>
Date:   Wed Feb 13 20:27:09 2013 -0800

    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.

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index fe0fd46..33a1f57 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -26,6 +26,17 @@
 	* sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
 	(_Unwind_Resume): Likewise.
 
+	* ports/sysdeps/arm/arm-mcount.S: Always use unified syntax and
+	always add IT markup.
+	* sysdeps/unix/sysv/linux/arm/mmap64.S (__mmap64): Likewise.
+	* sysdeps/arm/dl-tlsdesc.S (_dl_tlsdesc_dynamic): Add IT markup.
+	* sysdeps/unix/arm/sysdep.S (__syscall_error): Likewise.
+	* sysdeps/unix/sysv/linux/arm/clone.S (__clone): Likewise.
+	* sysdeps/unix/sysv/linux/arm/mmap.S (__mmap): Likewise.
+	* sysdeps/unix/sysv/linux/arm/syscall.S (syscall): Likewise.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h (PSEUDO_RET): Likewise.
+	* sysdeps/unix/sysv/linux/arm/vfork.S (__vfork): Likewise.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/arm-mcount.S b/ports/sysdeps/arm/arm-mcount.S
index 6c24271..679d042 100644
--- a/ports/sysdeps/arm/arm-mcount.S
+++ b/ports/sysdeps/arm/arm-mcount.S
@@ -24,8 +24,8 @@
 
 #ifdef __thumb2__
 	.thumb
-	.syntax unified
 #endif
+	.syntax unified
 
 
 /* Use an assembly stub with a special ABI.  The calling lr has been
@@ -77,15 +77,10 @@ ENTRY(_mcount)
 	cfi_rel_offset (r3, 12)
 	cfi_rel_offset (fp, 16)
 	cfi_rel_offset (lr, 20)
-#ifdef __thumb2__
 	movs r0, fp
 	ittt ne
 	ldrne r0, [r0, #-4]
-#else
-	movs fp, fp
-	ldrne r0, [fp, #-4]
-#endif
-	movnes r1, lr
+	movsne r1, lr
 	blne __mcount_internal
 #ifdef __thumb2__
 	ldmia sp!, {r0, r1, r2, r3, fp, pc}
diff --git a/ports/sysdeps/arm/dl-tlsdesc.S b/ports/sysdeps/arm/dl-tlsdesc.S
index 6675992..7b4c8df 100644
--- a/ports/sysdeps/arm/dl-tlsdesc.S
+++ b/ports/sysdeps/arm/dl-tlsdesc.S
@@ -116,6 +116,7 @@ _dl_tlsdesc_dynamic:
 	ldr	r3, [r1]
 	ldr	r2, [r0, r3, lsl #3]
 	cmn	r2, #1
+	ittt	ne
 	ldrne	r3, [r1, #4]
 	addne	r3, r2, r3
 	rsbne	r0, r4, r3
diff --git a/ports/sysdeps/unix/arm/sysdep.S b/ports/sysdeps/unix/arm/sysdep.S
index 99bca9f..40e4d80 100644
--- a/ports/sysdeps/unix/arm/sysdep.S
+++ b/ports/sysdeps/unix/arm/sysdep.S
@@ -31,8 +31,9 @@ __syscall_error:
 	/* We translate the system's EWOULDBLOCK error into EAGAIN.
 	   The GNU C library always defines EWOULDBLOCK==EAGAIN.
 	   EWOULDBLOCK_sys is the original number.  */
-	cmp r0, $EWOULDBLOCK_sys /* Is it the old EWOULDBLOCK?  */
-	moveq r0, $EAGAIN	/* Yes; translate it to EAGAIN.  */
+	cmp	r0, $EWOULDBLOCK_sys /* Is it the old EWOULDBLOCK?  */
+	it	eq
+	moveq	r0, $EAGAIN	/* Yes; translate it to EAGAIN.  */
 #endif
 
 #ifndef IS_IN_rtld
diff --git a/ports/sysdeps/unix/sysv/linux/arm/clone.S b/ports/sysdeps/unix/sysv/linux/arm/clone.S
index de25db1..732a3ff 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/clone.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/clone.S
@@ -33,6 +33,7 @@
 ENTRY(__clone)
 	@ sanity check args
 	cmp	r0, #0
+	ite	ne
 	cmpne	r1, #0
 	moveq	r0, #-EINVAL
 	beq	PLTJMP(syscall_error)
@@ -78,8 +79,9 @@ PSEUDO_END (__clone)
 	sub	pc, r0, #31
 	mov	r1, r0
 	tst	ip, #CLONE_VM
-	movne	r0, #-1
 	ldr	r7, =SYS_ify(getpid)
+	ite	ne
+	movne	r0, #-1
 	swieq	0x0
 	str	r0, [r1, #PID_OFFSET]
 	str	r0, [r1, #TID_OFFSET]
diff --git a/ports/sysdeps/unix/sysv/linux/arm/mmap.S b/ports/sysdeps/unix/sysv/linux/arm/mmap.S
index fa8a2b8..68560b0 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/mmap.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/mmap.S
@@ -51,6 +51,7 @@ ENTRY (__mmap)
 	cfi_restore (r5)
 
 	cmn	r0, $4096
+	it	cc
 	RETINSTR(cc, lr)
 	b	PLTJMP(syscall_error)
 
diff --git a/ports/sysdeps/unix/sysv/linux/arm/mmap64.S b/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
index 2eafd1b..dcbab3a 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/mmap64.S
@@ -17,6 +17,8 @@
 
 #include <sysdep.h>
 
+	.syntax unified
+
 #define	EINVAL		22
 
 #ifdef __ARMEB__
@@ -42,7 +44,8 @@ ENTRY (__mmap64)
 	cfi_remember_state
 	movs	r4, ip, lsl $20		@ check that offset is page-aligned
 	mov	ip, ip, lsr $12
-	moveqs	r4, r5, lsr $12		@ check for overflow
+	it	eq
+	movseq	r4, r5, lsr $12		@ check for overflow
 	bne	.Linval
 	ldr	r4, [sp, $8]		@ load fd
 	orr	r5, ip, r5, lsl $20	@ compose page offset
@@ -52,6 +55,7 @@ ENTRY (__mmap64)
 	cfi_adjust_cfa_offset (-8)
 	cfi_restore (r4)
 	cfi_restore (r5)
+	it	cc
 	RETINSTR(cc, lr)
 	b	PLTJMP(syscall_error)
 
diff --git a/ports/sysdeps/unix/sysv/linux/arm/syscall.S b/ports/sysdeps/unix/sysv/linux/arm/syscall.S
index c6dd57d..665ecb4 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/syscall.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/syscall.S
@@ -42,6 +42,7 @@ ENTRY (syscall)
 	cfi_restore (r6)
 	cfi_restore (r7)
 	cmn	r0, #4096
+	it	cc
 	RETINSTR(cc, lr)
 	b	PLTJMP(syscall_error)
 PSEUDO_END (syscall)
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
index f9b3443..f40cb95 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -64,6 +64,7 @@
 	cmn	r0, $4096;
 
 #define PSEUDO_RET					\
+	it	cc;					\
 	RETINSTR(cc, lr);				\
 	b	PLTJMP(SYSCALL_ERROR)
 #undef ret
diff --git a/ports/sysdeps/unix/sysv/linux/arm/vfork.S b/ports/sysdeps/unix/sysv/linux/arm/vfork.S
index 4f84c57..ae931f7 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/vfork.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/vfork.S
@@ -51,6 +51,7 @@ ENTRY (__vfork)
 	RESTORE_PID
 #endif
 	cmn	a1, #4096
+	it	cc
 	RETINSTR(cc, lr)
 
 	b	PLTJMP(SYSCALL_ERROR)

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=783a65c253b144cd7b500720cf37bbddaf861a03

commit 783a65c253b144cd7b500720cf37bbddaf861a03
Author: Richard Henderson <rth@twiddle.net>
Date:   Tue Feb 12 17:15:52 2013 -0800

    arm: Introduce and use PC_OFS
    
    Scour the source for raw "-8" adjustments that are related to the
    offset created by reading the pc.

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index da15413..fe0fd46 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -11,6 +11,21 @@
 	* ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h: Likewise.
 	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
 
+	* sysdeps/arm/sysdep.h (PC_OFS): New macros.
+	* sysdeps/arm/__longjmp.S (__longjmp): Use PC_OFS.
+	* sysdeps/arm/setjmp.S (__sigsetjmp): Likewise.
+	* sysdeps/unix/arm/sysdep.S (__syscall_error): Likewise.
+	* sysdeps/unix/sysv/linux/arm/getcontext.S (__getcontext): Likewise.
+	* sysdeps/unix/sysv/linux/arm/setcontext.S (__startcontext): Likewise.
+	* sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+	(SINGLE_THREAD_P): Likewise.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h
+	(SYSCALL_ERROR_HANDLER): Likewise.
+	* sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
+	(_Unwind_Resume): Use stringified PC_OFS.
+	* sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
+	(_Unwind_Resume): Likewise.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/__longjmp.S b/ports/sysdeps/arm/__longjmp.S
index 5c04f36..3d6e114 100644
--- a/ports/sysdeps/arm/__longjmp.S
+++ b/ports/sysdeps/arm/__longjmp.S
@@ -105,12 +105,12 @@ ENTRY (__longjmp)
 
 #ifdef NEED_HWCAP
 # ifdef IS_IN_rtld
-1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_local_ro:
 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
 # else
 #  ifdef PIC
-1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long	C_SYMBOL_NAME(_rtld_global_ro)(GOT)
 #  else
diff --git a/ports/sysdeps/arm/setjmp.S b/ports/sysdeps/arm/setjmp.S
index 4b7542a..baa02be 100644
--- a/ports/sysdeps/arm/setjmp.S
+++ b/ports/sysdeps/arm/setjmp.S
@@ -91,12 +91,12 @@ ENTRY (__sigsetjmp)
 
 #ifdef NEED_HWCAP
 # ifdef IS_IN_rtld
-1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_local_ro:
 	.long	C_SYMBOL_NAME(_rtld_local_ro)(GOTOFF)
 # else
 #  ifdef PIC
-1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:	.long	_GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long	C_SYMBOL_NAME(_rtld_global_ro)(GOT)
 #  else
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
index f5ddab0..4af7429 100644
--- a/ports/sysdeps/arm/sysdep.h
+++ b/ports/sysdeps/arm/sysdep.h
@@ -118,3 +118,11 @@
 	.eabi_attribute 24, 1
 
 #endif	/* __ASSEMBLER__ */
+
+/* This number is the offset from the pc at the current location.  */
+/* ??? At the moment we're not turning on thumb mode in assembly.  */
+#if defined(__thumb__) && !defined(__ASSEMBLER__)
+# define PC_OFS  4
+#else
+# define PC_OFS  8
+#endif
diff --git a/ports/sysdeps/unix/arm/sysdep.S b/ports/sysdeps/unix/arm/sysdep.S
index da07d85..99bca9f 100644
--- a/ports/sysdeps/unix/arm/sysdep.S
+++ b/ports/sysdeps/unix/arm/sysdep.S
@@ -50,14 +50,14 @@ __syscall_error:
 	mvn r0, #0
 	RETINSTR (, ip)
 
-1:	.word errno(gottpoff) + (. - 2b - 8)
+1:	.word errno(gottpoff) + (. - 2b - PC_OFS)
 #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
+1:	.word C_SYMBOL_NAME(rtld_errno) - 0b - PC_OFS
 #else
 #error "Unsupported non-TLS case"
 #endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/getcontext.S b/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
index f7857c1..fa00c0b 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/getcontext.S
@@ -103,7 +103,7 @@ ENTRY(__getcontext)
 END(__getcontext)
 
 #ifdef PIC
-1:      .long   _GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:      .long   _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long   C_SYMBOL_NAME(_rtld_global_ro)(GOT)
 #else
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
index 4bd79d4..df85d51 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
@@ -208,7 +208,7 @@ extern int __local_multiple_threads attribute_hidden;
 	ldr ip, [pc, ip];						\
 	teq ip, #0;
 #   define PSEUDO_PROLOGUE						\
-  1:	.word	__local_multiple_threads - 2f - 8;
+  1:	.word	__local_multiple_threads - 2f - PC_OFS;
 #  endif
 # else
 /*  There is no __local_multiple_threads for librt, so use the TCB.  */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
index 58ca9ac..caa6a26 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-forcedunwind.c
@@ -84,6 +84,9 @@ __unwind_freeres (void)
    ARM unwinder relies on register state at entrance.  So we write this in
    assembly.  */
 
+#define STR1(S) #S
+#define STR(S)  STR1(S)
+
 asm (
 "	.globl	_Unwind_Resume\n"
 "	.type	_Unwind_Resume, %function\n"
@@ -118,11 +121,7 @@ asm (
 "	b	5b\n"
 "	" CFI_ENDPROC "\n"
 "	.align 2\n"
-#ifdef __thumb2__
-"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - 4\n"
-#else
-"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - 8\n"
-#endif
+"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - " STR (PC_OFS) "\n"
 "2:	.word	libgcc_s_resume(GOTOFF)\n"
 "	.size	_Unwind_Resume, .-_Unwind_Resume\n"
 );
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
index 0a3ad95..1211599 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/unwind-resume.c
@@ -47,6 +47,9 @@ init (void)
    ARM unwinder relies on register state at entrance.  So we write this in
    assembly.  */
 
+#define STR1(S) #S
+#define STR(S)  STR1(S)
+
 asm (
 "	.globl	_Unwind_Resume\n"
 "	.type	_Unwind_Resume, %function\n"
@@ -81,11 +84,7 @@ asm (
 "	b	5b\n"
 "	" CFI_ENDPROC "\n"
 "	.align 2\n"
-#ifdef __thumb2__
-"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - 4\n"
-#else
-"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - 8\n"
-#endif
+"1:	.word	_GLOBAL_OFFSET_TABLE_ - 3b - " STR (PC_OFS) "\n"
 "2:	.word	libgcc_s_resume(GOTOFF)\n"
 "	.size	_Unwind_Resume, .-_Unwind_Resume\n"
 );
diff --git a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
index 8e71f5b..edd17bc 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
+++ b/ports/sysdeps/unix/sysv/linux/arm/setcontext.S
@@ -93,7 +93,7 @@ ENTRY(__startcontext)
 END(__startcontext)
 
 #ifdef PIC
-1:      .long   _GLOBAL_OFFSET_TABLE_ - 0b - 8
+1:      .long   _GLOBAL_OFFSET_TABLE_ - 0b - PC_OFS
 .Lrtld_global_ro:
 	.long   C_SYMBOL_NAME(_rtld_global_ro)(GOT)
 #else
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
index 676a143..f9b3443 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -114,7 +114,7 @@ __local_syscall_error:						\
 0:     str     r0, [pc, r1];					\
        mvn     r0, #0;						\
        DO_RET(lr);						\
-1:     .word C_SYMBOL_NAME(rtld_errno) - 0b - 8;
+1:     .word C_SYMBOL_NAME(rtld_errno) - 0b - PC_OFS;
 # else
 #  if defined(__ARM_ARCH_4T__) && defined(__THUMB_INTERWORK__)
 #   define POP_PC \

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=63cc0e75eadde85676bdde0fe8c90b540c200465

commit 63cc0e75eadde85676bdde0fe8c90b540c200465
Author: Richard Henderson <rth@twiddle.net>
Date:   Wed Feb 27 23:04:17 2013 -0800

    arm: Tidy whitespace in sysdep.h files

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index cca2c69..da15413 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -7,6 +7,10 @@
 	* sysdeps/unix/sysv/linux/arm/Makefile [elf] (sysdep-rtld-routines):
 	Include libc-do-syscall.
 
+	* sysdeps/arm/sysdep.h: Fix assembly whitespace.
+	* ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h: Likewise.
+	* sysdeps/unix/sysv/linux/arm/sysdep.h: Likewise.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/sysdep.h b/ports/sysdeps/arm/sysdep.h
index 6598f51..f5ddab0 100644
--- a/ports/sysdeps/arm/sysdep.h
+++ b/ports/sysdeps/arm/sysdep.h
@@ -58,43 +58,43 @@
 #endif
 
 /* Define an entry point visible from C.  */
-#define	ENTRY(name)							      \
-  .globl C_SYMBOL_NAME(name);						      \
-  .type C_SYMBOL_NAME(name),%function;					      \
-  .align ALIGNARG(4);							      \
-  C_LABEL(name)								      \
-  CFI_SECTIONS;								      \
-  cfi_startproc;							      \
-  CALL_MCOUNT
-
-#define CFI_SECTIONS							      \
-  .cfi_sections .debug_frame
+#define	ENTRY(name)					\
+	.globl	C_SYMBOL_NAME(name);			\
+	.type	C_SYMBOL_NAME(name),%function;		\
+	.align	ALIGNARG(4);				\
+  C_LABEL(name)						\
+	CFI_SECTIONS;					\
+	cfi_startproc;					\
+	CALL_MCOUNT
+
+#define CFI_SECTIONS					\
+	.cfi_sections .debug_frame
 
 #undef	END
-#define END(name)							      \
-  cfi_endproc;								      \
-  ASM_SIZE_DIRECTIVE(name)
+#define END(name)					\
+	cfi_endproc;					\
+	ASM_SIZE_DIRECTIVE(name)
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
 #ifdef	PROF
 /* Call __gnu_mcount_nc if GCC >= 4.4.  */
 #if __GNUC_PREREQ(4,4)
-#define CALL_MCOUNT \
-  str	lr,[sp, #-4]!; \
-  cfi_adjust_cfa_offset (4); \
-  cfi_rel_offset (lr, 0); \
-  bl PLTJMP(mcount); \
-  cfi_adjust_cfa_offset (-4); \
-  cfi_restore (lr)
+#define CALL_MCOUNT					\
+	str	lr,[sp, #-4]!;				\
+	cfi_adjust_cfa_offset (4);			\
+	cfi_rel_offset (lr, 0);				\
+	bl	PLTJMP(mcount);				\
+	cfi_adjust_cfa_offset (-4);			\
+	cfi_restore (lr)
 #else /* else call _mcount */
-#define CALL_MCOUNT \
-  str	lr,[sp, #-4]!; \
-  cfi_adjust_cfa_offset (4); \
-  cfi_rel_offset (lr, 0); \
-  bl PLTJMP(mcount); \
-  ldr lr, [sp], #4; \
-  cfi_adjust_cfa_offset (-4); \
-  cfi_restore (lr)
+#define CALL_MCOUNT					\
+	str	lr,[sp, #-4]!;				\
+	cfi_adjust_cfa_offset (4);			\
+	cfi_rel_offset (lr, 0);				\
+	bl	PLTJMP(mcount);				\
+	ldr	lr, [sp], #4;				\
+	cfi_adjust_cfa_offset (-4);			\
+	cfi_restore (lr)
 #endif
 #else
 #define CALL_MCOUNT		/* Do nothing.  */
diff --git a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
index 5e07b8b..4bd79d4 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/nptl/sysdep-cancel.h
@@ -30,161 +30,157 @@
 
 # undef PSEUDO
 # define PSEUDO(name, syscall_name, args)				\
-  .section ".text";							\
-    PSEUDO_PROLOGUE;							\
-  .type __##syscall_name##_nocancel,%function;				\
-  .globl __##syscall_name##_nocancel;					\
-  __##syscall_name##_nocancel:						\
-    CFI_SECTIONS;							\
-    cfi_startproc;							\
-    DO_CALL (syscall_name, args);					\
-    cmn r0, $4096;							\
-    PSEUDO_RET;								\
-    cfi_endproc;							\
-  .size __##syscall_name##_nocancel,.-__##syscall_name##_nocancel;	\
+	.text;								\
+	PSEUDO_PROLOGUE;						\
+  ENTRY (__##syscall_name##_nocancel);					\
+	CFI_SECTIONS;							\
+	DO_CALL (syscall_name, args);					\
+	cmn	r0, $4096;						\
+	PSEUDO_RET;							\
+  END (__##syscall_name##_nocancel);					\
   ENTRY (name);								\
-    SINGLE_THREAD_P;							\
-    DOARGS_##args;							\
-    bne .Lpseudo_cancel;						\
-    cfi_remember_state;							\
-    ldr r7, =SYS_ify (syscall_name);					\
-    swi 0x0;								\
-    UNDOARGS_##args;							\
-    cmn r0, $4096;							\
-    PSEUDO_RET;								\
-    cfi_restore_state;							\
+	SINGLE_THREAD_P;						\
+	DOARGS_##args;							\
+	bne .Lpseudo_cancel;						\
+	cfi_remember_state;						\
+	ldr	r7, =SYS_ify (syscall_name);				\
+	swi	0x0;							\
+	UNDOARGS_##args;						\
+	cmn	r0, $4096;						\
+	PSEUDO_RET;							\
+	cfi_restore_state;						\
   .Lpseudo_cancel:							\
-    .fnstart;		/* matched by the .fnend in UNDOARGS below.  */	\
-    DOCARGS_##args;	/* save syscall args etc. around CENABLE.  */	\
-    CENABLE;								\
-    mov ip, r0;		/* put mask in safe place.  */			\
-    UNDOCARGS_##args;	/* restore syscall args.  */			\
-    ldr r7, =SYS_ify (syscall_name);					\
-    swi 0x0;		/* do the call.  */				\
-    mov r7, r0;		/* save syscall return value.  */		\
-    mov r0, ip;		/* get mask back.  */				\
-    CDISABLE;								\
-    mov r0, r7;		/* retrieve return value.  */			\
-    RESTORE_LR_##args;							\
-    UNDOARGS_##args;							\
-    cmn r0, $4096
+	.fnstart;	/* matched by the .fnend in UNDOARGS below.  */	\
+	DOCARGS_##args;	/* save syscall args etc. around CENABLE.  */	\
+	CENABLE;							\
+	mov ip, r0;		/* put mask in safe place.  */		\
+	UNDOCARGS_##args;	/* restore syscall args.  */		\
+	ldr	r7, =SYS_ify (syscall_name);				\
+	swi	0x0;		/* do the call.  */			\
+	mov	r7, r0;		/* save syscall return value.  */	\
+	mov	r0, ip;		/* get mask back.  */			\
+	CDISABLE;							\
+	mov	r0, r7;		/* retrieve return value.  */		\
+	RESTORE_LR_##args;						\
+	UNDOARGS_##args;						\
+	cmn	r0, $4096
 
 /* DOARGS pushes eight bytes on the stack for five arguments, twelve bytes for
    six arguments, and four bytes for fewer.  In order to preserve doubleword
    alignment, sometimes we must save an extra register.  */
 
-# define RESTART_UNWIND \
-  .fnend; \
-  .fnstart; \
-  .save {r7}; \
-  .save {lr}
-
-# define DOCARGS_0 \
-  .save {r7}; \
-  str lr, [sp, #-4]!; \
-  cfi_adjust_cfa_offset (4); \
-  cfi_rel_offset (lr, 0); \
-  .save {lr}
+# define RESTART_UNWIND				\
+	.fnend;					\
+	.fnstart;				\
+	.save	{r7};				\
+	.save	{lr}
+
+# define DOCARGS_0				\
+	.save {r7};				\
+	str	lr, [sp, #-4]!;			\
+	cfi_adjust_cfa_offset (4);		\
+	cfi_rel_offset (lr, 0);			\
+	.save	{lr}
 # define UNDOCARGS_0
-# define RESTORE_LR_0 \
-  ldr lr, [sp], #4; \
-  cfi_adjust_cfa_offset (-4); \
-  cfi_restore (lr)
-
-# define DOCARGS_1 \
-  .save {r7}; \
-  stmfd sp!, {r0, r1, lr}; \
-  cfi_adjust_cfa_offset (12); \
-  cfi_rel_offset (lr, 8); \
-  .save {lr}; \
-  .pad #8
-# define UNDOCARGS_1 \
-  ldr r0, [sp], #8; \
-  cfi_adjust_cfa_offset (-8); \
-  RESTART_UNWIND
-# define RESTORE_LR_1 \
-  RESTORE_LR_0
-
-# define DOCARGS_2 \
-  .save {r7}; \
-  stmfd sp!, {r0, r1, lr}; \
-  cfi_adjust_cfa_offset (12); \
-  cfi_rel_offset (lr, 8); \
-  .save {lr}; \
-  .pad #8
-# define UNDOCARGS_2 \
-  ldmfd sp!, {r0, r1}; \
-  cfi_adjust_cfa_offset (-8); \
-  RESTART_UNWIND
-# define RESTORE_LR_2 \
-  RESTORE_LR_0
-
-# define DOCARGS_3 \
-  .save {r7}; \
-  stmfd sp!, {r0, r1, r2, r3, lr}; \
-  cfi_adjust_cfa_offset (20); \
-  cfi_rel_offset (lr, 16); \
-  .save {lr}; \
-  .pad #16
-# define UNDOCARGS_3 \
-  ldmfd sp!, {r0, r1, r2, r3}; \
-  cfi_adjust_cfa_offset (-16); \
-  RESTART_UNWIND
-# define RESTORE_LR_3 \
-  RESTORE_LR_0
-
-# define DOCARGS_4 \
-  .save {r7}; \
-  stmfd sp!, {r0, r1, r2, r3, lr}; \
-  cfi_adjust_cfa_offset (20); \
-  cfi_rel_offset (lr, 16); \
-  .save {lr}; \
-  .pad #16
-# define UNDOCARGS_4 \
-  ldmfd sp!, {r0, r1, r2, r3}; \
-  cfi_adjust_cfa_offset (-16); \
-  RESTART_UNWIND
-# define RESTORE_LR_4 \
-  RESTORE_LR_0
+# define RESTORE_LR_0				\
+	ldr	lr, [sp], #4;			\
+	cfi_adjust_cfa_offset (-4);		\
+	cfi_restore (lr)
+
+# define DOCARGS_1				\
+	.save	{r7};				\
+	stmfd	sp!, {r0, r1, lr};		\
+	cfi_adjust_cfa_offset (12);		\
+	cfi_rel_offset (lr, 8);			\
+	.save	{lr};				\
+	.pad	#8
+# define UNDOCARGS_1				\
+	ldr r0, [sp], #8;			\
+	cfi_adjust_cfa_offset (-8);		\
+	RESTART_UNWIND
+# define RESTORE_LR_1				\
+	RESTORE_LR_0
+
+# define DOCARGS_2				\
+	.save	{r7};				\
+	stmfd	sp!, {r0, r1, lr};		\
+	cfi_adjust_cfa_offset (12);		\
+	cfi_rel_offset (lr, 8);			\
+	.save	{lr};				\
+	.pad	#8
+# define UNDOCARGS_2				\
+	ldmfd	sp!, {r0, r1};			\
+	cfi_adjust_cfa_offset (-8);		\
+	RESTART_UNWIND
+# define RESTORE_LR_2				\
+	RESTORE_LR_0
+
+# define DOCARGS_3				\
+	.save	{r7};				\
+	stmfd	sp!, {r0, r1, r2, r3, lr};	\
+	cfi_adjust_cfa_offset (20);		\
+	cfi_rel_offset (lr, 16);		\
+	.save	{lr};				\
+	.pad	#16
+# define UNDOCARGS_3				\
+	ldmfd	sp!, {r0, r1, r2, r3};		\
+	cfi_adjust_cfa_offset (-16);		\
+	RESTART_UNWIND
+# define RESTORE_LR_3				\
+	RESTORE_LR_0
+
+# define DOCARGS_4				\
+	.save	{r7};				\
+	stmfd	sp!, {r0, r1, r2, r3, lr};	\
+	cfi_adjust_cfa_offset (20);		\
+	cfi_rel_offset (lr, 16);		\
+	.save	{lr};				\
+	.pad	#16
+# define UNDOCARGS_4				\
+	ldmfd	sp!, {r0, r1, r2, r3};		\
+	cfi_adjust_cfa_offset (-16);		\
+	RESTART_UNWIND
+# define RESTORE_LR_4				\
+	RESTORE_LR_0
 
 /* r4 is only stmfd'ed for correct stack alignment.  */
-# define DOCARGS_5 \
-  .save {r4, r7}; \
-  stmfd sp!, {r0, r1, r2, r3, r4, lr}; \
-  cfi_adjust_cfa_offset (24); \
-  cfi_rel_offset (lr, 20); \
-  .save {lr}; \
-  .pad #20
-# define UNDOCARGS_5 \
-  ldmfd sp!, {r0, r1, r2, r3}; \
-  cfi_adjust_cfa_offset (-16); \
-  .fnend; \
-  .fnstart; \
-  .save {r4, r7}; \
-  .save {lr}; \
-  .pad #4
-# define RESTORE_LR_5 \
-  ldmfd sp!, {r4, lr}; \
-  cfi_adjust_cfa_offset (-8); \
-  /* r4 will be marked as restored later.  */ \
-  cfi_restore (lr)
-
-# define DOCARGS_6 \
-  .save {r4, r5, r7}; \
-  stmfd sp!, {r0, r1, r2, r3, lr}; \
-  cfi_adjust_cfa_offset (20); \
-  cfi_rel_offset (lr, 16); \
-  .save {lr}; \
-  .pad #16
-# define UNDOCARGS_6 \
-  ldmfd sp!, {r0, r1, r2, r3}; \
-  cfi_adjust_cfa_offset (-16); \
-  .fnend; \
-  .fnstart; \
-  .save {r4, r5, r7}; \
-  .save {lr};
-# define RESTORE_LR_6 \
-  RESTORE_LR_0
+# define DOCARGS_5				\
+	.save	{r4, r7};			\
+	stmfd	sp!, {r0, r1, r2, r3, r4, lr};	\
+	cfi_adjust_cfa_offset (24);		\
+	cfi_rel_offset (lr, 20);		\
+	.save	{lr};				\
+	.pad	#20
+# define UNDOCARGS_5				\
+	ldmfd	sp!, {r0, r1, r2, r3};		\
+	cfi_adjust_cfa_offset (-16);		\
+	.fnend;					\
+	.fnstart;				\
+	.save	{r4, r7};			\
+	.save	{lr};				\
+	.pad	#4
+# define RESTORE_LR_5				\
+	ldmfd sp!, {r4, lr};			\
+	cfi_adjust_cfa_offset (-8);		\
+	/* r4 will be marked as restored later.  */ \
+	cfi_restore (lr)
+
+# define DOCARGS_6				\
+	.save	{r4, r5, r7};			\
+	stmfd	sp!, {r0, r1, r2, r3, lr};	\
+	cfi_adjust_cfa_offset (20);		\
+	cfi_rel_offset (lr, 16);		\
+	.save	{lr};				\
+	.pad	#16
+# define UNDOCARGS_6				\
+	ldmfd	sp!, {r0, r1, r2, r3};		\
+	cfi_adjust_cfa_offset (-16);		\
+	.fnend;					\
+	.fnstart;				\
+	.save	{r4, r5, r7};			\
+	.save	{lr};
+# define RESTORE_LR_6				\
+	RESTORE_LR_0
 
 # ifdef IS_IN_libpthread
 #  define CENABLE	bl PLTJMP(__pthread_enable_asynccancel)
@@ -207,12 +203,12 @@ extern int __local_multiple_threads attribute_hidden;
 #   define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
 #  else
 #   define SINGLE_THREAD_P						\
-  ldr ip, 1b;								\
-2:									\
-  ldr ip, [pc, ip];							\
-  teq ip, #0;
+	ldr	ip, 1b;							\
+  2:									\
+	ldr ip, [pc, ip];						\
+	teq ip, #0;
 #   define PSEUDO_PROLOGUE						\
-  1:  .word __local_multiple_threads - 2f - 8;
+  1:	.word	__local_multiple_threads - 2f - 8;
 #  endif
 # else
 /*  There is no __local_multiple_threads for librt, so use the TCB.  */
@@ -223,15 +219,15 @@ extern int __local_multiple_threads attribute_hidden;
 #  else
 #   define PSEUDO_PROLOGUE
 #   define SINGLE_THREAD_P						\
-  stmfd	sp!, {r0, lr};							\
-  cfi_adjust_cfa_offset (8);						\
-  cfi_rel_offset (lr, 4);						\
-  bl	__aeabi_read_tp;						\
-  ldr	ip, [r0, #MULTIPLE_THREADS_OFFSET];				\
-  ldmfd	sp!, {r0, lr};							\
-  cfi_adjust_cfa_offset (-8);						\
-  cfi_restore (lr);							\
-  teq	ip, #0
+	stmfd	sp!, {r0, lr};						\
+	cfi_adjust_cfa_offset (8);					\
+	cfi_rel_offset (lr, 4);						\
+	bl	__aeabi_read_tp;					\
+	ldr	ip, [r0, #MULTIPLE_THREADS_OFFSET];			\
+	ldmfd	sp!, {r0, lr};						\
+	cfi_adjust_cfa_offset (-8);					\
+	cfi_restore (lr);						\
+	teq	ip, #0
 #   define SINGLE_THREAD_P_PIC(x) SINGLE_THREAD_P
 #  endif
 # endif
diff --git a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
index 6b5bb14..676a143 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
+++ b/ports/sysdeps/unix/sysv/linux/arm/sysdep.h
@@ -57,49 +57,49 @@
    test with -4095.  */
 
 #undef	PSEUDO
-#define	PSEUDO(name, syscall_name, args)				      \
-  .text;								      \
-  ENTRY (name);								      \
-    DO_CALL (syscall_name, args);					      \
-    cmn r0, $4096;
-
-#define PSEUDO_RET							      \
-    RETINSTR(cc, lr);							      \
-    b PLTJMP(SYSCALL_ERROR)
+#define	PSEUDO(name, syscall_name, args)		\
+	.text;						\
+  ENTRY (name);						\
+	DO_CALL (syscall_name, args);			\
+	cmn	r0, $4096;
+
+#define PSEUDO_RET					\
+	RETINSTR(cc, lr);				\
+	b	PLTJMP(SYSCALL_ERROR)
 #undef ret
 #define ret PSEUDO_RET
 
 #undef	PSEUDO_END
-#define	PSEUDO_END(name)						      \
-  SYSCALL_ERROR_HANDLER;						      \
+#define	PSEUDO_END(name)				\
+	SYSCALL_ERROR_HANDLER;				\
   END (name)
 
 #undef	PSEUDO_NOERRNO
-#define	PSEUDO_NOERRNO(name, syscall_name, args)			      \
-  .text;								      \
-  ENTRY (name);								      \
-    DO_CALL (syscall_name, args);
+#define	PSEUDO_NOERRNO(name, syscall_name, args)	\
+	.text;						\
+  ENTRY (name);						\
+	DO_CALL (syscall_name, args);
 
-#define PSEUDO_RET_NOERRNO						      \
-    DO_RET (lr);
+#define PSEUDO_RET_NOERRNO				\
+	DO_RET (lr);
 
 #undef ret_NOERRNO
 #define ret_NOERRNO PSEUDO_RET_NOERRNO
 
 #undef	PSEUDO_END_NOERRNO
-#define	PSEUDO_END_NOERRNO(name)					      \
+#define	PSEUDO_END_NOERRNO(name)			\
   END (name)
 
 /* The function has to return the error code.  */
 #undef	PSEUDO_ERRVAL
-#define	PSEUDO_ERRVAL(name, syscall_name, args) \
-  .text;								      \
-  ENTRY (name)								      \
-    DO_CALL (syscall_name, args);					      \
-    rsb r0, r0, #0
+#define	PSEUDO_ERRVAL(name, syscall_name, args)		\
+	.text;						\
+  ENTRY (name)						\
+	DO_CALL (syscall_name, args);			\
+	rsb	r0, r0, #0
 
 #undef	PSEUDO_END_ERRVAL
-#define	PSEUDO_END_ERRVAL(name) \
+#define	PSEUDO_END_ERRVAL(name)				\
   END (name)
 
 #define ret_ERRVAL PSEUDO_RET_NOERRNO
@@ -192,19 +192,19 @@ __local_syscall_error:						\
    syscalls.  */
 
 #undef	DO_CALL
-#define DO_CALL(syscall_name, args)		\
-    DOARGS_##args;				\
-    ldr r7, =SYS_ify (syscall_name);		\
-    swi 0x0;					\
-    UNDOARGS_##args
+#define DO_CALL(syscall_name, args)			\
+	DOARGS_##args;					\
+	ldr	r7, =SYS_ify (syscall_name);		\
+	swi	0x0;					\
+	UNDOARGS_##args
 
 #undef  DOARGS_0
-#define DOARGS_0 \
-  .fnstart; \
-  str r7, [sp, #-4]!; \
-  cfi_adjust_cfa_offset (4); \
-  cfi_rel_offset (r7, 0); \
-  .save { r7 }
+#define DOARGS_0					\
+	.fnstart;					\
+	str r7, [sp, #-4]!;				\
+	cfi_adjust_cfa_offset (4);			\
+	cfi_rel_offset (r7, 0);				\
+	.save	{ r7 }
 #undef  DOARGS_1
 #define DOARGS_1 DOARGS_0
 #undef  DOARGS_2
@@ -214,44 +214,44 @@ __local_syscall_error:						\
 #undef  DOARGS_4
 #define DOARGS_4 DOARGS_0
 #undef  DOARGS_5
-#define DOARGS_5 \
-  .fnstart; \
-  stmfd sp!, {r4, r7}; \
-  cfi_adjust_cfa_offset (8); \
-  cfi_rel_offset (r4, 0); \
-  cfi_rel_offset (r7, 4); \
-  .save { r4, r7 }; \
-  ldr r4, [sp, #8]
+#define DOARGS_5					\
+	.fnstart;					\
+	stmfd	sp!, {r4, r7};				\
+	cfi_adjust_cfa_offset (8);			\
+	cfi_rel_offset (r4, 0);				\
+	cfi_rel_offset (r7, 4);				\
+	.save	{ r4, r7 };				\
+	ldr	r4, [sp, #8]
 #undef  DOARGS_6
-#define DOARGS_6 \
-  .fnstart; \
-  mov ip, sp; \
-  stmfd sp!, {r4, r5, r7}; \
-  cfi_adjust_cfa_offset (12); \
-  cfi_rel_offset (r4, 0); \
-  cfi_rel_offset (r5, 4); \
-  cfi_rel_offset (r7, 8); \
-  .save { r4, r5, r7 }; \
-  ldmia ip, {r4, r5}
+#define DOARGS_6					\
+	.fnstart;					\
+	mov	ip, sp;					\
+	stmfd	sp!, {r4, r5, r7};			\
+	cfi_adjust_cfa_offset (12);			\
+	cfi_rel_offset (r4, 0);				\
+	cfi_rel_offset (r5, 4);				\
+	cfi_rel_offset (r7, 8);				\
+	.save	{ r4, r5, r7 };				\
+	ldmia	ip, {r4, r5}
 #undef  DOARGS_7
-#define DOARGS_7 \
-  .fnstart; \
-  mov ip, sp; \
-  stmfd sp!, {r4, r5, r6, r7}; \
-  cfi_adjust_cfa_offset (16); \
-  cfi_rel_offset (r4, 0); \
-  cfi_rel_offset (r5, 4); \
-  cfi_rel_offset (r6, 8); \
-  cfi_rel_offset (r7, 12); \
-  .save { r4, r5, r6, r7 }; \
-  ldmia ip, {r4, r5, r6}
+#define DOARGS_7					\
+	.fnstart;					\
+	mov	ip, sp;					\
+	stmfd	sp!, {r4, r5, r6, r7};			\
+	cfi_adjust_cfa_offset (16);			\
+	cfi_rel_offset (r4, 0);				\
+	cfi_rel_offset (r5, 4);				\
+	cfi_rel_offset (r6, 8);				\
+	cfi_rel_offset (r7, 12);			\
+	.save	{ r4, r5, r6, r7 };			\
+	ldmia	ip, {r4, r5, r6}
 
 #undef  UNDOARGS_0
-#define UNDOARGS_0 \
-  ldr r7, [sp], #4; \
-  cfi_adjust_cfa_offset (-4); \
-  cfi_restore (r7); \
-  .fnend
+#define UNDOARGS_0					\
+	ldr	r7, [sp], #4;				\
+	cfi_adjust_cfa_offset (-4);			\
+	cfi_restore (r7);				\
+	.fnend
 #undef  UNDOARGS_1
 #define UNDOARGS_1 UNDOARGS_0
 #undef  UNDOARGS_2
@@ -261,29 +261,29 @@ __local_syscall_error:						\
 #undef  UNDOARGS_4
 #define UNDOARGS_4 UNDOARGS_0
 #undef  UNDOARGS_5
-#define UNDOARGS_5 \
-  ldmfd sp!, {r4, r7}; \
-  cfi_adjust_cfa_offset (-8); \
-  cfi_restore (r4); \
-  cfi_restore (r7); \
-  .fnend
+#define UNDOARGS_5					\
+	ldmfd	sp!, {r4, r7};				\
+	cfi_adjust_cfa_offset (-8);			\
+	cfi_restore (r4);				\
+	cfi_restore (r7);				\
+	.fnend
 #undef  UNDOARGS_6
-#define UNDOARGS_6 \
-  ldmfd sp!, {r4, r5, r7}; \
-  cfi_adjust_cfa_offset (-12); \
-  cfi_restore (r4); \
-  cfi_restore (r5); \
-  cfi_restore (r7); \
-  .fnend
+#define UNDOARGS_6					\
+	ldmfd	sp!, {r4, r5, r7};			\
+	cfi_adjust_cfa_offset (-12);			\
+	cfi_restore (r4);				\
+	cfi_restore (r5);				\
+	cfi_restore (r7);				\
+	.fnend
 #undef  UNDOARGS_7
-#define UNDOARGS_7 \
-  ldmfd sp!, {r4, r5, r6, r7}; \
-  cfi_adjust_cfa_offset (-16); \
-  cfi_restore (r4); \
-  cfi_restore (r5); \
-  cfi_restore (r6); \
-  cfi_restore (r7); \
-  .fnend
+#define UNDOARGS_7					\
+	ldmfd	sp!, {r4, r5, r6, r7};			\
+	cfi_adjust_cfa_offset (-16);			\
+	cfi_restore (r4);				\
+	cfi_restore (r5);				\
+	cfi_restore (r6);				\
+	cfi_restore (r7);				\
+	.fnend
 
 #else /* not __ASSEMBLER__ */
 

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=c98ec0b97f5223b1788adde6c25e9f7963efba48

commit c98ec0b97f5223b1788adde6c25e9f7963efba48
Author: Richard Henderson <rth@twiddle.net>
Date:   Tue Feb 12 10:44:10 2013 -0800

    arm: Include libc-do-syscall in sysdep-rtld-routines
    
    When compiling with -mthumb, ld.so itself also needs __libc_do_syscall.

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 611265f..cca2c69 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -4,6 +4,9 @@
 
 	* sysdeps/arm/preconfigure: Handle __ARM_ARCH_6*__.
 
+	* sysdeps/unix/sysv/linux/arm/Makefile [elf] (sysdep-rtld-routines):
+	Include libc-do-syscall.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/unix/sysv/linux/arm/Makefile b/ports/sysdeps/unix/sysv/linux/arm/Makefile
index be7946e..56ef159 100644
--- a/ports/sysdeps/unix/sysv/linux/arm/Makefile
+++ b/ports/sysdeps/unix/sysv/linux/arm/Makefile
@@ -10,7 +10,7 @@ shared-only-routines += libc-aeabi_read_tp
 endif
 
 ifeq ($(subdir),elf)
-sysdep-rtld-routines += aeabi_read_tp
+sysdep-rtld-routines += aeabi_read_tp libc-do-syscall
 endif
 
 ifeq ($(subdir),misc)

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8a0018d62f3f25d3c36eb45a92a1c64023695b6c

commit 8a0018d62f3f25d3c36eb45a92a1c64023695b6c
Author: Richard Henderson <rth@twiddle.net>
Date:   Fri Feb 15 12:54:48 2013 -0800

    arm: Handle armv6 in preconfigure

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index e7bc402..611265f 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -2,6 +2,8 @@
 
 	* sysdeps/arm/preconfigure: Adjust scan for __ARM_ARCH_* defines.
 
+	* sysdeps/arm/preconfigure: Handle __ARM_ARCH_6*__.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/preconfigure b/ports/sysdeps/arm/preconfigure
index e3762af..6d61b14 100644
--- a/ports/sysdeps/arm/preconfigure
+++ b/ports/sysdeps/arm/preconfigure
@@ -28,7 +28,10 @@ arm*)
 		  machine=armv6t2
 		  echo "Found compiler is configured for $machine"
 		  ;;
-
+		x__ARM_ARCH_6*__)
+		  machine=armv6
+		  echo "Found compiler is configured for $machine"
+		  ;;
 		*)
 		  machine=arm
 		  echo 2>&1 "arm/preconfigure: Did not find ARM architecture type; using default"

http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=60812ba09d346d2d355bd8272c5e75ca55bc8f03

commit 60812ba09d346d2d355bd8272c5e75ca55bc8f03
Author: Richard Henderson <rth@twiddle.net>
Date:   Fri Feb 15 12:54:26 2013 -0800

    arm: Update preconfigure fragment for gcc 4.8
    
    New defines from gcc 4.8:
     #define __ARM_ARCH_ISA_ARM 1
     #define __ARM_ARCH_PROFILE 65
     #define __ARM_ARCH_ISA_THUMB 2
     #define __ARM_ARCH 7
    
    all of which got in the way of the one we wanted:
     #define __ARM_ARCH_7A__ 1

diff --git a/ports/ChangeLog.arm b/ports/ChangeLog.arm
index 9e91ad1..e7bc402 100644
--- a/ports/ChangeLog.arm
+++ b/ports/ChangeLog.arm
@@ -1,3 +1,7 @@
+2013-02-28  Richard Henderson <rth@redhat.com>
+
+	* sysdeps/arm/preconfigure: Adjust scan for __ARM_ARCH_* defines.
+
 2013-02-27  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/arm/sysdep.h (CFI_SECTIONS): New macro.
diff --git a/ports/sysdeps/arm/preconfigure b/ports/sysdeps/arm/preconfigure
index 20f6d91..e3762af 100644
--- a/ports/sysdeps/arm/preconfigure
+++ b/ports/sysdeps/arm/preconfigure
@@ -10,7 +10,7 @@ arm*)
 		# an appropriate directory exists in sysdeps/arm
 		archcppflag=`echo "" |
 		$CC $CFLAGS $CPPFLAGS -E -dM - |
-		  grep __ARM_ARCH |
+		  grep '__ARM_ARCH_[0-9].*__' |
 		  sed -e 's/^#define //' -e 's/ .*//'`
 
 		case x$archcppflag in

-----------------------------------------------------------------------

Summary of changes:
 ports/ChangeLog.arm                                |   50 +++
 ports/sysdeps/arm/__longjmp.S                      |    6 +-
 ports/sysdeps/arm/arm-mcount.S                     |    9 +-
 ports/sysdeps/arm/crti.S                           |    2 +
 ports/sysdeps/arm/crtn.S                           |    2 +
 ports/sysdeps/arm/dl-tlsdesc.S                     |    1 +
 ports/sysdeps/arm/dl-trampoline.S                  |    2 +
 ports/sysdeps/arm/memcpy.S                         |    2 +
 ports/sysdeps/arm/memmove.S                        |    2 +
 ports/sysdeps/arm/memset.S                         |    2 +
 ports/sysdeps/arm/preconfigure                     |    7 +-
 ports/sysdeps/arm/setjmp.S                         |    6 +-
 ports/sysdeps/arm/strlen.S                         |    2 +
 ports/sysdeps/arm/sysdep.h                         |   66 +++--
 ports/sysdeps/unix/arm/sysdep.S                    |    9 +-
 ports/sysdeps/unix/sysv/linux/arm/Makefile         |    2 +-
 .../sysdeps/unix/sysv/linux/arm/____longjmp_chk.S  |    2 +
 ports/sysdeps/unix/sysv/linux/arm/clone.S          |    4 +-
 ports/sysdeps/unix/sysv/linux/arm/getcontext.S     |    2 +-
 ports/sysdeps/unix/sysv/linux/arm/mmap.S           |    1 +
 ports/sysdeps/unix/sysv/linux/arm/mmap64.S         |    6 +-
 .../unix/sysv/linux/arm/nptl/sysdep-cancel.h       |  314 ++++++++++----------
 .../unix/sysv/linux/arm/nptl/unwind-forcedunwind.c |    9 +-
 .../unix/sysv/linux/arm/nptl/unwind-resume.c       |    9 +-
 ports/sysdeps/unix/sysv/linux/arm/setcontext.S     |    4 +-
 ports/sysdeps/unix/sysv/linux/arm/syscall.S        |    1 +
 ports/sysdeps/unix/sysv/linux/arm/sysdep.h         |  183 ++++++------
 ports/sysdeps/unix/sysv/linux/arm/vfork.S          |    1 +
 28 files changed, 395 insertions(+), 311 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]