OSDir

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

-Wl,-Bsymbolic-functions in Ubuntu but not debian/ why?


Hi,

On Thu, 7 Jun 2018, 10:46 Andreas Hasenack, <andreas at canonical.com> wrote:
>
> Hi,
>
> does anybody recall why Ubuntu has -Wl,-Bsymbolic-functions in dpkg-buildflags --get LDFLAGS but not Debian? It seems to be the case for about 10 years now, according to dpkg's changelog.
>

The reasons why ubuntu toolchain / package builds have that on by
default still stand as far as I understand, and it is unlikely we will
drop it. It is an optimisation which does speed up runtime.

The right way to filter this out for buggy software is to use this in
debian/rules:

export DEB_LDFLAGS_MAINT_STRIP=-Wl,-Bsymbolic-functions

> I came across this change because of a delta we have been carrying in the autofs package for fix segfaults on startup and other issues:
>
> https://bugs.launchpad.net/ubuntu/+source/autofs/+bug/1470687: Not working properly with compile options "-symbolic-functions"
> https://bugs.launchpad.net/ubuntu/+source/autofs/+bug/1472115: autofs start fails: segfault at 0 ip ...
>

It is a bug in the upstream software, and an upstream bug should be
filed to fix upstream sources to compile and work correctly with
-Bsymbolic-functions. As it is possible to write software which will
remain.

Also forwarding patches to Debian that improve software is the
absolutely right thing to do, even if it doesn't affect Debian itself
per se.
It is a valid bug and patch, but the criticality priorities between
Ubuntu and Debian are obviously different.

> d/rules has had a trick to drop -Bsymbolic-functions from LDFLAGS at build time (hello sed), but it still leaks through when building the lookup_ldap module via $(krb5-config --libs), hence the current d/p/fix-lookup-ldap-crash.patch patch we have been carrying.
>
> Debian doesn't set -Bsymbolic-functions, and upstream works if you just make && make install it, that's why I guess the patch was never forwarded up the chain.

It is reproducible on Debian systems if one builds the package on
Debian system with a modified environment: DEB_VENDOR=Ubuntu debuild

Regards,

Dimitri.