public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/66971] New: thread_local with external linkage and constructor cannot be compiled correctly
@ 2015-07-22 16:12 zhykzhykzhyk at gmail dot com
  2015-07-22 16:53 ` [Bug c++/66971] " zhykzhykzhyk at gmail dot com
  2015-07-22 17:07 ` mpolacek at gcc dot gnu.org
  0 siblings, 2 replies; 3+ messages in thread
From: zhykzhykzhyk at gmail dot com @ 2015-07-22 16:12 UTC (permalink / raw)
  To: gcc-bugs

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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/66971] thread_local with external linkage and constructor cannot be compiled correctly
  2015-07-22 16:12 [Bug c++/66971] New: thread_local with external linkage and constructor cannot be compiled correctly zhykzhykzhyk at gmail dot com
@ 2015-07-22 16:53 ` zhykzhykzhyk at gmail dot com
  2015-07-22 17:07 ` mpolacek at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: zhykzhykzhyk at gmail dot com @ 2015-07-22 16:53 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66971

zhykzhykzhyk at gmail dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|critical                    |major


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Bug c++/66971] thread_local with external linkage and constructor cannot be compiled correctly
  2015-07-22 16:12 [Bug c++/66971] New: thread_local with external linkage and constructor cannot be compiled correctly zhykzhykzhyk at gmail dot com
  2015-07-22 16:53 ` [Bug c++/66971] " zhykzhykzhyk at gmail dot com
@ 2015-07-22 17:07 ` mpolacek at gcc dot gnu.org
  1 sibling, 0 replies; 3+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2015-07-22 17:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66971

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org
           Severity|major                       |normal


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-07-22 17:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-22 16:12 [Bug c++/66971] New: thread_local with external linkage and constructor cannot be compiled correctly zhykzhykzhyk at gmail dot com
2015-07-22 16:53 ` [Bug c++/66971] " zhykzhykzhyk at gmail dot com
2015-07-22 17:07 ` mpolacek at gcc dot gnu.org

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).