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