[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How to fix Lintian 'no-code-sections'?



On Fri, 26 Nov 2021 at 22:10:45 -0800, Otto Kekäläinen wrote:
> Lintian in Debian unstable has a new test that my package is failing on:
> https://lintian.debian.org/tags/no-code-sections

As with any Lintian tag, I would recommend doing your own assessment
of whether this is a real error before assuming there is a bug that you
need to fix.

This particular one looks like it's a Lintian bug:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1000469 (fixed in git)

Looking at the results reported with current Lintian, it seems to me
that this check was initially assuming that every object file (.o) in
a static library is expected to contain at least some executable code,
but I don't think that's really true:

* some translation units end up effectively empty, because they contain
  only functions that are #ifdef'd out under the build options in use,
  for example SDL_evdev_kbd_freebsd.o in a Linux build of libSDL2.a

* some translation units contain global variables but no executable code,
  for example (guessing from its name) decomposition-table.o in libunistring

The resolution in Lintian git was to make this check only trigger if
*the entire static library* contains no executable code, which seems
reasonable (and in the rare case that a static library intentionally
contains only variables and no code, it would be appropriate for a
maintainer who knows that to override the hint).

If feasible, an excellent way to verify that a static library is
practically usable would be to add an autopkgtest that statically links
a simple executable that calls one of your library's functions, and then
runs that executable. If you add a test like this, please remember to
flag it as 'superficial' to indicate that it doesn't provide thorough
test coverage.

    smcv


Reply to: