SWI relocation error building ARM Cortex-A8 toolchain

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


Hi,

I'm trying to build a cross toolchain for the ARM Cortex-A8 core
(ARMv7-A).  (See my configuration and build procedure [1] for GCC and
EGLIBC.)  I've built and installed Linux's headers, Binutils, GMP, MPFR,
MPC, and a statically-linked GCC.  When I try to build EGLIBC, I get the
following error about software interrupt relocation:

  ../sysdeps/unix/syscall.S: Assembler messages:
  ../sysdeps/unix/syscall.S:28: Error: cannot represent SWI relocation i
  n this object file format

A previous message [2] on this list suggested that the issue is that
Linux has deprecated and removed a number of system calls, including
"__NR_syscall", for the ARM EABI in arch/arm/include/asm/unistd.h.  I
checked this by following the macro definitions in EGLIBC 2.15 from
libc/sysdeps/unix/syscall.S:28:
  - to "SYSCALL" at libc/sysdeps/unix/sysdep.h:30,
  - to "PSEUDO" at ports/sysdeps/unix/sysv/linux/arm/sysdep.h:78,
  - to "DO_CALL" at ports/sysdeps/unix/sysv/linux/arm/sysdep.h:195,
  - to "SYS_ify" at ports/sysdeps/unix/sysv/linux/arm/sysdep.h:44,
  - to "__NR_syscall" as undefined in arch/arm/include/asm/unistd.h.

I tried removing the system call "#undef" lines in asm/unistd.h and
building EGLIBC, but then I got the following warnings and errors about
versioned symbols like "getrlimit@GLIBC_2.0":

  <build>/misc/stub-syscalls.c:2:18: warning: ISO C99 requires whitespac
  e after the macro name [enabled by default]
  <build>/misc/stub-syscalls.c:8:17: warning: extra tokens at end of #un
  def directive [enabled by default]
  <build>/misc/stub-syscalls.c:18:1: error: stray '@' in program
  <build>/misc/stub-syscalls.c:18:1: error: expected '=', ',', ';', 'asm
  ' or '__attribute__' before 'GLIBC_2'
  <build>/misc/stub-syscalls.c:19:1: error: stray '@' in program
  <build>/misc/stub-syscalls.c:19:1: error: expected '=', ',', ';', 'asm
  ' or '__attribute__' before 'GLIBC_2'
  <build>/misc/stub-syscalls.c:20:1: error: stray '@' in program
  <build>/misc/stub-syscalls.c:20:1: error: expected '=', ',', ';', 'asm
  ' or '__attribute__' before 'GLIBC_2'

("<build>" is the path to the directory in which I tried to build EGLIBC.)

Can anyone help me get EGLIBC 2.15 built for the ARM Cortex-A8 using GCC
4.6?  I suspect this might have something to do with my target-specific
GCC options [3].

Toolchain components:
  Binutils     2.22
  GMP          5.0.2
  MPFR         3.1.0
  MPC          0.9
  GCC          4.6.2
  EGLIBC       2.15
  Linux-libre  3.2.7

Build system:
  Debian GNU/Linux wheezy
  Binutils     2.22
  GCC          4.6.3
  Linux        3.2.0

1:
http://git.os.pehjota.net/notes/free-embedded-os.git/tree/temporary-bootstrap-builder-setup-cortexa8.txt?id=8b0ef4a9#n245
2: http://gcc.gnu.org/ml/gcc-help/2011-01/msg00062.html
3:
http://git.os.pehjota.net/notes/free-embedded-os.git/tree/temporary-bootstrap-builder-setup-cortexa8.txt?id=8b0ef4a9#n110

Thanks,
-- 
P. J. McDermott     http://www.pehjota.net/            (_/@\_)    ,--.
mailto:pjm@xxxxxxx  http://identi.ca/pehjota      o    < o o >   / oo \
                                                    o   \ `-/    | <> |.
                                                o o o    "~v    /_\--/_/


[Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

Add to Google