This is the mail archive of the
gcc-help@gcc.gnu.org
mailing list for the GCC project.
SWI relocation error building ARM Cortex-A8 toolchain
- From: "P. J. McDermott" <pjm at nac dot net>
- To: gcc-help at gcc dot gnu dot org
- Date: Thu, 19 Apr 2012 15:30:10 -0400
- Subject: 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 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@nac.net http://identi.ca/pehjota o < o o > / oo \
o \ `-/ | <> |.
o o o "~v /_\--/_/