Bug#973326: double-conversion: Misbuild with -O3: DoubleToStringConverter::DoubleToStringConverter() constructor dropped from exported symbols
Steve Langasek
steve.langasek at canonical.com
Wed Oct 28 20:46:16 GMT 2020
Package: double-conversion
Version: 3.1.5-6
Severity: minor
Tags: patch
User: ubuntu-devel at lists.ubuntu.com
Usertags: origin-ubuntu hirsute ubuntu-patch
Hi Mo,
Thanks for your forebearance with this string of Ubuntu bug reports. I'm
hopeful that once we manage to resolve this one, the double-conversion
package will be in sync again between Debian and Ubuntu :)
The latest upload of double-conversion is failing to build from source on
ppc64el in Ubuntu, because Ubuntu builds ppc64el with -O3 by default instead
of -O2, and this additional optimization level somehow causes a public
constructor to be lost from the exported symbols:
[...]
dpkg-gensymbols: warning: debian/libdouble-conversion3/DEBIAN/symbols doesn't ma
tch completely debian/libdouble-conversion3.symbols
--- debian/libdouble-conversion3.symbols (libdouble-conversion3_3.1.5-6_ppc64el)
+++ dpkg-gensymbolshNCmYB 2020-10-28 15:27:33.543945019 +0000
@@ -36,7 +36,7 @@
(c++)"double_conversion::DoubleToStringConverter::CreateDecimalRepresentation(
char const*, int, int, int, double_conversion::StringBuilder*) const at Base" 2.0.0
(c++)"double_conversion::DoubleToStringConverter::CreateExponentialRepresentat
ion(char const*, int, int, double_conversion::StringBuilder*) const at Base" 2.0.0
(c++)"double_conversion::DoubleToStringConverter::DoubleToAscii(double, double
_conversion::DoubleToStringConverter::DtoaMode, int, char*, int, bool*, int*, in
t*)@Base" 2.0.0
- (c++)"double_conversion::DoubleToStringConverter::DoubleToStringConverter(int,
char const*, char const*, char, int, int, int, int)@Base" 3.1.5
+#MISSING: 3.1.5-6# (c++)"double_conversion::DoubleToStringConverter::DoubleToSt
ringConverter(int, char const*, char const*, char, int, int, int, int)@Base" 3.1
.5
(c++)"double_conversion::DoubleToStringConverter::EcmaScriptConverter()@Base"
2.0.0
(c++)"double_conversion::DoubleToStringConverter::HandleSpecialValues(double,
double_conversion::StringBuilder*) const at Base" 2.0.0
(c++)"double_conversion::DoubleToStringConverter::ToExponential(double, int, d
ouble_conversion::StringBuilder*) const at Base" 2.0.0
dh_makeshlibs: error: failing due to earlier errors
[...]
(https://launchpad.net/ubuntu/+source/double-conversion/3.1.5-6/+build/20200598)
This problem is also reproducible on amd64 if I raise the optimization level.
This may well be a problem with the toolchain, but for the moment I've
worked around this by forcing the optimization level down to -O2 as in the
attached patch.
Thanks for considering,
--
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 double-conversion-3.1.5/debian/rules double-conversion-3.1.5/debian/rules
--- double-conversion-3.1.5/debian/rules 2020-01-10 22:27:54.000000000 -0800
+++ double-conversion-3.1.5/debian/rules 2020-10-28 13:38:12.000000000 -0700
@@ -2,6 +2,8 @@
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+export DEB_CXXFLAGS_MAINT_APPEND += -O2
+export DEB_CXXFLAGS_MAINT_STRIP += -O3
# Get compilation flags from dpkg-buildflags
DPKG_EXPORT_BUILDFLAGS = 1
More information about the debian-science-maintainers
mailing list