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