public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "zhykzhykzhyk at gmail dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/66971] New: thread_local with external linkage and constructor cannot be compiled correctly Date: Wed, 22 Jul 2015 16:12:00 -0000 [thread overview] Message-ID: <bug-66971-4@http.gcc.gnu.org/bugzilla/> (raw) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66971 Bug ID: 66971 Summary: thread_local with external linkage and constructor cannot be compiled correctly Product: gcc Version: 5.2.0 Status: UNCONFIRMED Keywords: link-failure Severity: critical Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: zhykzhykzhyk at gmail dot com Target Milestone: --- $ cat 1.cc #include <string> #include <cstdio> extern thread_local std::string s; int main() { puts(s.c_str()); } $ cat 2.cc #include <string> thread_local std::string s{"OK"}; $ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/home/zhyk/gcc5-install/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../configure --prefix=/home/zhyk/gcc5-install --disable-multilib Thread model: posix gcc version 5.2.0 (GCC) $ g++ -std=c++14 1.cc /tmp/cckqIckV.o: In function `TLS wrapper function for s': 1.cc:(.text._ZTW1s[_ZTW1s]+0x5): undefined reference to `TLS init function for s' 1.cc:(.text._ZTW1s[_ZTW1s]+0x15): undefined reference to `s[abi:cxx11]' collect2: error: ld returned 1 exit status $ g++ -std=c++14 1.cc 2.cc /tmp/ccSIxWf0.o: In function `TLS wrapper function for s': 1.cc:(.text._ZTW1s[_ZTW1s]+0x5): undefined reference to `TLS init function for s' collect2: error: ld returned 1 exit status It compiles but gives wrong result in 5.1.0 in OSX: $ g++ -v Using built-in specs. COLLECT_GCC=g++-5 COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/5.1.0/libexec/gcc/x86_64-apple-darwin14.4.0/5.1.0/lto-wrapper Target: x86_64-apple-darwin14.4.0 Configured with: ../configure --build=x86_64-apple-darwin14.4.0 --prefix=/usr/local/Cellar/gcc/5.1.0 --libdir=/usr/local/Cellar/gcc/5.1.0/lib/gcc/5 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-5 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-libstdcxx-time=yes --enable-stage1-checking --enable-checking=release --enable-lto --with-build-config=bootstrap-debug --disable-werror --with-pkgversion='Homebrew gcc 5.1.0' --with-bugurl=https://github.com/Homebrew/homebrew/issues --enable-plugin --disable-nls --enable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk Thread model: posix gcc version 5.1.0 (Homebrew gcc 5.1.0) $ g++ -std=c++14 1.cc 2.cc $ ./a.out (null) But it works correctly in 4.9.3: $ /usr/bin/g++ -v Using built-in specs. COLLECT_GCC=/usr/bin/g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.3-1' --with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.9 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.9.3 (Debian 4.9.3-1) $ /usr/bin/g++ -std=c++14 1.cc 2.cc $ ./a.out OK
next reply other threads:[~2015-07-22 16:12 UTC|newest] Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top 2015-07-22 16:12 zhykzhykzhyk at gmail dot com [this message] 2015-07-22 16:53 ` [Bug c++/66971] " zhykzhykzhyk at gmail dot com 2015-07-22 17:07 ` mpolacek at gcc dot gnu.org
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-66971-4@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).