This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Failed to build linux-2.6.34-rc5 when CONFIG_RELOCATABLE=y using gold
- From: Wenji Huang <wenji dot huang at oracle dot com>
- To: <iant at google dot com>
- Cc: <randy dot dunlap at oracle dot com>, <elena dot zannoni at oracle dot com>, <binutils at sourceware dot org>, <kris dot van dot hees at oracle dot com>
- Date: Wed, 2 Jun 2010 07:19:36 -0700 (PDT)
- Subject: Re: Failed to build linux-2.6.34-rc5 when CONFIG_RELOCATABLE=y using gold
> On 05/12/2010 01:05 PM, Ian Lance Taylor wrote:
>> Randy Dunlap<randy.dunlap@oracle.com> writes:
>>
>>> FYI: a reported modprobe bug when using gold:
>>> https://bugzilla.kernel.org/show_bug.cgi?id=15466
> The declaration and reference:
>
> extern struct builtin_fw __start_builtin_fw[];
> for (b_fw = __start_builtin_fw; b_fw != __end_builtin_fw; b_fw++)
>
> But the definition is in linker script.
>
> . = ALIGN(((1 << 12))); .rodata
> /*snip*/
> .builtin_fw : AT(ADDR(.builtin_fw) - 0xC0000000) { __start_builtin_fw
> = .; *(.builtin_fw) __end_builtin_fw = .; }
>
> Once we removed the reference of __start_builtin_fw, it won't exist in
> absolute symbol table. I don't understand how gold will deal with the
> case and fix it either.
>
>Thanks for looking into this.
>
>I don't quite understand what you are saying. Are you saying that
>gold is generating __start_builtin_fw as an absolute symbol rather
>than as a section relative symbol, and that that is causing the
>problem with the kernel?
>
>Ian
Yes, the warning message is in my previous email. Some absolute
symbols are generated.
LD vmlinux
SYSMAP System.map
SYSMAP .tmp_System.map
VOFFSET arch/x86/boot/voffset.h
OBJCOPY arch/x86/boot/compressed/vmlinux.bin
RELOCS arch/x86/boot/compressed/vmlinux.relocs
WARNING: Absolute relocations present
Offset Info Type Sym.Value Sym.Name
c101c4de 007e5201 R_386_32 c144f000 __init_end
c101c4e3 007e5301 R_386_32 c13f3000 __init_begin
c104fe83 0085a501 R_386_32 c139387c __start___kcrctab_gpl_future
c104fee4 0085ac01 R_386_32 c138f4dc __start___ksymtab_gpl_future
c104feec 0085ad01 R_386_32 c138f4dc __stop___ksymtab_gpl_future
c11ae76f 00a39401 R_386_32 c1386d9c __start_builtin_fw
c11ae78d 00a39501 R_386_32 c1386d9c __end_builtin_fw
c1402ae9 007e5201 R_386_32 c144f000 __init_end
c1402aef 007e5301 R_386_32 c13f3000 __init_begin
c1402b8d 007e5201 R_386_32 c144f000 __init_end
c1402b92 007e5301 R_386_32 c13f3000 __init_begin
c1402ddc 007e5201 R_386_32 c144f000 __init_end
c1402de8 007e5201 R_386_32 c144f000 __init_end
c1402ecd 007e5201 R_386_32 c144f000 __init_end
This is the problem with kernel.
Regards,
Wenji