[PATCH] ARM: Fix strcmp() for Thumb-1

Richard Earnshaw rearnsha@arm.com
Tue May 28 12:46:00 GMT 2013


On 28/05/13 11:59, Sebastian Huber wrote:
> On 05/28/2013 11:36 AM, Richard Earnshaw wrote:
>> On 27/05/13 07:59, Sebastian Huber wrote:
>>> On 05/27/2013 04:18 AM, Bin.Cheng wrote:
>>> [...]
>>>> Though I have no right to approve the patch, I would like to have below
>>>> comment.
>>>> UAL is generally preferred, thus you may handle armv6-m specially by
>>>> keeping UAL for it. For example,
>>>>
>>>> #if (defined(__thumb__) && defined(__ARM_ARCH_6M__))
>>>> //...
>>>> #endif
>>>
>>> Which problem does this additional pre-processor complexity solve?  The
>>> generated machine code is the same.
>>>
>>
>> I don't think either patch is correct.  Instead we should explicitly mark the
>> attributes in this case, probably as follows, but I've only smoke tested this.
>>
>> Sebastian, does this fix your problem?
>
> This patches fixes my problem.  I get now this:
>
> readelf -A ./arm-rtems4.11/thumb/newlib/libc/machine/arm/lib_a-strcmp.o
> Attribute Section: aeabi
> File Attributes
>     Tag_CPU_name: "4T"
>     Tag_CPU_arch: v4T
>     Tag_THUMB_ISA_use: Thumb-1
>     Tag_also_compatible_with: v6-M
>
> The application link process yields now an ARMv4T executable.  Without the
> patch I had "blx" instructions in the executable which are not supported on
> ARM7TDMI-S processors.
>

Great.  I've committed the patch with the following ChangeLog:

2013-05-28  Richard Earnshaw  <rearnsha@arm.com>

	* libc/macine/arm/strcpy.S: Explicitly set build attributes when
	building for thumb1 targets.

R.



More information about the Newlib mailing list