[Bug other/46125] New: -mcmodel=large doesn't work

2010-10-21 Thread liwei79 at gmail dot com
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 
extern int foo(int argc, char **argv);
void *pv1[1024]={(void*)foo,};
char a[2147483658] = {1, 2 };
char b[2147483658] = {2, 3 };
void *pv2[1024]={(void*)foo,};

int foo(int argc, char **argv)
{
printf("%d", a[2147483657]);
printf("%d", b[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


[Bug other/46125] -mcmodel=large doesn't work

2010-10-27 Thread liwei79 at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46125

Wei Li  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #2 from Wei Li  2010-10-28 06:22:59 UTC 
---
Thanks a lot.

I recompiled crtstuff.c with -mcmodel=large and the issue is solved.