Generated symbols different on different archs with gcc-4.5

Bug #684703 reported by Scott Kitterman on 2010-12-03
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ubuntu
High
Unassigned
Natty
High
Unassigned

Bug Description

Binary package hint: gcc-4.5

This affects multiple packages in Natty (all appear to be C++ based). You can also see this in kde4libs and opengtl. Here is an example:

https://launchpad.net/ubuntu/+source/kdegraphics/4:4.5.80-0ubuntu1 FTBFS on amd64 and i386 due to this problem.

The first few changes from http://launchpadlibrarian.net/59783195/buildlog_ubuntu-natty-amd64.kdegraphics_4:4.5.80-0ubuntu1_FAILEDTOBUILD.txt.gz are:

--- debian/libkexiv2-9.symbols (libkexiv2-9_4:4.5.80-0ubuntu1_amd64)
+++ dpkg-gensymbols0Pnv2H 2010-11-29 11:13:22.000000000 +0000
@@ -352,13 +352,23 @@
  _ZTVN11KExiv2Iface6KExiv2E@Base 4:4.5.80
  _ZTVN5Exiv210BasicErrorIcEE@Base 4:4.5.80
  _ZTVN5Exiv29ValueTypeIjEE@Base 4:4.5.80
- _ZThn20_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80
- _ZThn20_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface11MsgTextEditD0Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface11MsgTextEditD1Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface13SubjectWidgetD0Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface13SubjectWidgetD1Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface14AltLangStrEditD0Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface14AltLangStrEditD1Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80
- _ZThn8_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80
+ _ZThn16_N11KExiv2Iface11MsgTextEditD0Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface11MsgTextEditD1Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface13SubjectWidgetD0Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface13SubjectWidgetD1Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface14AltLangStrEditD0Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface14AltLangStrEditD1Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn16_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80-0ubuntu1
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn20_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn20_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80
+ _ZThn40_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80-0ubuntu1
+ _ZThn40_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80-0ubuntu1
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface11MsgTextEditD0Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface11MsgTextEditD1Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface13SubjectWidgetD0Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface13SubjectWidgetD1Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface14AltLangStrEditD0Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface14AltLangStrEditD1Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface15CountrySelectorD0Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu1# _ZThn8_N11KExiv2Iface15CountrySelectorD1Ev@Base 4:4.5.80

Similarly, the first few changes from http://launchpadlibrarian.net/59835990/buildlog_ubuntu-natty-powerpc.kdegraphics_4:4.5.80-0ubuntu2_FAILEDTOBUILD.txt.gz (note: The only difference between ubuntu1 and ubuntu2 is a per arch symbols file for amd64 to work around this exact problem) are:

--- debian/libkdcraw9.symbols (libkdcraw9_4:4.5.80-0ubuntu2_powerpc)
+++ dpkg-gensymbolszUBEVL 2010-11-30 00:43:38.000000000 +0000
@@ -377,35 +377,35 @@
  _ZTVN11KDcrawIface21RExpanderBoxExclusiveE@Base 4:4.5.80
  _ZTVN11KDcrawIface6KDcrawE@Base 4:4.5.80
  _ZTVN11KDcrawIface9RComboBoxE@Base 4:4.5.80
- _ZThn16_N11KDcrawIface12RExpanderBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface12RExpanderBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface12RIntNumInputD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface12RIntNumInputD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface14RLabelExpanderD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface14RLabelExpanderD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface15RDoubleNumInputD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface15RDoubleNumInputD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface16SqueezedComboBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface16SqueezedComboBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface19DcrawSettingsWidgetD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface19DcrawSettingsWidgetD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface21RExpanderBoxExclusiveD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface21RExpanderBoxExclusiveD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface9RComboBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
- _ZThn16_N11KDcrawIface9RComboBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface12RExpanderBoxD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface12RExpanderBoxD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface12RIntNumInputD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface12RIntNumInputD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface14RLabelExpanderD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface14RLabelExpanderD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface15RDoubleNumInputD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface15RDoubleNumInputD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface16SqueezedComboBoxD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface16SqueezedComboBoxD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface19DcrawSettingsWidgetD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface19DcrawSettingsWidgetD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface21RExpanderBoxExclusiveD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface21RExpanderBoxExclusiveD1Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface9RComboBoxD0Ev@Base 4:4.5.80
-#MISSING: 4:4.5.80-0ubuntu1~ppa3# _ZThn8_N11KDcrawIface9RComboBoxD1Ev@Base 4:4.5.80
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface12RExpanderBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface12RExpanderBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface12RIntNumInputD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface12RIntNumInputD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface14RLabelExpanderD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface14RLabelExpanderD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface15RDoubleNumInputD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface15RDoubleNumInputD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface16SqueezedComboBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface16SqueezedComboBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface19DcrawSettingsWidgetD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface19DcrawSettingsWidgetD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface21RExpanderBoxExclusiveD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface21RExpanderBoxExclusiveD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface9RComboBoxD0Ev@Base 4:4.5.80-0ubuntu1~ppa3
+#MISSING: 4:4.5.80-0ubuntu2# _ZThn16_N11KDcrawIface9RComboBoxD1Ev@Base 4:4.5.80-0ubuntu1~ppa3
+ _ZThn8_N11KDcrawIface12RExpanderBoxD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface12RExpanderBoxD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface12RIntNumInputD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface12RIntNumInputD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface14RLabelExpanderD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface14RLabelExpanderD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface15RDoubleNumInputD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface15RDoubleNumInputD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface16SqueezedComboBoxD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface16SqueezedComboBoxD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface19DcrawSettingsWidgetD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface19DcrawSettingsWidgetD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface21RExpanderBoxExclusiveD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface21RExpanderBoxExclusiveD1Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface9RComboBoxD0Ev@Base 4:4.5.80-0ubuntu2
+ _ZThn8_N11KDcrawIface9RComboBoxD1Ev@Base 4:4.5.80-0ubuntu2
dh_makeshlibs: dpkg-gensymbols -plibkdcraw9 -Idebian/libkdcraw9.symbols -Pdebian/libkdcraw9 return

