[Bug c++/61811] New: [4.10 Regression] Firefox LTO build error due to undefined symbols

trippels at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jul 15 13:52:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61811

            Bug ID: 61811
           Summary: [4.10 Regression] Firefox LTO build error due to
                    undefined symbols
           Product: gcc
           Version: 4.10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org
                CC: hubicka at ucw dot cz, jason at gcc dot gnu.org

Firefox doesn't build with -flto on trunk. It fails due to undefined symbols
during linking of libxul. This only happens if -flto, -fno-rtti and
-fuse-all-virtuals are all enabled during the build.

Reduced testcase:

markus@x4 signaling_ecc % cat CC_SIPCCLine.ii
template <class T> class nsRefPtr
{
  T *mRawPtr;

public:
  typedef T element_type;
  ~nsRefPtr () { mRawPtr->Release (); }
  void get ();
};

namespace CSF
{
class CC_Call
{
public:
  void Release () { delete this; }
  virtual ~CC_Call ();
};
class CC_SIPCCCallMediaData
{
public:
  void Release ();
};
class A : public CC_Call
{
public:
  static nsRefPtr<CSF::A> wrap (int);
  nsRefPtr<CSF::CC_SIPCCCallMediaData> pMediaData;
};
}

using namespace CSF;
void fn1 () { A::wrap (0).get (); }

markus@x4 signaling_ecc % c++filt
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
nsRefPtr<CSF::CC_SIPCCCallMediaData>::~nsRefPtr()

markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-rtti -flto -O2
CC_SIPCCLine.ii                                                        
markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
         U _ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -flto -O2 CC_SIPCCLine.ii
markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -O2 CC_SIPCCLine.ii
markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-rtti -O2
CC_SIPCCLine.ii
markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
markus@x4 signaling_ecc % c++ -o CC_SIPCCLine.o -c -fno-use-all-virtuals
-fno-rtti -flto -O2 CC_SIPCCLine.ii
markus@x4 signaling_ecc % nm CC_SIPCCLine.o | grep
_ZN8nsRefPtrIN3CSF21CC_SIPCCCallMediaDataEED1Ev
markus@x4 signaling_ecc %



More information about the Gcc-bugs mailing list