Package: dpkg-dev
Version: 1.20.9
Severity: normal

GNU ld generates a nullptr absolute symbol for each version script tag.
test.sym:

    LIBTEST_1
    {
    };

clang -shared /dev/null -o example.so -Wl,--version-script=test.sym -fuse-ld=ld
llvm-nm -D example.so:

    0000000000000000 A LIBTEST_1@@LIBTEST_1
                     w _ITM_deregisterTMCloneTable
                     w _ITM_registerTMCloneTable
                     w __cxa_finalize
                     w __gmon_start__

LLVM's LLD (i.e. -fuse-ld=lld) does not.
Many existing packages' symbols files however expect such symbols (e.g. 
systemd).
This makes building them cleanly with LLD not possible.

Rather than considering this a bug in LLD I think it would be more reasonable to
fix this in dpkg because they're simply noise.

1. They are nullpointers and thus don't have any actual underlying 
implementation.
2. If they disappear, the whole section will have been deleted, so certainly 
other
   symbols will have also gone missing.

I tried reading the binutils code for half an hour to understand where in the 
code
and why they're being generated, but had no luck.

Maintainers, does this seem reasonable?
I would be willing to contribute a patch.


-- Package-specific info:
System tainted due to merged-usr-via-aliased-dirs.

-- System Information:
Debian Release: 11.0
  APT prefers experimental
  APT policy: (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: arm64

Kernel: Linux 5.10.0-8-amd64 (SMP w/32 CPU threads)
Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_IE:en
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages dpkg-dev depends on:
ii  binutils      2.37-4
ii  bzip2         1.0.8-4
ii  libdpkg-perl  1.20.9
ii  make          4.3-4.1
ii  patch         2.7.6-7
ii  perl          5.32.1-5
ii  tar           1.34+dfsg-1
ii  xz-utils      5.2.5-2

Versions of packages dpkg-dev recommends:
ii  build-essential                         12.9
ii  build-essential-clang [build-essential  1:14.0.0+git20210821.d546c9aa1fc9-1
ii  clang [c-compiler]                      1:14.0.0+git20210821.d546c9aa1fc9-1
ii  fakeroot                                1.25.3-1.1
ii  gcc [c-compiler]                        4:10.2.1-1
ii  gcc-10 [c-compiler]                     10.2.1-6
ii  gnupg                                   2.2.27-2
ii  gpgv                                    2.2.27-2
ii  libalgorithm-merge-perl                 0.08-3

Versions of packages dpkg-dev suggests:
pn  debian-keyring  <none>

-- no debconf information

Reply via email to