Test Build 2) New behavior if ZFS modules are *not* built with debug
symbols

goal: show failsafe/backwards compatible behavior if zfs-dksm doesn't 
support/build debug symbols
      and kernel build log reports missing debug symbols, and extra modules 
have .gnu_debuglink.

- test packaging
- zfs not built with debug symbols (disabled manually in dkms-build if-check)
- zfs modules not present in debug package
- extra modules have .gnu_debuglink section
- (no regressions)

Test packaging, with debug symbols *not enabled* in zfs-dkms:

        The debug symbols are not found (as expected), 
        and this case is handled without problems:

        II: dkms-build installing zfs into 
/home/ubuntu/dbgsym/unstable/debian/linux-image-unsigned-5.3.0-8-generic-dbgsym/usr/lib/debug/lib/modules/5.3.0-8-generic/kernel/zfs
 (debug symbols)
        ignoring zavl.ko (missing debug symbols)
        stripping zavl.ko
        ignoring znvpair.ko (missing debug symbols)
        stripping znvpair.ko
        ignoring zunicode.ko (missing debug symbols)
        stripping zunicode.ko
        ignoring zcommon.ko (missing debug symbols)
        stripping zcommon.ko
        ignoring zfs.ko (missing debug symbols)
        stripping zfs.ko
        ignoring icp.ko (missing debug symbols)
        stripping icp.ko
        ignoring zlua.ko (missing debug symbols)
        stripping zlua.ko
        ignoring spl.ko (missing debug symbols)
        stripping spl.ko
        II: dkms-build installing zfs into 
/home/ubuntu/dbgsym/unstable/debian/linux-modules-5.3.0-8-generic/lib/modules/5.3.0-8-generic/kernel/zfs
        signing zavl.ko
        signing znvpair.ko
        signing zunicode.ko
        signing zcommon.ko
        signing zfs.ko
        signing icp.ko
        signing zlua.ko
        signing spl.ko
        II: dkms-build build zfs complete

The debug package contains the ZFS directory, but it's empty:

        $ dpkg-deb -x 
linux-image-unsigned-5.3.0-8-generic-dbgsym_5.3.0-8.9_amd64.ddeb 
ddeb-test-disabled
        $ ls 
ddeb-test-disabled/usr/lib/debug/lib/modules/5.3.0-8-generic/kernel/zfs/
        $

The kernel build log documents which modules do not have debug symbols,
now covering modules built with DKMS (zfs and vbox):

        $ grep WARNING build.log 
                        echo "WARNING: Missing debug symbols for module 
'$module'."; \
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/zavl.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/znvpair.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/zunicode.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/zcommon.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/zfs.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/icp.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/zlua.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/zfs/spl.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/virtualbox-guest/vboxguest.ko'.
        WARNING: Missing debug symbols for module 
'/lib/modules/5.3.0-8-generic/kernel/virtualbox-guest/vboxsf.ko'.

The ZFS modules have no '.gnu_debuglink' section or any other debug
section (as expected):

        $ dpkg-deb -x linux-modules-5.3.0-8-generic_5.3.0-8.9_amd64.deb
deb-modules

        $ find deb-modules/ -name '*.ko' | while read ko; do objdump -h -j 
.gnu_debuglink $ko >/dev/null 2>&1 || echo "Module without debug link '$ko'"; 
done
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/icp.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/spl.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/zavl.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/zcommon.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/zfs.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/zlua.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/znvpair.ko'
        Module without debug link 
'deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/zunicode.ko'

        $ for ko in deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/*.ko; do 
objdump -h $ko | grep debug; done
        $

But all modules in 'linux-modules-extra' now have '.gnu_debuglink' sections
(except virtualbox modules which are DKMS-built without debug symbols too.)

        $ dpkg-deb -x linux-modules-
extra-5.3.0-8-generic_5.3.0-8.9_amd64.deb deb-modules-extra

        $ find deb-modules-extra/ -name '*.ko' | while read ko; do objdump -h 
-j .gnu_debuglink $ko >/dev/null 2>&1 || echo "Module without debug link 
'$ko'"; done
                Module without debug link 
'deb-modules-extra/lib/modules/5.3.0-8-generic/kernel/virtualbox-guest/vboxguest.ko'
                Module without debug link 
'deb-modules-extra/lib/modules/5.3.0-8-generic/kernel/virtualbox-guest/vboxsf.ko'


        $ find deb-modules-extra/ -name '*.ko' | wc -l
        4508

The objdump disassembly is identical (no instruction changes expected
from packaging-only changes)

        build1 $ for ko in 
deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/*.ko; do objdump -d $ko > 
objdump_-d/$(basename $ko).log; done
        build2 $ for ko in 
deb-modules/lib/modules/5.3.0-8-generic/kernel/zfs/*.ko; do objdump -d $ko > 
objdump_-d/$(basename $ko).log; done

        $ diff -ur build1/objdump_-d/ build2/objdump_-d/
        $

All 'objdump -d' files are definitely non-empty:

        $ wc -l build1/objdump_-d/* build2/objdump_-d/* | sort -t / -k2,2
          807994 total
             802 build1/objdump_-d/zavl.ko.log
             802 build2/objdump_-d/zavl.ko.log
            3695 build1/objdump_-d/zunicode.ko.log
            3695 build2/objdump_-d/zunicode.ko.log
            6333 build1/objdump_-d/zcommon.ko.log
            6333 build2/objdump_-d/zcommon.ko.log
            7365 build1/objdump_-d/znvpair.ko.log
            7365 build2/objdump_-d/znvpair.ko.log
           12189 build1/objdump_-d/spl.ko.log
           12189 build2/objdump_-d/spl.ko.log
           28087 build1/objdump_-d/zlua.ko.log
           28087 build2/objdump_-d/zlua.ko.log
           42498 build1/objdump_-d/icp.ko.log
           42498 build2/objdump_-d/icp.ko.log
          303028 build1/objdump_-d/zfs.ko.log
          303028 build2/objdump_-d/zfs.ko.log

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1840704

Title:
  ZFS kernel modules lack debug symbols

Status in linux package in Ubuntu:
  In Progress

Bug description:
  The ZFS kernel modules aren't built with debug symbols,
  which introduces problems/issues for debugging/support.

  Patches are required in:

  1) linux kernel packaging, to add infrastructure to
     enable/build/strip/package debug symbols on DKMS.
     (this is sufficient with zfs-linux now in Eoan.)

  2) zfs-linux and spl-linux, for the stable releases,
     which need a few patches to enable debug symbols
     (add option './configure --enable-debuginfo' and
     '(ZFS|SPL)_DKMS_ENABLE_DEBUGINFO' to dkms.conf.)

  Initially submitting the kernel patchset for Unstable,
  for review/feedback.  It backports nicely into B/D/E,
  should it be accepted; for X (doesn't use DKMS builds)
  a simpler patch for the moment (until it does) works.

  The zfs/spl-linux patches are ready, to be submitted
  once the approach used by the kernel package settles.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1840704/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to