Bug#765575: hidden symbol `.LTHUNK15.4817' isn't defined
Package: gcc,libboost-program-options-dev
Version: gcc/4:4.7.2-1
Version: libboost-program-options-dev/1.49.0.1
Severity: important
For some reason I cannot compile and link to a boost lib using -flto
-Ofast (everything is fine when each is taken separatly). I am
assigning to both packages, feel free to re-assign to the proper one.
Steps:
$ g++ -flto -Ofast -o demo demo.cxx -lboost_program_options
`_ZThn16_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED1Ev'
referenced in section `.rodata' of /tmp/ccT7Vvf6.ltrans2.ltrans.o:
defined in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED5Ev'
of /tmp/ccxsMXjP.o (symbol from plugin)
`_ZThn16_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED0Ev'
referenced in section `.rodata' of /tmp/ccT7Vvf6.ltrans2.ltrans.o:
defined in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED0Ev'
of /tmp/ccxsMXjP.o (symbol from plugin)
`_ZThn56_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED1Ev'
referenced in section `.rodata' of /tmp/ccT7Vvf6.ltrans2.ltrans.o:
defined in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED5Ev'
of /tmp/ccxsMXjP.o (symbol from plugin)
`_ZThn56_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED0Ev'
referenced in section `.rodata' of /tmp/ccT7Vvf6.ltrans2.ltrans.o:
defined in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_17bad_function_callEEEED0Ev'
of /tmp/ccxsMXjP.o (symbol from plugin)
/usr/bin/ld: demo: hidden symbol `.LTHUNK15.4817' isn't defined
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
Where demo.cxx is attached.
#include <iostream>
#include <cassert>
#include <boost/program_options/options_description.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>
int main(int argc, char *argv[])
{
namespace po = boost::program_options;
using namespace std;
vector<string> filenames;
bool use_new = false;
try
{
po::options_description desc(
"\n"
"When compressing"
);
desc.add_options()
("help,h", "Display this help.")
("filenames", po::value< vector<string> >( &filenames ), "bla.")
("new", "bla.")
;
po::positional_options_description p;
p.add("filenames", -1);
po::variables_map vm;
po::store(po::command_line_parser(argc, argv).options(desc).positional(p)
.run(), vm);
po::notify(vm);
if (vm.count("help"))
{
cout << desc;
return 0;
}
if (vm.count("new"))
{
use_new = true;
}
}
catch(exception& e)
{
cout << e.what() << "\n";
return 1;
}
return 0;
}
Reply to: