Fedora kernel build failure: *** ERROR: same build ID in nonidentical files!
Roland McGrath
roland at redhat.com
Mon Feb 11 10:12:34 UTC 2008
David is correct that eu-elfcmp is meant to see the stripped and unstripped
files as matching. Josh is correct that the .gnu.attributes section is the
new thing that is provoking the problem, owing to GCC 4.3.
I'm doing three things:
1. elfcmp's bug is that it sees the .gnu.attribute sections in the stripped
and unstripped files as nonidentical. This is a new section generated
by GCC 4.3, which is not allocated but also is not stripped. So in the
stripped file, its sh_offset (file position) moves when the other
nonallocated sections are removed. I'll fix it upstream to ignore
sh_offset in the cases where doesn't matter. This won't hit rawhide
especially soon. (I'll also deal with the elfutils vs 4.3 on ppc issues
Josh saw, but that is not anything to do with the kernel build.)
This is moot wrt breaking the kernel build because of #3.
2. Part of the debuginfo_args magic macro's regexp was wrong, so it failed
to match the /boot files. This is why /usr/lib/debug/boot/*.debug all
wound up in kernel-debuginfo-common. I fixed the regexp so the .debug
files for any unstripped ELF files in /boot will be sorted into the
right kernel-debuginfo subpackage as originally intended.
This is moot wrt reducing the total debuginfo rpm bloat because of #3.
3. We already copy the unstripped vmlinux into /usr/lib/debug.
(This is whence arises the comparison that hit bug #1.)
So .debug files stripped from an ELF vmlinux installed into /boot
just duplicates the bulky part of that, and bloats that debuginfo rpm.
(With bug #2 fixed, this bloat is properly sorted into each kernel-debuginfo
and kernel-foo-debuginfo rather than going into kernel-debuginfo-common.)
People prefer just having the unstripped vmlinux installed by
kernel-debuginfo even when a split ELF /boot/vmlinux and .debug are
available. It's simpler, and has the whole thing just by installing
a kernel-debuginfo rpm without installing that kernel rpm in /boot.
So, to dump the bloat we keep only one, and the unstripped vmlinux wins.
The way to dump the /usr/lib/debug/boot/*.debug files is to strip the
vmlinux we copy into /boot. I've changed BuildKernel to do this.
There are no other files that ever should have matched the part of the
regexp that was wrong in bug #2, so that fix is masked by this change.
Since the /boot files will be seen as stripped, they won't be processed
by find-debuginfo.sh at all. This circumvents bug #1.
Thanks,
Roland
More information about the Fedora-kernel-list
mailing list