Question about "Inconsistent kallsyms data"

Paulo Marques pmarques at grupopie.com
Tue Aug 2 12:29:54 EDT 2011


Tomasz Figa wrote:
> On Friday 29 of July 2011 at 12:58:32, Tomasz Figa wrote:
>>[...]
>> I will try to bisect the case with s3c6400 defconfig.
> 
> I have no idea why, but I cannot reproduce the issue anymore, even after make 
> distclean or starting with a clean tree. A build system bug?
> 
> I do not know much technical details about the kernel build system, but might 
> it be a concurrency issue (I use make -j5 for building with 5 jobs)?

Usually this is caused by symbols moving slightly between kernel compiles.

This is an explanation of the process I wrote a while ago in a different
thread at LKML:

> Now as for CONFIG_KALLSYMS_EXTRA_PASS: to build the kallsyms table, the
> build process first links a kernel image with an empty kallsyms table
> and use that to fetch information for all the symbols.
> 
> It then uses that information to build the table with the right size,
> and links it again. If everything goes ok, this new version as all the
> symbols in the correct places and the final table can be built with the
> correct addresses.
> 
> The final linking should produce the same result as only the data on the
> kallsyms table changed, but not its size.
> 
> However, there have been bugs in the past with section alignments and
> symbol reordering for symbols with the same address, etc., etc. that
> make this final table not have the exact same size, and the build fails
> with an inconsistent kallsyms data message. At this point, the user can
> turn on the CONFIG_KALLSYMS_EXTRA_PASS and temporarily solve the problem
> while the developers find the correct fix. Without this option, in this
> situation the kernel would simply fail the compilation.
> 
> All this has been stable for a while and this option hasn't been needed
> recently (AFAIK), but if there is some bug in some new binutils or
> something, the option might be needed again.

To check inconsistencies, the Makefile compares ".tmp_System.map" and
"System.map" for differences.

On a normal build they should be identical, but if this fails with
"Inconsistent kallsyms data" you could try comparing the two files to
check which symbols are causing trouble.

-- 
Paulo Marques - www.grupopie.com

"All generalizations are false."



More information about the linux-arm-kernel mailing list