[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug gold/26347] New: Partial initialization of std::cout on linkage with `-static-libstdc++` and other dynamic library,
demansong at gmail dot com <=