lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240801192008.GA3923315@thelio-3990X>
Date: Thu, 1 Aug 2024 12:20:08 -0700
From: Nathan Chancellor <nathan@...nel.org>
To: Thomas Weißschuh <linux@...ssschuh.net>
Cc: Jose Fernandez <jose.fernandez@...ux.dev>,
	Christian Heusel <christian@...sel.eu>,
	Masahiro Yamada <masahiroy@...nel.org>,
	Nicolas Schier <nicolas@...sle.eu>,
	Peter Jung <ptr1337@...hyos.org>, linux-kbuild@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] kbuild: add debug package to pacman PKGBUILD

On Thu, Aug 01, 2024 at 08:53:54PM +0200, Thomas Weißschuh wrote:
> On 2024-08-01 11:36:37+0000, Nathan Chancellor wrote:
> > Hi Jose,
> > 
> > On Thu, Aug 01, 2024 at 07:29:40AM -0600, Jose Fernandez wrote:
> > > Add a new -debug package to the pacman PKGBUILD that will contain the
> > > vmlinux image for debugging purposes. This package depends on the
> > > -headers package and will be installed in /usr/src/debug/${pkgbase}.
> > > 
> > > The vmlinux image is needed to debug core dumps with tools like crash.
> > > 
> > > Signed-off-by: Jose Fernandez <jose.fernandez@...ux.dev>
> > > Reviewed-by: Peter Jung <ptr1337@...hyos.org>
> > 
> > This appears to add a non-trivial amount of time to the build when benchmarking
> > with Arch Linux's configuration (I measure 9% with hyperfine):
> 
> As nothing more is compiled, I guess this is just the additional
> packaging.
> 
> > Benchmark 1: pacman-pkg @ 21b136cc63d2 ("minmax: fix up min3() and max3() too")
> >   Time (mean ± σ):     579.541 s ±  0.585 s    [User: 22156.731 s, System: 3681.698 s]
> >   Range (min … max):   578.894 s … 580.033 s    3 runs
> > 
> > Benchmark 2: pacman-pkg @ c5af4db0563b ("kbuild: add debug package to pacman PKGBUILD")
> >   Time (mean ± σ):     633.419 s ±  0.972 s    [User: 22247.886 s, System: 3673.879 s]
> >   Range (min … max):   632.302 s … 634.070 s    3 runs
> > 
> > Summary
> >   pacman-pkg @ 21b136cc63d2 ("minmax: fix up min3() and max3() too") ran
> >     1.09 ± 0.00 times faster than pacman-pkg @ c5af4db0563b ("kbuild: add debug package to pacman PKGBUILD")
> > 
> > It would be nice to add some option to avoid building this package for
> > developers who may not want it (I know I personally would not want it
> > with that penalty because I do a lot of bisects) or maybe adding a
> > target to build this package with the rest like 'pacman-pkg-with-dbg' or
> > something? Also, couldn't vmlinux be obtained from vmlinuz that already
> > exists in the main package via scripts/extract-vmlinux?
> 
> Jose:
> 
> In the vanilla PKGBUILD vmlinux is part of the linux-headers package:
> linux-headers /usr/lib/modules/6.10.2-arch1-1/build/vmlinux
> 
> Given that you already gate the new -debug package on CONFIG_MODULES,
> why not add the file to that package?
> 
> Then we could still discuss if it makes sense to gate vmlinux on
> CONFIG_MODULES or if -headers should be enabled unconditionally again.

I think having -headers be enabled/built by default is probably okay
since a regular user/builder might have external modules that need to be
rebuilt against the new kernel. However, I (and likely many other
upstream developers, however many use Arch) never build external modules
against my kernels, so it would be nice to have some way to opt out of
this penalty. I suspect it is just compressing down such a massive
vmlinux that causes this? I have not had access to a build log with my
testing, so unsure.

> Or we wait for somebody to show up and ask for it.

I won't insist though so if we want to wait for someone else, that's
fine with me too.

> > Cheers,
> > Nathan
> > 
> > > ---
> > >  scripts/package/PKGBUILD | 10 ++++++++++
> > >  1 file changed, 10 insertions(+)
> > > 
> > > diff --git a/scripts/package/PKGBUILD b/scripts/package/PKGBUILD
> > > index 663ce300dd06..beda3db21863 100644
> > > --- a/scripts/package/PKGBUILD
> > > +++ b/scripts/package/PKGBUILD
> > > @@ -6,6 +6,7 @@ pkgbase=${PACMAN_PKGBASE:-linux-upstream}
> > >  pkgname=("${pkgbase}" "${pkgbase}-api-headers")
> > >  if grep -q CONFIG_MODULES=y include/config/auto.conf; then
> > >  	pkgname+=("${pkgbase}-headers")
> > > +	pkgname+=("${pkgbase}-debug")
> > >  fi
> > >  pkgver="${KERNELRELEASE//-/_}"
> > >  # The PKGBUILD is evaluated multiple times.
> > > @@ -89,6 +90,15 @@ _package-headers() {
> > >  	ln -sr "${builddir}" "${pkgdir}/usr/src/${pkgbase}"
> > >  }
> > >  
> > > +_package-debug(){
> > > +    pkgdesc="Non-stripped vmlinux file for the ${pkgdesc} kernel"
> > > +    depends=(${pkgbase}-headers)
> > > +
> > > +    cd "${objtree}"
> > > +    mkdir -p "$pkgdir/usr/src/debug/${pkgbase}"
> > > +    install -Dt "$pkgdir/usr/src/debug/${pkgbase}" -m644 vmlinux
> > > +}
> > > +
> > >  _package-api-headers() {
> > >  	pkgdesc="Kernel headers sanitized for use in userspace"
> > >  	provides=(linux-api-headers)
> > > -- 
> > > 2.46.0
> > > 

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