ftrace/MIPS related x86_64 build failure on in Linus' tree

From: Stephen Rothwell
Date: Wed Dec 15 2010 - 00:05:17 EST


Hi all,

Since October 31 our x86_64 allmodconfig builds have been failing like this:

/opt/crosstool/gcc-4.4.3-nolibc/x86_64-linux/bin/x86_64-linux-ld: arch/x86/ia32/sys_ia32.o: bad reloc symbol index (0x1000000 >= 0x6b) for offset 0x808080 in section `__mcount_loc'
arch/x86/ia32/sys_ia32.o: could not read symbols: Bad value

and many similar
(http://fandango2.ozlabs.ibm.com/kisskb/buildresult/3423985/). I finally
got around to bisecting it and it comes down to this commit:

a2d49358ba9bc93204dc001d5568c5bdb299b77d is the first bad commit
commit a2d49358ba9bc93204dc001d5568c5bdb299b77d
Author: John Reiser <jreiser@xxxxxxxxxxxx>
Date: Wed Oct 27 18:59:07 2010 +0800

ftrace/MIPS: Add MIPS64 support for C version of recordmcount

MIPS64 has 'weird' Elf64_Rel.r_info[1,2], which must be used instead of
the generic Elf64_Rel.r_info, otherwise, the C version of recordmcount
will not work for "segmentation fault".

Usage of "union mips_r_info" and the functions MIPS64_r_sym() and
MIPS64_r_info() written by Maciej W. Rozycki <macro@xxxxxxxxxxxxxx>

----
[1] http://techpubs.sgi.com/library/manuals/4000/007-4658-001/pdf/007-4658-001.pdf
[2] arch/mips/include/asm/module.h

Tested-by: Wu Zhangjin <wuzhangjin@xxxxxxxxx>
Signed-off-by: John Reiser <jreiser@xxxxxxxxxxxx>
Signed-off-by: Maciej W. Rozycki <macro@xxxxxxxxxxxxxx>
LKML-Reference: <AANLkTinwXjLAYACUfhLYaocHD_vBbiErLN3NjwN8JqSy@xxxxxxxxxxxxxx>
LKML-Reference: <910dc2d5ae1ed042df4f96815fe4a433078d1c2a.1288176026.git.wuzhangjin@xxxxxxxxx>
Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>
Signed-off-by: Ralf Baechle <ralf@xxxxxxxxxxxxxx>

:040000 040000 c208c976b8bd3eb28791d0e96dcb24967586fbb0 28da1214674ed267e0c4aa249379504bc8b20216 M scripts

This seems to be tool chain specific. We are using a PowerPC hosted
x86_64 cross compiler:

x86_64-linux-gcc (GCC) 4.4.3
GNU ld (GNU Binutils) 2.20

[It does *not* fail for our x86_64 hosted x86_64 compiler:

x86_64-linux-gcc (GCC) 4.4.4
GNU ld (GNU Binutils) 2.20
]

I tried reverting that commit (and the next commit
412910cd046c1f14f0fba9c0aec401d47e57dcd1 "ftrace/MIPS: Add module support
for C version of recordmcount" because of conflicts) and the build of
Linus' current tree now succeeds with the above toolchain,

--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx
http://www.canb.auug.org.au/~sfr/

Attachment: pgp00000.pgp
Description: PGP signature