bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gold/26347] New: Partial initialization of std::cout on linkage wit


From: demansong at gmail dot com
Subject: [Bug gold/26347] New: Partial initialization of std::cout on linkage with `-static-libstdc++` and other dynamic library
Date: Fri, 07 Aug 2020 14:44:17 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=26347

            Bug ID: 26347
           Summary: Partial initialization of std::cout on linkage with
                    `-static-libstdc++` and other dynamic library
           Product: binutils
           Version: 2.34
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: gold
          Assignee: ccoutant at gmail dot com
          Reporter: demansong at gmail dot com
                CC: ian at airs dot com
  Target Milestone: ---

Dynamic library which I link with my application also incudes <iostream> but it
wasn't linked with static lib stdc++.
The problem goes away when I switch linker from gold to bfd.
Here is the minimal sample:

$ echo '#include <iostream>' >2.cpp
$ g++ 2.cpp -shared -o 2.so

$ echo '#include <iostream>' >1.cpp
$ echo 'int main() { std::cout << 42 << std::endl; }' >>1.cpp

$ g++ 1.cpp -static-libstdc++ -fuse-ld=gold -o 1
$ LD_PRELOAD=./2.so ./1

$ g++ 1.cpp -static-libstdc++ -o 1
$ LD_PRELOAD=./2.so ./1
42

I found out that `this->_M_num_put` in std::cout is nullptr when application is
linked with gold so ios_base::Init::Init() in my app works probably
erroneously.

I tested it with binutils 2.34 (ubuntu 20.04) and binutils 2.30 (a toolchain
built with crosstool-ng). GCC versions was 7.5.0, 8.1.0, 8.4.0, 9.3.0 and
10.1.0.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]