bug-binutils
[Top][All Lists]
Advanced

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

[Bug gold/11490] New: gold: unbootable Linux kernel, wrong alignment for


From: edwintorok at gmail dot com
Subject: [Bug gold/11490] New: gold: unbootable Linux kernel, wrong alignment for .rodata/.text ". = ALIGN((1 << 21)); "
Date: 12 Apr 2010 18:03:26 -0000

Tried to compile Linux 2.6.33, and 2.6.34-rc3 with gold.
Linking succeeded, but it fails to boot, it just keeps on rebooting.

To reproduce (you can also download just the tarball, but its easier if you just
clone if you want to test multiple versions):
1. git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
2. git checkout v2.6.34-rc3 (or v2.6.33)
3. Use my attached .config on x86-64
4. Build it, I used gcc version 4.4.3 (Debian 4.4.3-7), and
GNU gold (GNU Binutils 2.20.51.20100410) 1.9

gold was built from CVS, with a simple --enable-gold, make all-gold,
and then copying ld-new to /usr/local/bin/ld, clearing bash's cache (hash -r),
and building Linux using 'make'.

5. Try to boot it either on a real system, or with qemu-system-x86_64/kvm
(recommended):
kvm -kernel arch/x86/boot/bzImage

On a failed boot you just see the BIOS version flashing, and no messages from
the kernel.

6. Use the normal (non-gold/bfd) linker, I used GNU ld (GNU Binutils for Debian)
2.20.1-system.20100303.
7. make clean
8. make 
Try to boot the kernel with kvm/qemu as above.
On a successful boot you should see some kernel messages, and finally a kernel
panic because we didn't provide it a disk to boot from.

(Note: you could also just rm vmlinux, and make bzImage, but if you keep moving
from gold to system linker and back at some point it'll complain about wrong
kallsyms values).

This is the KVM I used, but you can try to boot the kernel with anything that
would normally boot it.
QEMU PC emulator version 0.12.3 (qemu-kvm-0.12.3), Copyright (c) 2003-2008
Fabrice Bellard

See the discussion here (and earlier):
http://sourceware.org/ml/binutils/2010-04/msg00141.html
http://sourceware.org/ml/binutils/2010-04/msg00139.html

". = ALIGN((1 << 21));" should propagate to .p_align, but doesn't.

Will attach an updated diff of section/program headers as requested on the ML.

-- 
           Summary: gold: unbootable Linux kernel, wrong alignment for
                    .rodata/.text ". = ALIGN((1 << 21));"
           Product: binutils
           Version: 2.21 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gold
        AssignedTo: ian at airs dot com
        ReportedBy: edwintorok at gmail dot com
                CC: bug-binutils at gnu dot org
 GCC build triplet: x86_64-linux-gnu
  GCC host triplet: x86_64-linux-gnu
GCC target triplet: x86_64-linux-gnu


http://sourceware.org/bugzilla/show_bug.cgi?id=11490

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]