www.delorie.com/djgpp/bugs/show.cgi | search |
Compiling a 3.7Mb C file with gcc -c gives the following error: djgpp/bins.exe: can not allocate 5000 bytes after allocating 35054144 bytes This is on a 200MHz Pentium with 64Mb of real memory and 130Mb of swap space available (as reported by go32-v2). Splitting the big file into two, I get the following message on trying to compile the second part: BFD: all-b2.o: .text: reloc overflow: 0x16cb3 > 0xffff all-b2.o: Assembler messages: all-b2.o: 346062: Error: bfd_coff_swap_scnhdr_out failed The C file contains a very large number of symbols which are initialised in what was originally a single function of about 13,500 lines. The single function was split into 2,000 line sub-functions (otherwise gcc used lots of memory to compile it!). It compiles ans runs OK with gcc 2.7.2.3 on Solaris
This problem report is about two, mostly unrelated things, actually: The first problem is caused by simple lack of memory and/or swap space, it seems. But it could also be for lack of page table entries in CWSDPMI: allocating those 35 MB (!) in chunks like 5K is quite much. Or it could be Windows' limit of 64 MB for a DPMI client, as those 35 MB might actually get blown up by a factor of two due to the way the malloc() in DJGPP's libc works. The second problem is the well-known COFF problem: there's a limit of 64K line-number debugging records. You hit that (that '0xffff' is the 64K limit) with your file, it seems. Splitting it down even further should fix both kinds of problems. 3.7 MB in a single source file *is* rather large, after all...
webmaster | delorie software privacy |
Copyright © 2010 by DJ Delorie | Updated Jul 2010 |