Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2016-05-12 00:18:48 +0300
committerJeff Johnston <jjohnstn@redhat.com>2016-05-12 00:18:48 +0300
commit5c02bcc086a96b174e1b9e1445a4a1770070107a (patch)
tree956bbdab66b9fe112005f5050632d45ceedebfa1
parentd1d1378d139a8768ea1eb8ba3be73ac6d4e4d4dc (diff)
Fix strlen using Thumb-2 with -Os -marm
2016-04-18 Thomas Preud'homme <thomas.preudhomme@arm.com> * libc/machine/arm/strlen-stub.c: Check capabilities of architecture to decide which Thumb implementation to use and fall back to C implementation for architecture not supporting Thumb mode. * libc/machine/arm/strlen.S: Likewise.
-rw-r--r--newlib/libc/machine/arm/strlen-stub.c7
-rw-r--r--newlib/libc/machine/arm/strlen.S7
2 files changed, 10 insertions, 4 deletions
diff --git a/newlib/libc/machine/arm/strlen-stub.c b/newlib/libc/machine/arm/strlen-stub.c
index bcd3d2d46..ea45a3789 100644
--- a/newlib/libc/machine/arm/strlen-stub.c
+++ b/newlib/libc/machine/arm/strlen-stub.c
@@ -32,12 +32,15 @@
#include <limits.h>
#if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED
-#if defined __thumb__ && !defined __thumb2__
+#if __ARM_ARCH_ISA_THUMB == 2
/* Implemented in strlen.S. */
-#else
+#elif defined (__ARM_ARCH_ISA_THUMB)
/* Implemented in strlen.S. */
+#else
+#include "../../string/strlen.c"
+
#endif
#else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */
diff --git a/newlib/libc/machine/arm/strlen.S b/newlib/libc/machine/arm/strlen.S
index 57371453a..0435fb2de 100644
--- a/newlib/libc/machine/arm/strlen.S
+++ b/newlib/libc/machine/arm/strlen.S
@@ -27,11 +27,14 @@
#include "acle-compat.h"
#if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED
-#if defined __thumb__ && !defined __thumb2__
+#if __ARM_ARCH_ISA_THUMB == 2
+#include "strlen-thumb2-Os.S"
+
+#elif defined (__ARM_ARCH_ISA_THUMB)
#include "strlen-thumb1-Os.S"
#else
-#include "strlen-thumb2-Os.S"
+ /* Implemented in strlen-stub.c. */
#endif