Confusion about build cycle and vmlinux/bzImage (need uncompressed ELF image of built kernel)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I did a few simple independent tests between 'char *foo = "foo"' and 'char 
foo[] = "foo"' and they confirmed what the KJ docs say, that the latter 
results in a smaller object. So I did a test with <fs/partitions/check.c>.

static char *make_block_name(struct gendisk *disk)
{
-	static char *block_str = "block:";
+	static char block_str[] = "block:";

<fs/partitions/check.o> goes from 8149 bytes to 8137 bytes. 'readelf' 
shows that "block:" got moved from .rodata.str1.1 to .data and a 
relocation token got removed that pointed into .rodata.str1.1, saving 12 
bytes.

<fs/built-in.o> goes from 1337360 to 1337320, saving 40 bytes.

<vmlinux>, however, stays exactly the same, at 4520468 bytes. And 
<arch/i386/boot/bzImage> actually increases from 1702520 to 1072552, 
losing 32 bytes.

I could assume that the latter could be due to happenstance of data 
ordering before compression, but I'm sure I'm looking at the wrong 
pre-compression file. What file should I be looking at if I want the ELF 
image of the kernel fully-built but before the bootsector and so forth get 
added to it?

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at http://kernelnewbies.org/FAQ


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux