This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug lto/53780] New: [l4.7.1 lto] linker fails with lto and "standard" object file


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53780

             Bug #: 53780
           Summary: [l4.7.1 lto] linker fails with lto and "standard"
                    object file
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: lto
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: vincenzo.innocente@cern.ch


here mostly for the record as works with 4.8.0 and it has an easy workaround
it maybe related to PR53337  

either on vanilla fedora 17 
or with
gcc version 4.7.2 20120615 (prerelease) [gcc-4_7-branch revision 188650] (GCC) 
GNU gold (GNU Binutils 2.22.52.20120515) 1.11

linker fails in the following example
c++ -fPIC -std=c++11 -fvisibility-inlines-hidden -O2 -flto -c boostLto.cc
c++ -fPIC -std=c++11 -fvisibility-inlines-hidden -Os  -c boostLto2.cc
echo link ok
c++  -flto -O2 -pthread boostLto2.o boostLto.o  -shared -fPIC -o bha.so
-fvisibility-inlines-hidden -std=c++11
echo link fails
c++  -flto -O2 -pthread boostLto.o boostLto2.o  -shared -fPIC -o bha.so
-fvisibility-inlines-hidden -std=c++11


fedora 17

link ok
link fails
`_ZTIN5boost6detail15sp_counted_baseE' referenced in section
`.data.rel.ro._ZTVN5boost6detail15sp_counted_baseE[_ZTVN5boost6detail15sp_counted_baseE]'
of boostLto2.o: defined in discarded section
`.gnu.linkonce.t._ZTIN5boost6detail15sp_counted_baseE' of boostLto.o (symbol
from plugin)
`_ZThn16_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED1Ev'
referenced in section
`.data.rel.ro._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEEE]'
of boostLto2.o: defined in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED5Ev'
of boostLto.o (symbol from plugin)
`_ZThn16_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED0Ev'
referenced in section
`.data.rel.ro._ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEEE[_ZTVN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEEE]'
of boostLto2.o: defined in discarded section
â..
`_ZThn56_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED0Ev'
referenced in section `.data.rel.ro' of /tmp/ccnOkzqM.ltrans1.ltrans.o: defined
in discarded section
`.gnu.linkonce.t._ZN5boost16exception_detail10clone_implINS0_19error_info_injectorINS_21thread_resource_errorEEEED0Ev'
of boostLto.o (symbol from plugin)
/bin/ld: bha.so: hidden symbol `.LTHUNK2.3978' isn't defined
/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status


=====================================

with
gcc version 4.7.2 20120615 (prerelease) [gcc-4_7-branch revision 188650] (GCC) 
GNU gold (GNU Binutils 2.22.52.20120515) 1.11

link ok
link fails
boostLto2.o:boostLto2.cc:function vtable for
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_month>
>: warning: relocation refers to discarded section
/afs/cern.ch/user/i/innocent/w3/gcc47slc5/bin/ld: error: hidden symbol
'_ZThn16_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_9gregorian16bad_day_of_monthEEEED1Ev'
is not defined locally
â..
/tmp/innocent/ccZ6RxXH.ltrans1.ltrans.o:ccZ6RxXH.ltrans1.o:function vtable for
boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::gregorian::bad_day_of_year>
> [clone .local.282]: warning: relocation refers to discarded section
/afs/cern.ch/user/i/innocent/w3/gcc47slc5/bin/ld: error: hidden symbol
'_ZThn56_N5boost16exception_detail10clone_implINS0_19error_info_injectorINS_9gregorian15bad_day_of_yearEEEED0Ev'
is not defined locally
collect2: error: ld returned 1 exit status

==================
code
cat boostLto.cc
#include "boost/thread/mutex.hpp"
namespace edm0 {
    boost::mutex* getGlobalMutex();
}

boost::mutex* edm0::getGlobalMutex() { 
    static boost::mutex m_;
    return &m_;
}

[innocent@pcphsftkepler ctest]$ cat boostLto2.cc
#include "boost/thread/mutex.hpp"
namespace edm2 {
    boost::mutex* getGlobalMutex();
}

boost::mutex* edm2::getGlobalMutex() { 
    static boost::mutex m_;
    return &m_;
}

#include "boost/shared_ptr.hpp"
#include "boost/date_time.hpp"
#include "boost/date_time/gregorian/gregorian_types.hpp"
#include "boost/date_time/posix_time/posix_time_types.hpp"
#include "boost/date_time/c_local_time_adjustor.hpp"
typedef boost::posix_time::ptime TimePoint_t;
typedef boost::posix_time::time_duration Duration_t;

#include<string>
#include<sstream>
#include<iomanip>

#include<ctime>

struct A {
  A(){}
  virtual ~A(){}
  A(int j) : i(j){}
int i;
};

struct B {

  A & a() {return *pa;}
  boost::shared_ptr<A> pa;
  int j;

};


boost::shared_ptr<A> make2(int i) {
   return boost::shared_ptr<A>(new A(i));
}


int get2(boost::shared_ptr<A> a) {
  return (*a).i;

}


int get2(B b) {
  return b.a().i; 
}

 std::string dateStamp2(TimePoint_t theTime) {
       typedef boost::date_time::c_local_adjustor<boost::posix_time::ptime>
local_adj;
       tm ptm = boost::posix_time::to_tm( local_adj::utc_to_local(theTime) );
       std::ostringstream dateStampStr;
       dateStampStr << std::setfill('0') << std::setw(4) << ptm.tm_year+1900
                    << std::setfill('0') << std::setw(2) << ptm.tm_mon+1
                    << std::setfill('0') << std::setw(2) << ptm.tm_mday;
       return dateStampStr.str();
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]