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; }