RS/6000 gcc compile large file error

hi, everybody��

i have a question, pls help me��

OS : RS/6000 AIX 4.3.3
cPU : Powerpc,POWER3
compiler : gcc 3.2.3
source file �� 8M
OS kernel : 32 bit (selecting at installing operating system, the hardware support 64 bit)

when i compiling the large source file (8 M), i encouter the probelm��

/tmp//ccWYols1.s: line 367983: 1252-171 The displacement must be greater than or equal to -32768 and less than or equal to 32767.
/tmp//ccWYols1.s: line 368041: 1252-171 The displacement must be greater than or equal to -32768 and less than or equal to 32767.

If someone have answers to my problem , such as define macro, add compile options , pls tell me . Thanks!!!!!!!

waiting online..........

first, Thank you very much Driver!!!!!

my english is poor, pls forgive me .

i search the prolem in goole, i find a article . i guess you are right. but how can i do for resolving this register problem .

next is the article , if you have time ,pls help me .

how to compile:
% g++ -maix64 -g -o bigfile2 bigfile2.cc -save-temps -v

error message:
Reading specs from /usr/local/lib/gcc-lib/rs6000-ibm-aix5.1.0.0/3.0.1/specs
Configured with: ../configure rs6000-ibm-aix5.1.0.0
Thread model: single
gcc version 3.0.1
GNU CPP version 3.0.1 (cpplib)
ignoring nonexistent directory "/usr/local/rs6000-ibm-aix5.1.0.0/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include/g++-v3
/usr/local/include/g++-v3/rs6000-ibm-aix5.1.0.0
/usr/local/include/g++-v3/backward
/usr/local/include
/usr/local/lib/gcc-lib/rs6000-ibm-aix5.1.0.0/3.0.1/include
/usr/include
End of search list.
/usr/local/lib/gcc-lib/rs6000-ibm-aix5.1.0.0/3.0.1/cc1plus -fpreprocessed bigfile2.ii -quiet -dumpbase bigfile2.cc -maix64 -g -version -o bigfile2.s
GNU CPP version 3.0.1 (cpplib)
GNU C++ version 3.0.1 (rs6000-ibm-aix5.1.0.0)
compiled by GNU C version 2.9-aix43-010414.
as -u -a64 -mppc64 -o bigfile2.o bigfile2.s
Assembler:
bigfile2.s: line 96894: The displacement must be greater than or equal to
-32768 and less than or equal to 32767.
bigfile2.s: line 96903: The displacement must be greater than or equal to
-32768 and less than or equal to 32767.
bigfile2.s: line 96912: The displacement must be greater than or equal to
-32768 and less than or equal to 32767.
bigfile2.s: line 96921: The displacement must be greater than or equal to
-32768 and less than or equal to 32767.
....

This assembler is AIX's assembler.
IBM AIX development team says, this error is not assember's problem:

Problem is with g++ compiler. You are hitting the
hardware limitation. To make it clear consider an opcode
.
ld r4,X(r3);
.
where X will be at most 16 bit.
So irrespective of 64bit or 32 bit object file
we can traverse an offset value of 16 bit.
While creating the assembly listing g++ crossed
the limitation. So assembler throws series of error
messages.
.
Customer can use IBM compiler, which takes care
of this problem and we are not supporting the g++
compiler.
.

Release:
gcc version 3.0.1

Environment:
AIX 5.1 (Maintenance Level 01)
(rs6000-ibm-aix5.1.0.0)

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=4587

Thank you Driver ,you are very kind.

i try it under you instruction.

i work on ElectricPower system software .

if i can solve this problem ,i must inform you .

by the way , i am in China, i know you are German , nice to meet you . my e-mail : q30china@yahoo.com.cn

in my program the global variable is very much, i split the source file , and it can go on compiling .

i still want to modify system options or add compile options to resolve this question, but my times is not permitted.

anyone know , pls tell me ,thank you Driver!!!!