Remaining arch issue in Newlib optimized ARM ASM memchr for Cortex-R

Pavel Pisa ppisa4lists at pikron.com
Thu Jul 3 00:16:43 UTC 2014


Hello everybody,

we have stubled on next problem with GCC-4.9.0 and Newlib-2.1 when linking
RTEMS 4.11 code (but issue is generic for Newlib use for each Cortex-R
optimized multilib on any OS)

COLLECT_GCC_OPTIONS='-v' '-qrtems' '-B'  
'../tms570ls3137_hdk_sdram/lib/' '-specs=bsp_specs'  
'-march=armv7-r' '-mthumb' '-mbig-endian' '-O2' '-ggdb3' '-D' 'NDEBUG'  
'-Wall' '-Wmissing-prototypes' '-Wimplicit-function-declaration'  
'-Wstrict-prototypes' '-Wnested-externs' '-march=armv7-r' '-mthumb'  
'-mbig-endian' '-o' 'capture.exe'
   
/usr/arm-rtems4.11/gcc/4.9.0/bin/../libexec/gcc/arm-rtems4.11/4.9.0/collect2  
-dc -dp -N -EB -o capture.exe  
../tms570ls3137_hdk_sdram/lib/start.o  
.../thumb/armv7-r/eb/crti.o .../thumb/armv7-r/eb/crtbegin.o -e 
_start -L.../thumb/armv7-r/eb -L.../arm-rtems4.11/lib/thumb/armv7-r/eb -L../tms570ls3137_hdk_sdram/lib -L... -L/usr/arm-rtems4.11/gcc/4.9.0/bin/../lib/gcc -L.../arm-rtems4.11/lib 
init.o 
test1.o --start-group -lgcc --start-group -lrtemsbsp -lrtemscpu -lc -lgcc --end-group -T ../tms570ls3137_hdk_sdram/lib/linkcmds --end-group .../thumb/armv7-r/eb/crtend.o  
.../thumb/armv7-r/eb/crtn.o
.../arm-rtems4.11/bin/ld: error: .../arm-rtems4.11/lib/thumb/armv7-r/eb/libc.a(lib_a-memchr.o): Conflicting architecture profiles A/R
.../arm-rtems4.11/bin/ld: failed to merge target 

Most of the paths shortened - prefixes replaced by "...".

I have checked even current GIT Newlib sources and problem seems
to be present there as well.

One way to correct the problem is attached simple change.
Other option is to remove .arch line altogether and trust
correct options used when memchr.S build is invoked.

Proposed patch checked by readelf on
  eb/thumb/armv7-r/newlib/libc/string/lib_a-memrchr.o
and
  thumb/armv7-a/newlib/libc/string/lib_a-memrchr.o
Check of RTEMS build by new toolchain (Sebastian thanks),
is expected on Friday.

Best wishes,

             Pavel

---
 newlib/libc/machine/arm/memchr.S |    4 ++++
 1 file changed, 4 insertions(+)

Index: newlib-2.1/newlib/libc/machine/arm/memchr.S
===================================================================
--- newlib-2.1.orig/newlib/libc/machine/arm/memchr.S    2011-10-18 13:35:17.000000000 +0200
+++ newlib-2.1/newlib/libc/machine/arm/memchr.S 2014-07-03 00:38:47.598049234 +0200
@@ -46,7 +46,11 @@
 @    tidy

        .syntax unified
+#ifdef __ARM_ARCH_7R__
+       .arch armv7-r
+#else
        .arch armv7-a
+#endif

 #include "arm_asm.h"




More information about the devel mailing list