Comment 2 for bug 924726

Revision history for this message
Ken Werner (kwerner) wrote :

I encountered the issue when compiling Qt 4.8.0 using -O0. It causes qdbusviewer fail to link:

`.LTHUNK0' referenced in section `.text._ZN14PropertyDialogD1Ev[PropertyDialog::~PropertyDialog()]' of .obj/release-shared-emb-arm/moc_propertydialog.o: defined in discarded section `.text._ZN14PropertyDialogD2Ev[_ZN14PropertyDialogD5Ev]' of .obj/release-shared-emb-arm/moc_propertydialog.o
collect2: ld returned 1 exit status

I noticed that as soon as the main.o (the user of that property dialog) gets built with -O1 (or higher) the link succeeds. I guess that most people who are using the multiple inheritance feature of C++ don't build their sources with -O0 usually. Tha might explain why we didn't see this issue earlier.

However, the .THUNK symbols survive regardless of the optimization level or the mode (arm/thumb). I've checked various GCC versions and the latest binutils (20120131) with the following results:
affected:
 * gcc-linaro-4.6-2012.01
 * Linaro binary toolchain (gcc-linaro-arm-linux-gnueabi-2012.01-20120125_linux)
 * g++-arm-linux-gnueabi 4.6.0-8 shipped with Ubunut 11.10 (Oneiric)
 * ARM CSL 2011.03

not affected:
 * FSF GCC 4.7 trunk (r183767)
 * FSF GCC gcc-4_6-branch (r183768)
 * FSF GCC gcc_4_6_0_release (r183772)