While building Qt with -flto, helper apps with an additional -fwhole-program:
g++ -Wl,-rpath-link,/usr/src/ark/BUILD/qt/lib -m64 -O2 -fomit-frame-pointer -fweb -frename-registers -Wl,-O2,-z,combreloc,-z,relro,--enable-new-dtags,--hash-style=gnu -g -flto -Wl,-rpath,/usr/lib64/qt4-embedded/lib -Wl,-rpath,/usr/lib64/qt4-embedded/lib -flto -fwhole-program -o ../../../bin/uic3 .obj/release-static-emb-x86_64/customwidgetsinfo.o .obj/release-static-emb-x86_64/databaseinfo.o .obj/release-static-emb-x86_64/driver.o .obj/release-static-emb-x86_64/treewalker.o .obj/release-static-emb-x86_64/ui4.o .obj/release-static-emb-x86_64/validator.o .obj/release-static-emb-x86_64/cppextractimages.o .obj/release-static-emb-x86_64/cppwritedeclaration.o .obj/release-static-emb-x86_64/cppwriteicondata.o .obj/release-static-emb-x86_64/cppwriteicondeclaration.o .obj/release-static-emb-x86_64/cppwriteiconinitialization.o .obj/release-static-emb-x86_64/cppwriteincludes.o .obj/release-static-emb-x86_64/cppwriteinitialization.o .obj/release-static-emb-x86_64/main.o .obj/release-static-emb-x86_64/ui3reader.o .obj/release-static-emb-x86_64/parser.o .obj/release-static-emb-x86_64/domtool.o .obj/release-static-emb-x86_64/object.o .obj/release-static-emb-x86_64/subclassing.o .obj/release-static-emb-x86_64/form.o .obj/release-static-emb-x86_64/converter.o .obj/release-static-emb-x86_64/widgetinfo.o .obj/release-static-emb-x86_64/embed.o .obj/release-static-emb-x86_64/qt3to4.o .obj/release-static-emb-x86_64/deps.o .obj/release-static-emb-x86_64/uic.o -L/usr/src/ark/BUILD/qt/lib -lQt3Support -L/usr/src/ark/BUILD/qt/lib -lQtSql -lsqlite3 -lQtXml -lQtGui -lpng -lfreetype -lQtNetwork -lssl -lcrypto -lQtCore -lz -lm -ldl -lrt -lpthread /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3ReaderC2ER11QTextStreamj:ui3reader.cpp:245: error: undefined reference to '_ZN7PortingC1Ev' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader13getObjectNameERK11QDomElement:ui3reader.cpp:383: error: undefined reference to '_ZN9Ui3Reader17getObjectPropertyERK11QDomElementRK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader8generateERK7QStringS2_12QDomDocumentbbS2_S2_S2_:ui3reader.cpp:276: error: undefined reference to '_ZN9Ui3Reader13createSubDeclERK11QDomElementRK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader8generateERK7QStringS2_12QDomDocumentbbS2_S2_S2_:ui3reader.cpp:281: error: undefined reference to '_ZN9Ui3Reader14createFormDeclERK11QDomElement' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader8generateERK7QStringS2_12QDomDocumentbbS2_S2_S2_:ui3reader.cpp:273: error: undefined reference to '_ZN9Ui3Reader17createWrapperDeclERK11QDomElementRK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader8generateERK7QStringS2_12QDomDocumentbbS2_S2_S2_:ui3reader.cpp:278: error: undefined reference to '_ZN9Ui3Reader13createSubImplERK11QDomElementRK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader8generateERK7QStringS2_12QDomDocumentbbS2_S2_S2_:ui3reader.cpp:283: error: undefined reference to '_ZN9Ui3Reader14createFormImplERK11QDomElement' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN9Ui3Reader11generateUi4ERK7QStringS2_12QDomDocument:ui3reader.cpp:295: error: undefined reference to '_ZN9Ui3Reader11generateUi4ERK11QDomElement' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN3CPP19WriteInitialization15acceptActionRefEP12DomActionRef:../uic/cpp/cppwriteinitialization.cpp:1159: error: undefined reference to '_ZNK3Uic6isMenuERK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _Z7runUic3iPPc:main.cpp:300: error: undefined reference to '_ZN9Ui3Reader5embedEPKcRK11QStringList' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _Z7runUic3iPPc:main.cpp:329: error: undefined reference to '_ZN7DomTool11fixDocumentER12QDomDocument' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _Z7runUic3iPPc:main.cpp:342: error: undefined reference to '_ZN9Ui3Reader11computeDepsERK11QDomElementR11QStringListS4_b' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _Z7runUic3iPPc:main.cpp:338: error: undefined reference to '_ZN9Ui3Reader5embedEPKcRK11QStringList' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN3CPP19WriteInitialization12acceptWidgetEP9DomWidget:../uic/cpp/cppwriteinitialization.cpp:627: error: undefined reference to '_ZNK3Uic11isContainerERK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN3CPP19WriteInitialization12acceptWidgetEP9DomWidget:../uic/cpp/cppwriteinitialization.cpp:659: error: undefined reference to '_ZNK3Uic8isButtonERK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN3CPP19WriteInitialization12acceptWidgetEP9DomWidget:../uic/cpp/cppwriteinitialization.cpp:676: error: undefined reference to '_ZNK3Uic23isCustomWidgetContainerERK7QString' /usr/bin/ld: /tmp/ccegbjMZ.lto.o: in function _ZN3CPP19WriteInitialization12acceptWidgetEP9DomWidget:../uic/cpp/cppwriteinitialization.cpp:677: error: undefined reference to '_ZNK3Uic11isContainerERK7QString' collect2: ld returned 1 exit status Looking at the first symbol complained about: _ZN7PortingC1Ev is Porting::Porting() This symbol is defined in qt3to4.cpp, which becomes qt3to4.o, which is one of the object files mentioned explicitly on the command line -- the symbol appears to be "optimized away" wrongfully. -- Summary: LTO strips out symbols that are actually needed Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bero at arklinux dot org GCC build triplet: x86_64-unknown-linux-gnu GCC host triplet: x86_64-unknown-linux-gnu GCC target triplet: x86_64-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44390