Bug 484658 - Error: operand out of range on ppc64
Error: operand out of range on ppc64
Product: Fedora
Classification: Fedora
Component: gcc (Show other bugs)
ppc64 Linux
medium Severity medium
: ---
: ---
Assigned To: Jakub Jelinek
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2009-02-09 05:48 EST by Ngo Than
Modified: 2009-02-09 07:17 EST (History)
1 user (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2009-02-09 06:45:15 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Ngo Than 2009-02-09 05:48:51 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):

How reproducible:
just build doxygen-1.5.8 in rawhide

Actual results:
it breaks with Error: operand out of range, for more details please take a look
at http://koji.fedoraproject.org/koji/taskinfo?taskID=1114733

Expected results:
it should be built fine without the problem

Additional info:
it only happens on ppc64
Comment 2 Jakub Jelinek 2009-02-09 06:45:15 EST
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.
Comment 3 Ngo Than 2009-02-09 06:52:38 EST
yes, language.cpp is to large, split them into half fixes the build problem
Comment 4 Jakub Jelinek 2009-02-09 07:17:35 EST
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.

Note You need to log in before you can comment on or make changes to this bug.