http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46125
Summary: -mcmodel=large doesn't work Product: gcc Version: 4.5.1 Status: UNCONFIRMED Severity: critical Priority: P3 Component: other AssignedTo: unassig...@gcc.gnu.org ReportedBy: liwe...@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. My gcc is compiled with all default configuration. Thanks, Wei