sizeof - kernel modules

Josh Stone jistone at redhat.com
Mon Jun 15 21:28:12 UTC 2015


CC elfutils-devel, this appears to be a regression.  I'm top-posting my
own findings, but I'll leave the kernel report below...

With elfutils-0.162, it appears that "strip" doesn't reduce the file
size when operating in-place (without -o).  This isn't particular to
funny kernel ELF -- I reproduced it on a local stap binary.

My full stap is 31MB.  With strip -o, I get a new 2.5MB file.  With
strip in-place, stap remains 31MB even though the ELF section data does
indicate all the DWARF sections are gone.

I bisected it to commit 77482c4bf63a.
https://git.fedorahosted.org/cgit/elfutils.git/commit/?id=77482c4bf63a92166191e0b8531e9781f6fddbf3

   if (elf->parent == NULL
       && (elf->maximum_size == ~((size_t) 0)
 	  || (size_t) size > elf->maximum_size)
-      && unlikely (ftruncate (elf->fildes, size) != 0))
+      && unlikely (posix_fallocate (elf->fildes, 0, size) != 0))

In elf_begin() w/ ELF_C_RDWR, we get maximum_size == ~0, but now this
posix_fallocate can only increase the file size.  The later part of
write_file() to reduce the size is only called for maximum_size != ~0.


On 06/15/2015 11:32 AM, Josh Boyer wrote:
> On Mon, Jun 15, 2015 at 1:45 PM, drago01 <drago01 at gmail.com> wrote:
>> On Mon, Jun 15, 2015 at 7:38 PM, poma <pomidorabelisima at gmail.com> wrote:
>>>
>>> # du -hs /lib/modules/4.0.5-300.fc22.i686/ | awk '{print $1}'
>>> 42M
>>>
>>> kernel-modules-4.0.5-300.fc22.i686.rpm  ...  17M
>>>
>>> http://dl.fedoraproject.org/pub/fedora/linux/updates/testing/22/i386/k/
>>> ~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~ ~~~~ ~~~
>>>
>>> # du -hs /lib/modules/4.1.0-0.rc7.git0.1.fc23.x86_64/ | awk '{print $1}'
>>> 53M
>>>
>>> kernel-modules-4.1.0-0.rc7.git0.1.fc23.x86_64.rpm  ...  18M
>>>
>>> https://kojipkgs.fedoraproject.org/packages/kernel/4.1.0/0.rc7.git0.1.fc23/x86_64/
>>> ~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~ ~~~~ ~~~ ~~ ~ ~~ ~~~
>>>
>>> # du -hs /lib/modules/4.1.0-0.rc7.git1.1.fc23.x86_64/ | awk '{print $1}'
>>> 439M
>>>
>>> kernel-modules-4.1.0-0.rc7.git1.1.fc23.x86_64.rpm  ...  218M
>>>
>>> http://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/x86_64/os/Packages/k/
>>> ~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~ ~~~~ ~~~ ~~ ~ ~~ ~~~ ~~~~
>>>
>>> # du -hs /lib/modules/4.1.0-0.rc8.git0.1.fc23.x86_64/ | awk '{print $1}'
>>> 438M
>>>
>>> kernel-modules-4.1.0-0.rc8.git0.1.fc23.x86_64.rpm  ...  218M
>>>
>>> https://kojipkgs.fedoraproject.org/work/tasks/9420/10059420/
>>> ~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~ ~~~~~
>>>
>>>
>>> 218 ÷ 18 = 12.111111111
>>> 439 ÷ 53 = 8.283018868
>>>
>>>> = 4.1.0-0.rc7.git1.1 cca. 10 x sizeof
>>
>> Those are debug builds.
> 
> They aren't actually.
> 
> It looks like something in the buildroot stopped stripping the kernel
> modules between rc7.git0 and rc7.git1.  Both elf-utils and binutils
> changed, so maybe something in there.  The same SRPM build on F22 has
> the smaller size.
> 
> I haven't looked into it more than that.  If someone wants to poke at
> this and figure out what broke, that would be excellent.  From a
> kernel package perspective, there isn't anything that we did that
> should cause this change in behavior that I'm aware of.
> 
> josh
> _______________________________________________
> kernel mailing list
> kernel at lists.fedoraproject.org
> https://admin.fedoraproject.org/mailman/listinfo/kernel
> 



More information about the elfutils-devel mailing list