public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
* [PATCH, newlib] Fix strlen using Thumb-2 with -Os -marm
@ 2016-04-28 16:07 Thomas Preudhomme
  2016-05-02 21:06 ` Pavel Pisa
  2016-05-10 15:41 ` [PATCH, newlib, ping1] " Thomas Preudhomme
  0 siblings, 2 replies; 4+ messages in thread
From: Thomas Preudhomme @ 2016-04-28 16:07 UTC (permalink / raw)
  To: newlib

Hi,

Currently, the selection of which strlen routine to use for ARM processors is 
as follows (see newlib/libc/machine/arm/strlen.S or 
newlib/libc/machine/arm/strlen-stub.c):

#if optimize for size
#if defined __thumb__ && !defined __thumb2__
Thumb-1 routine
#else
Thumb-2 routine
#endif
#else
something
#endif

When compiling for ARM ISA, __thumb__ would be 0 and thus the Thumb-2 routine 
would be chosen, no matter the architecture selected. This patch changes the 
logic to only look for capabilities of the processor. It also fallback to the 
C implementation for targets with only ARM execution state (armv4 and armv5).

ChangeLog entry is as follows:

*** newlib/ChangeLog ***

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.


diff --git a/newlib/libc/machine/arm/strlen-stub.c 
b/newlib/libc/machine/arm/strlen-stub.c
index 
bcd3d2d462587f6daa4a96aabf9f773962435190..ea45a378991011ab77af697c22c79fd2cb957d02 
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 
57371453a5a330aef5c02836eb8d3a1ae446294e..0435fb2de8489380e28f554dcd66ec6cb5744d75 
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
 


Tested by building newlib and comparing all *.a and *.o binaries before and
after with objdump -D and readelf -A for all permutations of:

  Architectures:
    armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6k
    armv6z armv6kz armv6t2 armv6s-m armv7 armv7-a armv7ve
    armv7-r armv7-m armv7e-m armv8-a armv8-a+crc iwmmxt
    iwmmxt2

  ISAs:
    thumb arm

  Optimization Levels:
    Os O2

  Excluding:
    armv6s-m -marm
    armv7 -marm
    armv7-m -marm
    armv7e-m -marm
    iwmmxt -mthumb
    iwmmxt2 -mthumb

as being rejected by the compiler or assembler. ARMv6-M was not tested because 
compilation fails due to svc instruction. The newlib built was configured with 
--disable-newlib-supplied-syscalls.

The comparison showed that the Thumb-1 implementation is used instead of 
Thumb-2 for all of: armv4t armv5 armv5t armv5te armv6 armv6j armv6k armv6kz 
armv6z armv6zk iwmmxt iwmmxt2. Note that armv5 and iWMMXt are in that list due 
to a bug in GCC in the definition of TARGET_ARM_ARCH_ISA_THUMB. It also shows 
that armv4 now uses the C implementation. Other combinations (-O2, -mthumb and 
Thumb-2 capable architectures) are not affected.

Is this ok for master branch?

Best regards,

Thomas

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, newlib] Fix strlen using Thumb-2 with -Os -marm
  2016-04-28 16:07 [PATCH, newlib] Fix strlen using Thumb-2 with -Os -marm Thomas Preudhomme
@ 2016-05-02 21:06 ` Pavel Pisa
  2016-05-10 15:41 ` [PATCH, newlib, ping1] " Thomas Preudhomme
  1 sibling, 0 replies; 4+ messages in thread
From: Pavel Pisa @ 2016-05-02 21:06 UTC (permalink / raw)
  To: newlib, Thomas Preudhomme; +Cc: Sebastian Huber

Hello Thomas and others,

On Thursday 28 of April 2016 18:06:45 Thomas Preudhomme wrote:
> Currently, the selection of which strlen routine to use for ARM processors
> is as follows (see newlib/libc/machine/arm/strlen.S or
> newlib/libc/machine/arm/strlen-stub.c):
>
> #if optimize for size
> #if defined __thumb__ && !defined __thumb2__
> Thumb-1 routine
> #else
> Thumb-2 routine
> #endif
> #else
> something
> #endif
>
> When compiling for ARM ISA, __thumb__ would be 0 and thus the Thumb-2
> routine would be chosen, no matter the architecture selected. This patch
> changes the logic to only look for capabilities of the processor. It also
> fallback to the C implementation for targets with only ARM execution state
> (armv4 and armv5).

I have already fight with that problem on RTEMS-4.12
on raspberry Pi v1 and want to propose allmost the same
patch today and found your proposal. So I want to confirm
the problem and that your patch should help there.

There is my diagnostics which confirm your finding.

