Bug#812803: libc++1: Illegal instruction on i586 machine
Andrea Canciani
ranma42 at gmail.com
Tue Jan 26 17:29:57 UTC 2016
Package: libc++1
Version: 3.5-2
Severity: normal
Dear Maintainer,
when using libc++1 on a Pentium (i586) machine, it is
possible for a program to terminate on "Illegal instruction".
The following program can be used to reproduce the issue:
#include <sstream>
#include <string>
int main()
{
float f;
std::istringstream num_stream(std::string("42"));
num_stream >> f;
return 0;
}
libc++-dev and at least one of clang or g++ need to be installed
to build the test.
Compiling the source code from above with
clang++-libc++ -march=i586 test.cpp
or
g++-libc++ -march=i586 test.cpp
results in a binary which works correctly on "modern" machines,
but terminates with "Illegal instruction" on i586.
Running the program in a debugger makes it possible to see that
the illegal instruction is in fact a SIMD operation in libc++1,
which will also fail on any pre-SIMD i686 processors as well.
The same code works fine when compiled with libstdc++.
-- System Information:
Debian Release: 8.3
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable')
Architecture: i386 (i586)
Kernel: Linux 3.16.0-4-586
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages libc++1 depends on:
ii libc6 2.19-18+deb8u2
ii multiarch-support 2.19-18+deb8u2
libc++1 recommends no packages.
Versions of packages libc++1 suggests:
ii clang 1:3.5-25
-- no debconf information
More information about the Pkg-llvm-team
mailing list