Bug 000187

When Created: 10/31/1997 10:01:58
Against DJGPP version: 2.01
By whom:
Abstract: as.exe cannot allocate enough memory
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 on Solaris

Note added: 11/03/1997 11:31:51
By whom:
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...

Closed on 04/12/1999 11:00:16: These are not bugs, but limitation of the hardware and software .
By whom:

  webmaster     delorie software   privacy  
  Copyright 2010   by DJ Delorie     Updated Jul 2010