RTEMS core and application for RPi1 BSP is compiled with

   arm-rtems4.12-gcc -mcpu=arm1176jzf-s

which is mapped for RTEMS GCC compile to the plain ARM 32-bit mode
and non-thumb/default/"." multilib variant. But application
fails. I have found that cause is the call to the strlen()
which is not 32-bit ARM code as the rest and includes Thumb-2
instruction unknown to ARMv6T1 based CPU.

Source of the problem is

  libc/machine/arm/lib_a-strlen.o

which is reposted by readelf as

No version information found in this file.
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "6T2"
  Tag_CPU_arch: v6T2
  Tag_THUMB_ISA_use: Thumb-2

All other library files has next attributes

No version information found in this file.
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "ARM7TDMI"
  Tag_CPU_arch: v4T
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1
  Tag_ABI_PCS_wchar_t: 4
  Tag_ABI_FP_denormal: Needed
  Tag_ABI_FP_exceptions: Needed
  Tag_ABI_FP_number_model: IEEE 754
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_enum_size: small
  Tag_ABI_optimization_goals: Aggressive Size

The strlen uses really unsupported Thumb-2 code

  00018994 <strlen>:
   18994:       4603            mov     r3, r0
   18996:       f813 2b01       ldrb.w  r2, [r3], #1
   1899a:       2a00            cmp     r2, #0
   1899c:       d1fb            bne.n   18996 <strlen+0x2>
   1899e:       1a18            subs    r0, r3, r0
   189a0:       3801            subs    r0, #1
   189a2:       4770            bx      lr

GCC-6.0.1-RC-20160415 + Newlib-2.4.0  have been configured as

../../../src/gcc-6.1/configure --target=arm-rtems4.12 --prefix=/usr \
             --build=x86_64-pc-linux-gnu  \
             --enable-languages=c,c++ \
             --disable-libstdcxx-pch \
             --with-gnu-ld \
             --with-gnu-as \
             --enable-threads \
             --enable-target-optspace \
             --with-system-zlib \
             --verbose \
             --disable-nls --without-included-gettext \
             --disable-win32-registry \
             --with-newlib \
             --enable-plugin \
             --enable-newlib-io-c99-formats \
             --enable-version-specific-runtime-libs \
             --enable-newlib-iconv \
             --disable-lto \
             --enable-libgomp \
             --enable-newlib-iconv \
             --enable-newlib-iconv-encodings="iso_8859_1,utf_8" \

When Newlib is compiled for default multilib variant (ARMv4 for RTEMS) then next command
is used (some includes and unimportant flags removed)

arm-rtems4.12-gcc -nostdinc -I . -Os \
 -D_COMPILING_NEWLIB -DMALLOC_PROVIDED -DEXIT_PROVIDED -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED \
 -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL -DHAVE_ASSERT_FUNC -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT \
  -D_NO_GETPASS -D_NO_SIGSET -D_NO_WORDEXP -D_NO_POPEN -D_NO_POSIX_SPAWN -D_I386MACH_ALLOW_HW_INTERRUPTS \
  -fno-builtin     -Os -D_COMPILING_NEWLIB -DMALLOC_PROVIDED -DEXIT_PROVIDED -DSIGNAL_PROVIDED \
  -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL -DHAVE_ASSERT_FUNC \
  -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT -D_NO_GETPASS -D_NO_SIGSET -D_NO_WORDEXP -D_NO_POPEN \
  -D_NO_POSIX_SPAWN -D_I386MACH_ALLOW_HW_INTERRUPTS -fno-builtin \
  -g -O2 -g -Os -c -o lib_a-strlen.o strlen.S

My tested and attached proposal should be equivalent to yours.
But I have found some difference. When GCC is used for RPi

  arm-rtems4.12-gcc -mcpu=arm1176jzf-s

then next Thumb related defines are set

  __ARM_ARCH_ISA_THUMB 1
  __THUMB_INTERWORK__ 1

but because build is 32-bit then none of __thumb__ and __thumb2__ is defined.
But because you use __ARM_ARCH_ISA_THUMB which is defined even for non Thumb
build

  +#if __ARM_ARCH_ISA_THUMB == 2
  +#include "strlen-thumb2-Os.S"
  +
  +#elif defined (__ARM_ARCH_ISA_THUMB)

then I expect that strlen() would be Thumb-1 assembler code in your case
but common simple C code in my case. The both options should be valid
for ARMv6T1. GCC default options leads to the same Thumb related defines
set so that means that even for ARMv4T based chips (i.e. LPC2148) Thumb 1
strlen is used even for non thumb build. It still should work but if my
analysis is the right then it would lead to inclusion of Thumb to the
applications which are expected to be non-Thumb builds. May it be that
it would lead to speed advantage if this is intentional or considered
non-harmfull.

