Bug#1033665: libsigc++-3.0: .symbols file mismatch with template exposure under LTO

Steve Langasek steve.langasek at canonical.com
Wed Mar 29 19:04:46 BST 2023


Package: libsigc++-3.0
Version: 3.4.0-1
Severity: important
Tags: patch
User: ubuntu-devel at lists.ubuntu.com
Usertags: origin-ubuntu lunar ubuntu-patch

Dear maintainers,

libsigc++-3.0 3.4.0-1 fails to build from source on architectures in Ubuntu
where LTO is enabled, because its .symbols file doesn't match up with the
set of instantiated templates being exposed in the ABI.

The attached patch suffices to let the package build both with and without
LTO.

In general it is counterproductive to have templated C++ symbols listed as
non-optional in a .symbols file; you might want to also consider cleaning up
this list:

   c++filt < debian/libsigc++-3.0-0.symbols  | grep '<' | grep -v 'optional'

It is also pointless to list architectures associated with an optional
template symbol, as these change over time and are sensitive to changes in
the toolchain, having nothing to do with the properties of the architecture.

Cheers,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                   https://www.debian.org/
slangasek at ubuntu.com                                     vorlon at debian.org
-------------- next part --------------
diff -Nru libsigc++-3.0-3.4.0/debian/libsigc++-3.0-0.symbols libsigc++-3.0-3.4.0/debian/libsigc++-3.0-0.symbols
--- libsigc++-3.0-3.4.0/debian/libsigc++-3.0-0.symbols	2022-06-26 16:54:22.000000000 -0700
+++ libsigc++-3.0-3.4.0/debian/libsigc++-3.0-0.symbols	2023-03-29 10:40:49.000000000 -0700
@@ -45,8 +45,8 @@
  _ZN4sigc8internal11signal_implD1Ev at Base 3.2.0
  _ZN4sigc8internal11signal_implD2Ev at Base 3.2.0
  _ZN4sigc8internal12weak_raw_ptrINS0_8slot_repEE25notify_object_invalidatedEPNS_10notifiableE at Base 3.2.0
- _ZN4sigc8internal12weak_raw_ptrINS0_8slot_repEED1Ev at Base 3.2.0
- _ZN4sigc8internal12weak_raw_ptrINS0_8slot_repEED2Ev at Base 3.2.0
+ (optional=templist)_ZN4sigc8internal12weak_raw_ptrINS0_8slot_repEED1Ev at Base 3.2.0
+ (optional=templist)_ZN4sigc8internal12weak_raw_ptrINS0_8slot_repEED2Ev at Base 3.2.0
  _ZN4sigc8internal12weak_raw_ptrINS_9slot_baseEE25notify_object_invalidatedEPNS_10notifiableE at Base 3.2.0
  _ZN4sigc8internal23trackable_callback_list12add_callbackEPNS_10notifiableEPFvS3_E at Base 3.2.0
  _ZN4sigc8internal23trackable_callback_list15remove_callbackEPNS_10notifiableE at Base 3.2.0
@@ -108,22 +108,21 @@
  _ZNK4sigc9trackable30remove_destroy_notify_callbackEPNS_10notifiableE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZNK9__gnu_cxx24__concurrence_lock_error4whatEv at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZNK9__gnu_cxx26__concurrence_unlock_error4whatEv at Base 3.2.0
- _ZNSt15__allocated_ptrISaISt10_List_nodeIN4sigc9slot_baseEEEED1Ev at Base 3.2.0
- _ZNSt15__allocated_ptrISaISt10_List_nodeIN4sigc9slot_baseEEEED2Ev at Base 3.2.0
- (optional=templinst|arch=armel riscv64)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE10_M_releaseEv at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv at Base 3.2.0
+ (optional=templist)_ZNSt15__allocated_ptrISaISt10_List_nodeIN4sigc9slot_baseEEEED1Ev at Base 3.2.0
+ (optional=templist)_ZNSt15__allocated_ptrISaISt10_List_nodeIN4sigc9slot_baseEEEED2Ev at Base 3.2.0
+ (optional=templist)_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE10_M_releaseEv at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE10_M_destroyEv at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE10_M_disposeEv at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE14_M_get_deleterERKSt9type_info at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EED0Ev at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EED1Ev at Base 3.2.0
  (optional=templinst|arch=armel riscv64)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EED2Ev at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED0Ev at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED1Ev at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED0Ev at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED1Ev at Base 3.2.0
+ (optional=templist)_ZNSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EED2Ev at Base 3.2.0
  _ZSt20__throw_bad_weak_ptrv at Base 3.2.0
  _ZTIN4sigc10notifiableE at Base 3.2.0
  _ZTIN4sigc8internal8slot_repE at Base 3.2.0
@@ -132,12 +131,12 @@
  (optional=templist|arch=armel riscv64)_ZTIN9__gnu_cxx26__concurrence_unlock_errorE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTIN9__gnu_cxx7__mutexE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
  (optional=templist|arch=armel armhf)_ZTISt19_Sp_make_shared_tag at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTISt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTISt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTISt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
  _ZTSN4sigc10notifiableE at Base 3.2.0
  _ZTSN4sigc8internal8slot_repE at Base 3.2.0
  _ZTSN4sigc9trackableE at Base 3.2.0
@@ -145,13 +144,14 @@
  (optional=templist|arch=armel riscv64)_ZTSN9__gnu_cxx26__concurrence_unlock_errorE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTSN9__gnu_cxx7__mutexE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
  _ZTSSt19_Sp_make_shared_tag at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTSSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0
- (optional=templist|arch=amd64 armhf)_ZTSSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
- _ZTVN4sigc8internal8slot_repE at Base 3.2.0
+ (optional=templist)_ZTSSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE2EE at Base 3.2.0
+ (optional=templist)_ZTSSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIvELN9__gnu_cxx12_Lock_policyE2EE at Base 3.4.0
+ (optional=templist)_ZTVN4sigc8internal8slot_repE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTVN9__gnu_cxx24__concurrence_lock_errorE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTVN9__gnu_cxx26__concurrence_unlock_errorE at Base 3.2.0
  (optional=templist|arch=armel riscv64)_ZTVSt23_Sp_counted_ptr_inplaceIN4sigc8internal11signal_implESaIS2_ELN9__gnu_cxx12_Lock_policyE1EE at Base 3.2.0


More information about the pkg-gnome-maintainers mailing list