浏览代码

Joseph S. Myers writes:
This patch fixes some of the ARM EABI code to be interworking-safe, using
bx where appropriate. (This code went in around the same time as the
Thumb patches, hence not being fixed by those patches.)

Mike Frysinger 19 年之前
父节点
当前提交
8bb7fcac75
共有 3 个文件被更改,包括 12 次插入0 次删除
  1. 4 0
      libc/sysdeps/linux/arm/__longjmp.S
  2. 4 0
      libc/sysdeps/linux/arm/mmap64.S
  3. 4 0
      libc/sysdeps/linux/arm/syscall-eabi.S

+ 4 - 0
libc/sysdeps/linux/arm/__longjmp.S

@@ -61,7 +61,11 @@ __longjmp:
 # endif
 #endif	
 
+#if defined(__USE_BX__)
+	bx	lr
+#else
 	mov pc, lr
+#endif
 
 .size __longjmp,.-__longjmp
 libc_hidden_def(__longjmp)

+ 4 - 0
libc/sysdeps/linux/arm/mmap64.S

@@ -52,7 +52,11 @@ mmap64:
 	DO_CALL (mmap2)
 	cmn	r0, $4096
 	ldmfd	sp!, {r4, r5}
+#if defined(__USE_BX__)
+	bxcc	lr
+#else
 	movcc	pc, lr
+#endif
 	b	__syscall_error
 .Linval:
 	mov	r0, $-EINVAL

+ 4 - 0
libc/sysdeps/linux/arm/syscall-eabi.S

@@ -37,7 +37,11 @@ syscall:
 	swi	0x0
 	ldmfd	sp!, {r4, r5, r6, r7}
 	cmn	r0, #4096
+#if defined(__USE_BX__)
+	bxcc	lr
+#else
 	movcc	pc, lr
+#endif
 	b	__syscall_error
 
 .size syscall,.-syscall