Thanks for taking care for Newlib,

             Pavel


diff --git a/newlib/libc/machine/arm/strlen-stub.c b/newlib/libc/machine/arm/strlen-stub.c
index bcd3d2d..01e0196 100644
--- a/newlib/libc/machine/arm/strlen-stub.c
+++ b/newlib/libc/machine/arm/strlen-stub.c
@@ -32,7 +32,8 @@
 #include <limits.h>
 
 #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED
-#if defined __thumb__ && !defined __thumb2__
+#if defined __thumb__ 
+#if !defined __thumb2__
 /* Implemented in strlen.S.  */
 
 #else
@@ -40,6 +41,11 @@
 
 #endif
 
+#else
+/* No thumb support and optimize for size */
+#include "../../string/strlen.c"
+#endif
+
 #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */
 #if defined __thumb__ && ! defined __thumb2__
 #include "../../string/strlen.c"
diff --git a/newlib/libc/machine/arm/strlen.S b/newlib/libc/machine/arm/strlen.S
index 5737145..f24b2ac 100644
--- a/newlib/libc/machine/arm/strlen.S
+++ b/newlib/libc/machine/arm/strlen.S
@@ -27,7 +27,8 @@
 #include "acle-compat.h"
 
 #if defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED
-#if defined __thumb__ && !defined __thumb2__
+#if defined __thumb__
+#if !defined __thumb2__
 #include "strlen-thumb1-Os.S"
 
 #else
@@ -35,6 +36,11 @@
 
 #endif
 
+#else
+  /* ARMv4 or other variant without thumb support optimized for size */
+  /* Implemented in strlen-stub.c.  */
+#endif
+
 #else /* defined __OPTIMIZE_SIZE__ || defined PREFER_SIZE_OVER_SPEED */
 #if defined __thumb__ && ! defined __thumb2__
   /* Implemented in strlen-stub.c.  */

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, newlib, ping1] Fix strlen using Thumb-2 with -Os -marm
  2016-04-28 16:07 [PATCH, newlib] Fix strlen using Thumb-2 with -Os -marm Thomas Preudhomme
  2016-05-02 21:06 ` Pavel Pisa
@ 2016-05-10 15:41 ` Thomas Preudhomme
  2016-05-11 21:20   ` Jeff Johnston
  1 sibling, 1 reply; 4+ messages in thread
From: Thomas Preudhomme @ 2016-05-10 15:41 UTC (permalink / raw)
  To: newlib

Ping?

On Thursday 28 April 2016 17:06:45 Thomas Preudhomme wrote:
> Hi,
> 
> Currently, the selection of which strlen routine to use for ARM processors
> is as follows (see newlib/libc/machine/arm/strlen.S or
> newlib/libc/machine/arm/strlen-stub.c):
> 
> #if optimize for size
> #if defined __thumb__ && !defined __thumb2__
> Thumb-1 routine
> #else
> Thumb-2 routine
> #endif
> #else
> something
> #endif
> 
> When compiling for ARM ISA, __thumb__ would be 0 and thus the Thumb-2
> routine would be chosen, no matter the architecture selected. This patch
> changes the logic to only look for capabilities of the processor. It also
> fallback to the C implementation for targets with only ARM execution state
> (armv4 and armv5).
> 
> ChangeLog entry is as follows:
> 
> *** newlib/ChangeLog ***
> 
> 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.
> 
> 
> diff --git a/newlib/libc/machine/arm/strlen-stub.c
> b/newlib/libc/machine/arm/strlen-stub.c
> index
> bcd3d2d462587f6daa4a96aabf9f773962435190..ea45a378991011ab77af697c22c79fd2cb
> 957d02 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
> 57371453a5a330aef5c02836eb8d3a1ae446294e..0435fb2de8489380e28f554dcd66ec6cb5
> 744d75 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
> 
> 
> 
> Tested by building newlib and comparing all *.a and *.o binaries before and
> after with objdump -D and readelf -A for all permutations of:
> 
>   Architectures:
>     armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6k
>     armv6z armv6kz armv6t2 armv6s-m armv7 armv7-a armv7ve
>     armv7-r armv7-m armv7e-m armv8-a armv8-a+crc iwmmxt
>     iwmmxt2
> 
>   ISAs:
>     thumb arm
> 
>   Optimization Levels:
>     Os O2
> 
>   Excluding:
>     armv6s-m -marm
>     armv7 -marm
>     armv7-m -marm
>     armv7e-m -marm
>     iwmmxt -mthumb
>     iwmmxt2 -mthumb
> 
> as being rejected by the compiler or assembler. ARMv6-M was not tested
> because compilation fails due to svc instruction. The newlib built was
> configured with --disable-newlib-supplied-syscalls.
> 
> The comparison showed that the Thumb-1 implementation is used instead of
> Thumb-2 for all of: armv4t armv5 armv5t armv5te armv6 armv6j armv6k armv6kz
> armv6z armv6zk iwmmxt iwmmxt2. Note that armv5 and iWMMXt are in that list
> due to a bug in GCC in the definition of TARGET_ARM_ARCH_ISA_THUMB. It also
> shows that armv4 now uses the C implementation. Other combinations (-O2,
> -mthumb and Thumb-2 capable architectures) are not affected.
> 
> Is this ok for master branch?
> 
> Best regards,
> 
> Thomas

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH, newlib, ping1] Fix strlen using Thumb-2 with -Os -marm
  2016-05-10 15:41 ` [PATCH, newlib, ping1] " Thomas Preudhomme
