Re: make deb-pkg: Does not strip debug symbols when compressing modules

Masahiro Yamada
2023-12-16T01:25:22Z

On Fri, Dec 15, 2023 at 5:16 AM Salvatore Bonaccorso <carnil@debian.org> wrote:
>
> Hi,
>
> On Thu, Dec 14, 2023 at 09:10:41PM +0100, Salvatore Bonaccorso wrote:
> > Hi
> >
> > When using (only tested with XZ compression, but the others should
> > behave similarly) CONFIG_MODULE_COMPRESS_XZ=y to compress the modules,
> > it looks that the debug symbols are not striped.
> >
> > Building with the attached test configuration results in packages:
> >
> > -rw-r--r-- 1 build build 8.9M Dec 14 20:47 linux-headers-6.7.0-rc5+_6.7.0-rc5-00042-g88035e5694a8-1_amd64.deb
> > -rw-r--r-- 1 build build 75M Dec 14 20:48 linux-image-6.7.0-rc5+-dbg_6.7.0-rc5-00042-g88035e5694a8-1_amd64.deb
> > -rw-r--r-- 1 build build 1014M Dec 14 20:47 linux-image-6.7.0-rc5+_6.7.0-rc5-00042-g88035e5694a8-1_amd64.deb
> > -rw-r--r-- 1 build build 1.3M Dec 14 20:47 linux-libc-dev_6.7.0-rc5-00042-g88035e5694a8-1_amd64.deb
> >
> > This is odd, the linux-image-6.7.0-rc5+ package has a size of almost
> > 1G and the modules are not stripped.
> >
> > Switching the values instread to
> >
> > CONFIG_MODULE_COMPRESS_NONE=y
> > # CONFIG_MODULE_COMPRESS_XZ is not set
> >
> > the packages are again produced correctly:
> >
> > -rw-r--r-- 1 build build 8.9M Dec 14 20:59 linux-headers-6.7.0-rc5+_6.7.0-rc5-00042-g88035e5694a8-2_amd64.deb
> > -rw-r--r-- 1 build build 819M Dec 14 21:00 linux-image-6.7.0-rc5+-dbg_6.7.0-rc5-00042-g88035e5694a8-2_amd64.deb
> > -rw-r--r-- 1 build build 73M Dec 14 20:59 linux-image-6.7.0-rc5+_6.7.0-rc5-00042-g88035e5694a8-2_amd64.deb
> > -rw-r--r-- 1 build build 1.3M Dec 14 20:59 linux-libc-dev_6.7.0-rc5-00042-g88035e5694a8-2_amd64.deb
>
> and the classical one. Missed to attach the promised attachement. The
> used config is now here.
>
> Regards,
> Salvatore

The debug package never compiled properly with module compression.

The suffix of modules is .ko.xz instead of .ko in your case.

The following line in scripts/package/builddeb does not match anything.

for module in $(find ${image_pdir}/lib/modules/ -name *.ko -printf
'%P\n'); do

So, nothing is copied to linux-image-dbg, nothing is stripped from linux-image.

Debian kernel does similar, and it was OK because
Debian does not enable CONFIG_MODULE_COMPRESS_*.

Recently, the following commit was applied. [1]

commit de26137e2a9f847ce65e370d4bf61745f75a4e5d
Author: Bastian Blank <waldi@debian.org>
AuthorDate: Wed Dec 14 09:52:23 2022 +0100
Commit: Bastian Blank <waldi@debian.org>
CommitDate: Sun Oct 8 10:29:38 2023 +0200

Drop not needed extra step to add debug links

The build step already includes a sufficient GNU debug link section
containing a build ID in the kernel modules. This means we don't have
to manually create one later, so remove the code that does it.

Perhaps, upstream kernel can do similar things to make the code simpler.
('make module_install INSTALL_MOD_STRIP=1' for linux-image,
'make modules_install' for linux-image-dbg)

I CCed Ben and Bastian.

[1] https://salsa.debian.org/kernel-team/linux/-/commit/de26137e2a9f847ce65e370d4bf61745f75a4e5d

--
Best Regards
Masahiro Yamada