Messages in this thread | | | Subject | Re: vmlinux ELF header sometimes corrupt | From | Rasmus Villemoes <> | Date | Fri, 24 Jan 2020 12:16:17 +0100 |
| |
On 24/01/2020 11.50, Michael Ellerman wrote: > Rasmus Villemoes <linux@rasmusvillemoes.dk> writes: >> I'm building for a ppc32 (mpc8309) target using Yocto, and I'm hitting a >> very hard to debug problem that maybe someone else has encountered. This >> doesn't happen always, perhaps 1 in 8 times or something like that. >> >> The issue is that when the build gets to do "${CROSS}objcopy -O binary >> ... vmlinux", vmlinux is not (no longer) a proper ELF file, so naturally >> that fails with >> >> powerpc-oe-linux-objcopy:vmlinux: file format not recognized >> >> >> Any ideas? > > Not really sorry. Haven't seen or heard of that before. > > Are you doing a parallel make? If so does -j 1 fix it?
Hard to say, I'll have to try that a number of times to see if it can be reproduced with that setting.
> If it seems like sortextable is at fault then strace'ing it would be my > next step.
I don't think sortextable is at fault, that was just my first "I know that at least pokes around in the ELF file". I do "cp vmlinux vmlinux.before_sort" and "cp vmlinux vmlinux.after_sort", and both of those copies are proper ELF files - and the .after_sort is identical to the corrupt vmlinux apart from vmlinux ending up with its ELF header wiped.
So it's something that happens during some later build step (Yocto has a lot of steps), perhaps "make modules" or "make modules_install" or something ends up somehow deciding "hey, vmlinux isn't quite uptodate, let's nuke it". I'm not even sure it's a Kbuild problem, but I've seen the same thing happen using another meta-build system called oe-lite, which is why I'm not primarily suspecting the Yocto logic.
Rasmus
| |