Comment 8 for bug 673236

Revision history for this message
Jamie Lokier (jamie-shareable) wrote :

I can confirm this problem, although my symptoms are slightly different.

I've been using vanilla kernels (tracking kernel.org) since Lucid on my x86 32-bit laptop.
After upgrading to Maverick, subsequent built kernels all failed to boot, panicing early with a message about timer IRQ routing and the APIC.

After spending a few days (:-/) bisecting, because I thought a new revision must be the cause, I eventually found the exact same git revision and kernel config failed to boot, compared with a previously built kernel that is fine (using it at the moment).

I downgraded all the GCC packages to Lucid's version, and the resulting build still failed to boot, in the same way.

Then I downgraded Binutils to Lucid's version, rebuilt, and the resulting kernel (a) booted fine (using it at the moment), and (b) had the same symbol map as the kernel built previously before I upgraded Lucid to Maverick.

This means Binutils is definitely affecting the kernel build, in a way which causes various boot failures.

Comments earlier in this bug, my different symptom, and a mention elsewhere (https://bugs.launchpad.net/ubuntu/+source/linux/+bug/633983/comments/36), imply that the symptoms aren't consistent, except that booting fails.

The variation in symptoms is entirely consistent with CONFIG_RELOCATABLE having something to do with it. That is, it looks like random code corruption ;-)

When I compare the kernel's Symbol.map built with Lucid vs. Maverick's binutils, and Lucid's gcc (for both), with my particular kernel + config, I see this:

    - The version built with Maverick's binutils has slightly larger kallsyms tables (just a few bytes).
      Everything else in Symbol.map looks to be the same size.
    - In arch/x86/boot/compressed/vmlinux, the ELF section sizes (objdump -h) are the same size
      in both versions, except .rodata..compressed is about 1.6k smaller in the version
      built with Maverick.
    - In arch/x86/boot/compressed/vmlinux.bin, the ELF section sizes are the same size, except
      in the Maverick-binutils-built version, .rodata is 16 bytes smaller, .param is 32 bytes smaller,
      and .init.data is 32 byte larger.

I'm still looking at the reason for the differences.