touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #133683
[Bug 1514309] Re: Undefined Behavior in GCC 4.8 ios_base.h
verified that the proposed libstdc++-4.8-dev, when used with clang,
doesn't show this runtime error.
** Tags removed: verification-needed
** Tags added: verification-done
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to gcc-4.8 in Ubuntu.
https://bugs.launchpad.net/bugs/1514309
Title:
Undefined Behavior in GCC 4.8 ios_base.h
Status in gcc:
Unknown
Status in gcc-4.8 package in Ubuntu:
Fix Released
Status in gcc-5 package in Ubuntu:
Fix Released
Status in gcc-4.8 source package in Trusty:
Fix Committed
Status in gcc-5 package in Debian:
Fix Released
Bug description:
On Linux, the distros often use libstdc++ rather than libc++ for
Clang. Building libcxx is an art that I have never been able to
untangle, and I think the maintainers have discovered the same.
Below, I'm catching a UB finding when using Clang and libstdc++. This
one has been around for some time. I first encountered it on Apple
platforms. I regularly encounter it on Debian and Ubuntu.
The fix is fairly easy, and I usually just do it: a couple of casts
among unsigned and the flags. Also see http://lists.llvm.org/pipermail
/cfe-dev/2015-January/040753.html.
**********
$ cat ub.cxx
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << std::hex << argc << std::endl;
std::cout << std::dec << argc << std::endl;
return 0;
}
$ clang++ -fsanitize=undefined ub.cxx -o ub.exe
$ ./ub.exe
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/ios_base.h:96:24: runtime error: load of value 4294967221, which is not a valid value for type 'std::_Ios_Fmtflags'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/bits/ios_base.h:76:67: runtime error: load of value 4294967221, which is not a valid value for type 'std::_Ios_Fmtflags'
1
1
**********
$ g++ --version
g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
$ uname -a
Linux ubuntu 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:20:27 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release
No LSB modules are available.
**********
$ apt-cache show g++
Package: g++
Priority: optional
Section: devel
Installed-Size: 34
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@xxxxxxxxxxxxxxxx>
Original-Maintainer: Debian GCC Maintainers <debian-gcc@xxxxxxxxxxxxxxxx>
Architecture: amd64
Source: gcc-defaults (1.124ubuntu6)
Version: 4:4.8.2-1ubuntu6
Provides: c++-compiler
Depends: cpp (>= 4:4.8.2-1ubuntu6), gcc (>= 4:4.8.2-1ubuntu6), g++-4.8 (>= 4.8.2-5~), gcc-4.8 (>= 4.8.2-5~)
Suggests: g++-multilib
Filename: pool/main/g/gcc-defaults/g++_4.8.2-1ubuntu6_amd64.deb
Size: 1490
MD5sum: 7332a4e9116b821e167a3d0236ca413a
SHA1: 2c7201808be1029d21b7691c5a855535a4fcbd51
SHA256: 02c3d204efe6c34bf3de655aaf6a9ce524511977aedf92d7bce7093d0581f977
Description-en: GNU C++ compiler
This is the GNU C++ compiler, a fairly portable optimizing compiler for C++.
.
This is a dependency package providing the default GNU C++ compiler.
Description-md5: 4d44b18774ae5123b7c3f70d940cf655
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Build-Essential: yes
Origin: Ubuntu
Supported: 5y
To manage notifications about this bug go to:
https://bugs.launchpad.net/gcc/+bug/1514309/+subscriptions