Red Hat Bugzilla – Bug 484658
Error: operand out of range on ppc64
Last modified: 2009-02-09 07:17:35 EST
Description of problem:
doxygen doesn't build on ppc64, iz breaks with Error: operand out of range
Version-Release number of selected component (if applicable):
just build doxygen-1.5.8 in rawhide
it breaks with Error: operand out of range, for more details please take a look
it should be built fine without the problem
it only happens on ppc64
I can reproduce it with doxygen-1.5.8, but it looks like doxygen maintainers' fault. language.cpp is simply too large for the ppc64 limitations.
If I count right, there are 39 translator_*.h files included in language.cpp, each of them having virtual functions with ~ 500 strings. That's almost 20000 unique string literals used throughout that compilation unit, times 8 bytes pointer size is well over the 64KB .toc or .toc1 (with -mminimal-toc) limit.
Split language.cpp into smaller compilation units (either one per translation, or at least split them into half), or put all or most strings into an array or something similar.
yes, language.cpp is to large, split them into half fixes the build problem
Or alternatively compile language.cpp with -fno-merge-constants, while that means string constants can't be merged between language.o and other *.o files, -fsection-anchors then can kick in as all string literals are then at known offsets within one .rodata block.