This is the mail archive of the newlib@sourceware.org mailing list for the newlib 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]

Re: BUG W/PATCH - libgloss/arm/linux-syscalls0.S - wrongly assumes thumb mode.


Duane Ellis wrote:

Below is a patch to fix a build problem with Newlib 1.15.0.

Whoops - I the diff is backwards (ie: diff OLD NEW vrs diff NEW OLD)

Here's the fixed version.

-Duane.
-------------


diff -Naur newlib-1.15.0/libgloss/arm/linux-syscalls0.S newlib-1.15.0-ARM-LINUX-SYSCALLFIX/libgloss/arm/linux-syscalls0.S
--- newlib-1.15.0/libgloss/arm/linux-syscalls0.S 2006-10-03 12:33:50.000000000 -0400
+++ newlib-1.15.0-ARM-LINUX-SYSCALLFIX/libgloss/arm/linux-syscalls0.S 2007-03-20 12:50:13.000000000 -0400
@@ -68,11 +68,11 @@


 # define SYSCALL6(name) \
     GLOBAL(_ ## name); \
-    push { r4 - r5 }; \
+    stmfd sp!,{ r4 - r5 }; \
     ldr r4, [sp, #8]; \
     ldr r5, [sp, #12]; \
     swi #SYS_ ## name; \
-    pop { r4 - r5 }; \
+    ldmfd sp!,{ r4 - r5 }; \
     b _set_errno; \
     SIZE(_ ## name)

@@ -190,19 +190,37 @@
 ALIAS(vfork)
 ALIAS(wait4)

+#if __thumb__
# define SOCKETCALL(name, NAME) \
GLOBAL(name); \
push { r0 - r3 }; \
mov r0, #SYS_ ## NAME; \
b _socketcall_tail; \
SIZE(name)
-
+#else
+# define SOCKETCALL(name, NAME) \
+ GLOBAL(name); \
+ stmfd sp!,{ r0 - r3 }; \
+ mov r0, #SYS_ ## NAME; \
+ b _socketcall_tail; \
+ SIZE(name)
+#endif
+
FUNC(_socketcall_tail)
mov r1, sp
+#if __thumb__
push { lr }
+#else
+ stmfd sp!,{lr}
+#endif
bl _socketcall
+#if __thumb__
pop { r3 }
add sp, #16
+#else
+ ldmfd sp!,{r3}
+ add sp,sp,#16
+#endif
#if defined(__ARM_ARCH_2__) || defined(__ARM_ARCH_3__) \
|| defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__)
mov pc, r3
diff -Naur newlib-1.15.0/libgloss/ChangeLog newlib-1.15.0-ARM-LINUX-SYSCALLFIX/libgloss/ChangeLog
--- newlib-1.15.0/libgloss/ChangeLog 2006-12-18 16:48:18.000000000 -0500
+++ newlib-1.15.0-ARM-LINUX-SYSCALLFIX/libgloss/ChangeLog 2007-03-20 13:22:43.000000000 -0400
@@ -1,3 +1,8 @@
+2007-03-20 duane ellis <duane-newlib@duaneellis.com>
+
+ * arm/linux-syscalls0.S - Fix: Wrongly uses THUMB
+ instructions in various macros.
+
2006-12-18 Kazu Hirata <kazu@codesourcery.com>


Merge from newlib-csl-20060320-branch:




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