is ARMv4T deprecated?

Gustavo Zacarias gustavo at zacarias.com.ar
Wed Apr 15 22:13:20 UTC 2015


On 04/15/2015 05:01 PM, Bernhard Reutner-Fischer wrote:

> These spill failures should be fixed on master, fyi.

There's still one:

-----
  AS libc/sysdeps/linux/arm/syscall-eabi.os
In file included from ldso/ldso/ldso.c:1438:0:
ldso/ldso/dl-elf.c: In function '_dl_load_elf_shared_library':
ldso/ldso/dl-elf.c:963:1: error: unable to find a register to spill in
class 'LO_REGS'
 }
 ^
ldso/ldso/dl-elf.c:963:1: error: this is the insn:
(insn 679 677 680 87 (set (reg/v:SI 5 r5 [ _v2 ])
        (lshiftrt:SI (reg:SI 634)
            (const_int 13 [0xd]))) ./ldso/include/dl-syscall.h:220 128
{*thumb1_lshrsi3}
     (expr_list:REG_DEAD (reg:SI 634)
        (nil)))
ldso/ldso/dl-elf.c:963: confused by earlier errors, bailing out
Makerules:393: recipe for target 'ldso/ldso/ldso.oS' failed
make[1]: *** [ldso/ldso/ldso.oS] Error 1
make[1]: *** Waiting for unfinished jobs....
  CC libc/sysdeps/linux/common/umount.os
make[1]: Leaving directory
'/home/gustavoz/b/router01/output/build/uclibc-snapshot'
package/pkg-generic.mk:183: recipe for target
'/home/gustavoz/b/router01/output/build/uclibc-snapshot/.stamp_built' failed
make: ***
[/home/gustavoz/b/router01/output/build/uclibc-snapshot/.stamp_built]
Error 2
-----

I've patched that away via attribute_optimize("O2") but then i hit
another snag:

-----
  CC libc/sysdeps/linux/common/getpgrp.os
In file included from ./include/sys/syscall.h:33:0,
                 from libc/sysdeps/linux/common/sync_file_range.c:10:
libc/sysdeps/linux/common/sync_file_range.c: In function
'__sync_file_range_nocancel':
./include/bits/syscalls.h:144:16: error: conflicting types for '_v3'
   register int _v3 __asm__ ("v3") = _v3tmp;
                ^
./libc/sysdeps/linux/arm/sysdep.h:281:7: note: in expansion of macro
'LOAD_ARGS_7'
       LOAD_ARGS_##nr (args)     \
       ^
./libc/sysdeps/linux/arm/sysdep.h:324:2: note: in expansion of macro
'INTERNAL_SYSCALL_RAW'
  INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
  ^
./libc/sysdeps/linux/arm/sysdep.h:256:40: note: in expansion of macro
'INTERNAL_SYSCALL'
   ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr,
args); \
                                        ^
libc/sysdeps/linux/common/sync_file_range.c:32:9: note: in expansion of
macro 'INLINE_SYSCALL'
  return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
         ^
In file included from
./libpthread/nptl/sysdeps/unix/sysv/linux/arm/sysdep-cancel.h:18:0,
                 from ./include/cancel.h:58,
                 from libc/sysdeps/linux/common/sync_file_range.c:15:
./libc/sysdeps/linux/arm/sysdep.h:280:21: note: previous definition of
'_v3' was here
       register int *_v3 __asm__ ("v3") = _sys_buf;  \
                     ^
./libc/sysdeps/linux/arm/sysdep.h:324:2: note: in expansion of macro
'INTERNAL_SYSCALL_RAW'
  INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
  ^
./libc/sysdeps/linux/arm/sysdep.h:256:40: note: in expansion of macro
'INTERNAL_SYSCALL'
   ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr,
args); \
                                        ^
libc/sysdeps/linux/common/sync_file_range.c:32:9: note: in expansion of
macro 'INLINE_SYSCALL'
  return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
         ^
./libc/sysdeps/linux/arm/sysdep.h:282:7: error: invalid type argument of
unary '*' (have 'int')
       *_v3 = (int) (name);     \
       ^
./libc/sysdeps/linux/arm/sysdep.h:324:2: note: in expansion of macro
'INTERNAL_SYSCALL_RAW'
  INTERNAL_SYSCALL_RAW(SYS_ify(name), err, nr, args)
  ^
./libc/sysdeps/linux/arm/sysdep.h:256:40: note: in expansion of macro
'INTERNAL_SYSCALL'
   ({ unsigned int _inline_sys_result = INTERNAL_SYSCALL (name, , nr,
args); \
                                        ^
libc/sysdeps/linux/common/sync_file_range.c:32:9: note: in expansion of
macro 'INLINE_SYSCALL'
  return INLINE_SYSCALL(sync_file_range, 7, fd, 0,
         ^
Makerules:392: recipe for target
'libc/sysdeps/linux/common/sync_file_range.os' failed
make[1]: *** [libc/sysdeps/linux/common/sync_file_range.os] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory
'/home/gustavoz/b/router01/output/build/uclibc-snapshot'
package/pkg-generic.mk:183: recipe for target
'/home/gustavoz/b/router01/output/build/uclibc-snapshot/.stamp_built' failed
make: ***
[/home/gustavoz/b/router01/output/build/uclibc-snapshot/.stamp_built]
Error 2
-----

By the way, gcc 4.8.x is building good code as well with binutils 2.25,
so it seems gcc 4.9.x has some regression in thumb1.
Regards.


More information about the uClibc mailing list