On 2021/10/21 0:55, Kees Cook wrote:
On Tue, Oct 19, 2021 at 10:14:34AM +0800, Ye Weihua wrote:
Hi,
When I was compiling the ppc32 kernel with the compilation option
'-fdata-sections', a compilation error occurred and the message was as
follows:
"Inconsistent kallsyms data
Try make KALLSYMS_EXTRA_PASS=1 as a workaround"
After comparing the symbol tables, I found that the "_end" and "__bss_stop"
positions in Symtem.map and tmp_System.map are different: in Symtem.map they
are in the middle of the symbol table. In tmp_System.map, they are at the
end of the symbol table.
commit af73d78bd384aa9b add "strip-debug" to improve performance. However,
the addition takes effect only for tmp_vmlinux but not for vmlinux. As a
result, the symbol tables are different after the "-fdata-sections"
compilation option is enabled.
How the "strip-debug" compilation option affects symbol table order?
Can "strip-debug" be added during vmlinux generation?
How did you add -fdata-sections? There needs to be a lot of special
handling to use that option...
I added "-fdata-sections" to the "CFLAGS_KERNEL" field and "-Wl,--gc-sections" to "LDFLAGS_VMLINUX" in Makefile. I've configured it this way on other architectures, but I haven't had the same problem with the exception of ppc32. Are there any other configurations or steps required?
Thanks.