This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

SWI relocation error building ARM Cortex-A8 toolchain


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 the gcc-help 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 first posted [3] this on the gcc-help list; I'm not exactly sure where
my issue lies.

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
  EGLIBC       2.13
  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://gcc.gnu.org/ml/gcc-help/2012-04/msg00214.html

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]