Red Hat Bugzilla – Bug 492174
qt fails to build on ia64
Last modified: 2009-09-08 07:22:55 EDT
Description of problem:
qt fails to build with recent gcc. If fails with:
/builddir/build/BUILD/qt-x11-opensource-src-4.5.0/src/corelib/global/qlibraryinfo.cpp:573: undefined reference to `boilerplate'
This is because on ia64 boilerplate is used by some inline asm code and it appears gcc is optimizing the symbol out so it is not available to the assembler.
I am attaching a simple patch that resolves this.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
Thanks, but I don't see any patch here.
Created attachment 337226 [details]
patch to fix build on ia64
Oops, guess I forgot to attach this when I filed it.
I'm ok with including this at least temporarily until gcc is fixed (my understanding is this patch is simply to workaround a gcc bug, right?).
Anyway, if not done so already, please file an issue against gcc, so we'll know when we can drop the workaround.
I don't think this is a gcc bug. The real problem is the inline asm code included in qt. I think it is perfectly valid for gcc to optimize those values out in this case. Technically it is the inline asm code in qt for ia64 that is breaking the rules by hard coding "boilerplate" into it instead of having that passed as a paramter (as in the x86 asm code). What we probably should do is re-write the asm code but that is way beyond me. I can try to find an ia64 expert to re-write that and provide a new patch.
In the meantime since qt is needed by so many other packages I would appreciate it if we could pull in this patch for now at least.
Why don't you use __attribute__((used)) instead of pessimizing the string into a non-constant one?
This bug appears to have been reported against 'rawhide' during the Fedora 11 development cycle.
Changing version to '11'.
More information and reason for this action is here:
it's fixed in qt-4.5.2