file names embedded in kernel image
Hi
I just noticed that when one build the kernel outside the source tree, all __FILE__ occurences get replaced with the absolute path (since that's what is given to gcc, and most -I paths are also absolute). This ends up wasting quite a lot of space in .rodata, and I suppose most distro supplied kernels have this issue. For example, my ubuntu kernel is full of strings like
/build/linux-hFNI9K/linux-3.13.0/arch/x86/platform/sfi/sfi.c /build/linux-hFNI9K/linux-3.13.0/kernel/fork.c
The /build/linux-hFNI9K/linux-3.13.0/ prefixes add up (and since it's an artifact of the build process, wouldn't add any value in a bug-report which one wouldn't also get from uname -a).
Distros could avoid this by building in-tree (maybe some already do) but I was wondering if we could do something upstream.
Rasmus
Dne 27.8.2015 v 11:44 Rasmus Villemoes napsal(a):
Quoted 11 lines
Hi
I just noticed that when one build the kernel outside the source tree, all
__FILE__occurences get replaced with the absolute path (since that's what is given to gcc, and most -I paths are also absolute). This ends up wasting quite a lot of space in .rodata, and I suppose most distro supplied kernels have this issue. For example, my ubuntu kernel is full of strings like/build/linux-hFNI9K/linux-3.13.0/arch/x86/platform/sfi/sfi.c /build/linux-hFNI9K/linux-3.13.0/kernel/fork.c
If you build in a subdirectory of the source tree, the filenames will look like
../arch/x86/platform/sfi/sfi.c../kernel/fork.c
Michal