Changed in gcc-4.5 (Ubuntu):
importance: Undecided → High
milestone: none → natty-alpha-2
Matthias Klose (doko) wrote :

any more information than the build logs? like a (preprocessed) source file, or a reduced testcase?

No. Tell me how to generate those and I'll provide them.

Colin Watson (cjwatson) on 2011-01-21
Changed in gcc-4.5 (Ubuntu Natty):
status: New → Incomplete
Colin Watson (cjwatson) wrote :

Matthias, ping: Scott doesn't remember any communication outside the bug on this.

Scott Kitterman (kitterman) wrote :

<cjwatson> doko: any progress on bug 684703? the last comment on the bug is ScottK asking you for how to provide the information you requested; did you discuss that outside the bug?
<doko> cjwatson, ScottK: are these non-virtual thunks referred to in other libs?
<doko> sorry, s/libs/binaries/
<ScottK> They are non-virtual thunk.
<doko> ScottK: then why add these to the symbols files at all?
<ScottK> doko: It's what dpkg-gensymbols generates.
<ScottK> c++filt _ZThn16_N11KDcrawIface12RExpanderBoxD0Ev
<ScottK> non-virtual thunk to KDcrawIface::RExpanderBox::~RExpanderBox()
<ScottK> That's in libkdcraw9.symbols
<doko> ScottK: well, maybe ask buxy why he wants these mentioned in the symbols files?
<ScottK> doko: They weren't different on different archs before. Why now?
<buxy> I don't "pick" symbols, I take everything that's exported.
<ScottK> doko: I'm not a build system expert, but right now I have to test build that package on all archs to get a package that builds. That's not supportable.
<doko> ScottK, buxy: well, symbols files shouldn't be used unreflected for C++ libs. Debian #605833 is another (unrelated) case
<ubottu> Debian bug 605833 in gpsd "symbols file lists symbols from qt libs" [Important,Open] http://bugs.debian.org/605833
<buxy> doko: true, but MoDaX has done such work there that it gets more common...
<doko> buxy: which work?
<buxy> doko: the possibility to map symbols by their demangled name
<buxy> and other similar stuff
<doko> ScottK, buxy: so if we agree that these thunks don't belong the interface, then maybe make them optional by default?
<buxy> doko: I have no idea whether they belong to the interface or not, and I don't think that I want to have lots of special-cases in dpkg-gensymbols, in particular when these are difficult to identify (I don't want to always run c++filt)
<buxy> I rather suggest that the affected package uses the (c++) tag to match this symbol in arch-neutral way
<doko> buxy: well, these "special cases" are defined. http://www.codesourcery.com/public/cxx-abi/abi.html#mangling
<ScottK> doko: I don't know enough to have an opinion of if they should be optional by default. I just know it's a lot more effort to maintain symbols files if they vary per arch.
<doko> ScottK: sure, but you have to live with it
<seb128> bcurtiswx, it will be easier
<SpamapS> less confusing then to use -8 :)
<ScottK> doko: Why? I didn't have to live with it with gcc4.4.
<doko> ScottK: because types of parameters are mangled too

Martin Pitt (pitti) wrote :

There are various workarounds for this problem which the Kubuntu developers are using for now, and a solution is unlikely in two days, so moving milestone.

Changed in gcc-4.5 (Ubuntu Natty):
milestone: natty-alpha-2 → natty-alpha-3
Changed in gcc-4.5 (Ubuntu Natty):
assignee: nobody → Canonical Foundations Team (canonical-foundations)
Martin Pitt (pitti) on 2011-03-01
Changed in gcc-4.5 (Ubuntu Natty):
milestone: natty-alpha-3 → none
Matthias Klose (doko) wrote :

this needs fixes in the symbols files, not in GCC. we need to identify the packages in the next archive rebuild

affects: gcc-4.5 (Ubuntu Natty) → Ubuntu Natty
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.