This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
-mcmodel=large doesn't work to me
- From: Wei Li <liwei79 at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Fri, 22 Oct 2010 09:30:42 +0800
- Subject: -mcmodel=large doesn't work to me
- References: <AANLkTikKseCkJdi9kHGtAzhOzp4CxT31j172Rb==HevU@mail.gmail.com>
Hi,
I am working on huge object files and I am glad to see that gcc
supports -mcmodel=large now. However, my experiment even doesn't work
because of relocation problem in crtbeginS.o
My Source file: t.c
#include <stdio.h>
extern int foo(int argc, char **argv);
void *pv1[1024]={(void*)foo,};
char aaaaa[2147483658] = {1, 2 };
char bbbbb[2147483658] = {2, 3 };
void *pv2[1024]={(void*)foo,};
int foo(int argc, char **argv)
{
ÂÂÂ printf("%d", aaaaa[2147483657]);
ÂÂÂ printf("%d", bbbbb[2147483657]);
ÂÂÂ return 0;
}
Command line:
gcc -mcmodel=large -fPIC -shared t.c -o t.so
Error:
/gcc4.5.1/lib/gcc/x86_64-unknown-linux-gnu/4.5.1/crtbeginS.o: In
function `__do_global_dtors_aux':
crtstuff.c:(.text+0x3): relocation truncated to fit: R_X86_64_PC32
against `.bss'
crtstuff.c:(.text+0x37): relocation truncated to fit: R_X86_64_PC32
against `.bss'
crtstuff.c:(.text+0x57): relocation truncated to fit: R_X86_64_PC32
against `.bss'
crtstuff.c:(.text+0x62): relocation truncated to fit: R_X86_64_PC32
against `.bss'
crtstuff.c:(.text+0x6d): relocation truncated to fit: R_X86_64_PC32
against `.bss'
Could someone help me figure out the problem? I am using RH5 64bit.
Thanks,
Wei