@ 2016-05-11 21:20   ` Jeff Johnston
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff Johnston @ 2016-05-11 21:20 UTC (permalink / raw)
  To: Thomas Preudhomme; +Cc: newlib

Patch applied.

-- Jeff J.

----- Original Message -----
> Ping?
> 
> On Thursday 28 April 2016 17:06:45 Thomas Preudhomme wrote:
> > Hi,
> > 
> > Currently, the selection of which strlen routine to use for ARM processors
> > is as follows (see newlib/libc/machine/arm/strlen.S or
> > newlib/libc/machine/arm/strlen-stub.c):
> > 
> > #if optimize for size
> > #if defined __thumb__ && !defined __thumb2__
> > Thumb-1 routine
> > #else
> > Thumb-2 routine
> > #endif
> > #else
> > something
> > #endif
> > 
> > When compiling for ARM ISA, __thumb__ would be 0 and thus the Thumb-2
> > routine would be chosen, no matter the architecture selected. This patch
> > changes the logic to only look for capabilities of the processor. It also
> > fallback to the C implementation for targets with only ARM execution state
> > (armv4 and armv5).
> > 
> > ChangeLog entry is as follows:
> > 
> > *** newlib/ChangeLog ***
> > 
> > 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.
> > 
> > 
> > diff --git a/newlib/libc/machine/arm/strlen-stub.c
> > b/newlib/libc/machine/arm/strlen-stub.c
> > index
> > bcd3d2d462587f6daa4a96aabf9f773962435190..ea45a378991011ab77af697c22c79fd2cb
> > 957d02 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
> > 57371453a5a330aef5c02836eb8d3a1ae446294e..0435fb2de8489380e28f554dcd66ec6cb5
> > 744d75 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
> > 
> > 
> > 
> > Tested by building newlib and comparing all *.a and *.o binaries before and
> > after with objdump -D and readelf -A for all permutations of:
> > 
> >   Architectures:
> >     armv4 armv4t armv5 armv5t armv5te armv6 armv6j armv6k
> >     armv6z armv6kz armv6t2 armv6s-m armv7 armv7-a armv7ve
> >     armv7-r armv7-m armv7e-m armv8-a armv8-a+crc iwmmxt
> >     iwmmxt2
> > 
> >   ISAs:
> >     thumb arm
> > 
> >   Optimization Levels:
> >     Os O2
> > 
> >   Excluding:
> >     armv6s-m -marm
> >     armv7 -marm
> >     armv7-m -marm
> >     armv7e-m -marm
> >     iwmmxt -mthumb
> >     iwmmxt2 -mthumb
> > 
> > as being rejected by the compiler or assembler. ARMv6-M was not tested
> > because compilation fails due to svc instruction. The newlib built was
> > configured with --disable-newlib-supplied-syscalls.
> > 
> > The comparison showed that the Thumb-1 implementation is used instead of
> > Thumb-2 for all of: armv4t armv5 armv5t armv5te armv6 armv6j armv6k armv6kz
> > armv6z armv6zk iwmmxt iwmmxt2. Note that armv5 and iWMMXt are in that list
> > due to a bug in GCC in the definition of TARGET_ARM_ARCH_ISA_THUMB. It also
> > shows that armv4 now uses the C implementation. Other combinations (-O2,
> > -mthumb and Thumb-2 capable architectures) are not affected.
> > 
> > Is this ok for master branch?
> > 
> > Best regards,
> > 
> > Thomas
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-05-11 21:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-28 16:07 [PATCH, newlib] Fix strlen using Thumb-2 with -Os -marm Thomas Preudhomme
2016-05-02 21:06 ` Pavel Pisa
2016-05-10 15:41 ` [PATCH, newlib, ping1] " Thomas Preudhomme
2016-05-11 21:20   ` Jeff Johnston

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).