Pre-processor mismatch between [libc/machine/arm] strlen.c and strlen-armv7.s - may lead in duplicate definition
Corinna Vinschen
vinschen@redhat.com
Thu Aug 20 12:45:00 GMT 2015
Somebody from arm can comment on this, please?
Thanks,
Corinna
On Aug 7 08:15, Markus Eisenmann wrote:
> Hi!
>
> I've got the situation, that the function strlen() occurs twice in libc.a (building newlib for ARM-V7a and Size-Optimized).
>
> In newlib/libc/machine/arm/strlen.c there are the pre-processor stetements ...
> #if defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
> (defined (__thumb__) && !defined (__thumb2__))
> /*...*/
> #else
>
> #if !(defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__))
> /*...*/
> #endif
>
> and in newlib/libc/machine/arm/strlen-armv7.S the "exclude" begins with
>
> /* NOTE: This ifdef MUST match the ones in arm/strlen.c
> We fallback to the one in arm/strlen.c for size optimised or
> for older architectures. */
> #if defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__) && \
> !(defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
> (defined (__thumb__) && !defined (__thumb2__)))
>
> But this is not completely contrary to arm/strlen.c (see above)!
>
> To fix the logical statement in arm/strlen-armv7.S there are parentheses needed (in the first part):
>
> ----------------------------------------------
> --- newlib/libc/machine/arm/strlen-armv7.S
> +++ newlib/libc/machine/arm/strlen-armv7.S
> @@ -37,7 +37,7 @@
> /* NOTE: This ifdef MUST match the ones in arm/strlen.c
> We fallback to the one in arm/strlen.c for size optimised or
> for older architectures. */
> -#if defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__) && \
> +#if (defined(_ISA_ARM_7) || defined(__ARM_ARCH_6T2__)) && \
> !(defined (__OPTIMIZE_SIZE__) || defined (PREFER_SIZE_OVER_SPEED) || \
> (defined (__thumb__) && !defined (__thumb2__)))
>
> ----------------------------------------------
>
> Best regards from Salzburg,
> Markus
--
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20150820/90afeda0/attachment.sig>
More information about the Newlib
mailing list