Hello,
We are hitting an infinite recursion in "ld", eventually leading to a
stackoverflow and segfault, when using the --version-script option with a C++
symbol (which "forces" ld to demangle symbols).
This bug also affects our versions of c++filt and gdb.
Commands used:
$ /opt/imc/gcc-6.2.0/bin/g++ -fPIC -std=c++14 -O3 -ggdb -o main.cpp.o -c
main.cpp
$ /opt/imc/gcc-6.2.0/bin/g++ -fPIC -std=c++14 -shared -o libCrash.so main.cpp.o
-Wl,--version-script=simple.map
collect2: fatal error: ld terminated with signal 11 [Segmentation fault]
compilation terminated.
And:
$ c++filt
_ZSt7forwardIRP22XxxxxxxxXxxxxxxXxxxxxxI28XxxxxxxxXxxxXxxxXxxxXxxxxxxxZN3TBQ26XxxxxxxxXxxxXxxxXxxxxxxxxxINS2_14TBQXxxxXxxxxxxINS2_8TBQXxxxxINS2_12XxXxxXxxxxxxINS2_15XxxxxxxxXxxxxxxEEEEEEENS2_10TBQXxxxxxxEE5xxxxxEvEUlRT_RT0_PT1_E_Z28xxxxxxXxxxxxxxXxxxxxxXxxxxxxIS1_SJ_ESt10unique_ptrI31XxxxxxxxXxxxxxxXxxxxxxXxxxxxxxxISD_ESt14default_deleteISN_EESF_EUlR5XxxxxE_ZSK_IS1_SJ_ESQ_SF_EUlvE0_EEOSD_RNSt16remove_referenceISD_E4typeE
Segmentation fault
Versions used:
$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)
$ /opt/imc/gcc-6.2.0/bin/g++ --version
g++ (GCC) 6.2.0
$ c++filt --version
GNU c++filt version 2.23.52.0.1-55.el7 20130226
$ /opt/imc/gcc-6.2.0/bin/ld --version
GNU ld (GNU Binutils) 2.27
$ gdb --version
GNU gdb (GDB) Red Hat Enterprise Linux 7.10.50.20151113-33.el7
Notes:
The symbols reported in those bug reports do not crash my c++filt:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61233
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61460
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61805
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72822
However the symbol reported in this one does crash c++filt (although not ld):
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70909
Kind Regards,
Matthieu Monrocq
IMC financial markets | Strawinskylaan 377, WTC D-tower, 1077 XX Amsterdam |
www.imc.com<http://www.imc.nl/>
P +31 (0)20 798 8601 | E [email protected]<mailto:[email protected]>
________________________________
The information in this e-mail is intended only for the person or entity to
which it is addressed.
It may contain confidential and /or privileged material. If someone other than
the intended recipient should receive this e-mail, he / she shall not be
entitled to read, disseminate, disclose or duplicate it.
If you receive this e-mail unintentionally, please inform us immediately by
"reply" and then delete it from your system. Although this information has been
compiled with great care, neither IMC Financial Markets & Asset Management nor
any of its related entities shall accept any responsibility for any errors,
omissions or other inaccuracies in this information or for the consequences
thereof, nor shall it be bound in any way by the contents of this e-mail or its
attachments. In the event of incomplete or incorrect transmission, please
return the e-mail to the sender and permanently delete this message and any
attachments.
Messages and attachments are scanned for all known viruses. Always scan
attachments before opening them.
#include <iostream>
extern "C" {
void _ZSt7forwardIRP22XxxxxxxxXxxxxxxXxxxxxxI28XxxxxxxxXxxxXxxxXxxxXxxxxxxxZN3TBQ26XxxxxxxxXxxxXxxxXxxxxxxxxxINS2_14TBQXxxxXxxxxxxINS2_8TBQXxxxxINS2_12XxXxxXxxxxxxINS2_15XxxxxxxxXxxxxxxEEEEEEENS2_10TBQXxxxxxxEE5xxxxxEvEUlRT_RT0_PT1_E_Z28xxxxxxXxxxxxxxXxxxxxxXxxxxxxIS1_SJ_ESt10unique_ptrI31XxxxxxxxXxxxxxxXxxxxxxXxxxxxxxxISD_ESt14default_deleteISN_EESF_EUlR5XxxxxE_ZSK_IS1_SJ_ESQ_SF_EUlvE0_EEOSD_RNSt16remove_referenceISD_E4typeE() {
std::cout << "Hello, World\n";
}
}
int main() {
_ZSt7forwardIRP22XxxxxxxxXxxxxxxXxxxxxxI28XxxxxxxxXxxxXxxxXxxxXxxxxxxxZN3TBQ26XxxxxxxxXxxxXxxxXxxxxxxxxxINS2_14TBQXxxxXxxxxxxINS2_8TBQXxxxxINS2_12XxXxxXxxxxxxINS2_15XxxxxxxxXxxxxxxEEEEEEENS2_10TBQXxxxxxxEE5xxxxxEvEUlRT_RT0_PT1_E_Z28xxxxxxXxxxxxxxXxxxxxxXxxxxxxIS1_SJ_ESt10unique_ptrI31XxxxxxxxXxxxxxxXxxxxxxXxxxxxxxxISD_ESt14default_deleteISN_EESF_EUlR5XxxxxE_ZSK_IS1_SJ_ESQ_SF_EUlvE0_EEOSD_RNSt16remove_referenceISD_E4typeE();
}
{ global:
extern "C++" {
__wrap_memcpy;
};
local: *;
};
_______________________________________________
bug-binutils mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/bug-binutils