Mail Archives: djgpp/1996/07/15/14:36:42
I have encountered an interesting problem when compiling Emacs 19.31
with DJGPP. The compiler dies with a weird error during the final link
stage of the program, 'temacs':
gcc.exe: installation problem, cannot exec `c:/djgpp/bin\ld.exe': Not enough
memory (ENOMEM)
and my system crashes with the infamous "Cannot start COMMAND,
exiting" error. Most interesting of all, this crash only occurs when I have
EMM386 loaded, in either DOS or a Windows DOS box, but not when
I have only HIMEM.SYS loaded, without EMM386. I have more than
enough RAM (8 MB) and swap space (I tried with 5 MB swap, 12 MB
swap, and 27 MB swap, with no difference). I also have the strange
feeling that this problem or something similar has occurred to someone
before on the mailing list...
Anyway, here's the exact error I get (note that I ran this after compiling
every other part of Emacs successfully):
---- RESULTS OF MAKE ALL ----
(occurs under EMM386 & Win 3.1 DOS box, but not in raw boot w/HIMEM only)
C:\EMACS-19.31>make all
cd lib-src
c:/djgpp/bin/make.exe
make.exe[1]: Entering directory `c:/emacs-19.31/lib-src'
make.exe[1]: Nothing to be done for `all'.
make.exe[1]: Leaving directory `c:/emacs-19.31/lib-src'
cd ..
cd src
c:/djgpp/bin/make.exe
make.exe[1]: Entering directory `c:/emacs-19.31/src'
gcc -o temacs dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o
cm.o term.o emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o
filelock.o insdel.o marker.o intervals.o textprop.o minibuf.o fileio.o
dired.o filemode.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o
undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o
print.o lread.o abbrev.o syntax.o unexec.o mocklisp.o bytecode.o
process.o callproc.o region-cache.o doprnt.o strftime.o getloadavg.o
dosfns.o msdos.o xfaces.o termcap.o tparam.o lastfile.o gmalloc.o ralloc.o
vm-limit.o -lg -lm
gcc.exe: installation problem, cannot exec `c:/djgpp/bin\ld.exe': Not enough
memory (ENOMEM)
make.exe[1]: *** [temacs] Error 1
make.exe[1]: Leaving directory `c:/emacs-19.31/src'
make.exe: *** [src] Error 2
Memory allocation error
Cannot start COMMAND, exiting
Here's my system configuration. Yes, I've got a long, complex
config and autoexec; I got the errors when using the "dos_config"
setup, and was able to compile successfully when using the
"base_noCD" setup. I don't think for this problem that the output
of 'gcc -v' is necessary, but I can provide it if it will help.
---- GO32 OUTPUT ----
go32/v2 version 2.0 built Jan 23 1996 22:03:02
Usage: go32 coff-image [args]
Rename this to go32.exe only if you need a go32 that can run v2 binaries as
well as v1 binaries (old makefiles). Put ahead of the old go32 in your PATH.
DPMI memory available: 5572 Kb
DPMI swap space available: 11064 Kb
---- CONFIG.SYS ----
switches= /f
; MS-DOS Startup Menu
[menu]
menuitem base_config, Base configuration only (for max free memory)
menuitem win_config, Normal configuration - start in Windows
menuitem dos_config, Normal configuration - start in MS-DOS
menuitem base_win, Minimum Windows configuration
submenu game_config, Non-standard game configurations
menudefault=dos_config,10
[game_config]
menuitem base_CD, Load CD-ROM drivers only
menuitem sd_CD, Load remapped CD-ROM and SMARTDRV (most games)
menuitem emm_CD, Load CD-ROM, EMM386, and SMARTDRV
menuitem base_noCD, Do not load any drivers
menuitem sd_noCD, Load SMARTDRV only (most non-CD games)
menuitem emm_noCD, Load EMM386 & SMARTDRV
submenu spec_config, Individual game configurations
submenu menu, Return to Main menu
[spec_config]
menuitem d2_start, Run Descent II
menuitem civ2_start, Run Civilization II
menuitem duke3d_start, Run Duke Nukem 3D
submenu game_config, Return to Game Config menu
[auto]
SHELL=C:\DOS\COMMAND.COM /P/E:1536
DEVICE=C:\DOS\HIMEM.SYS
FILES=30
BUFFERS=30
STACKS=0,0
FCBS=1
[base_config]
include=auto
DOS=HIGH
DEVICE=C:\WINDOWS\MOUSE.SYS
[win_config]
include=auto
DEVICE=C:\DOS\EMM386.EXE FRAME=E000 RAM MIN=0 D=64 I=B000-B7FF I=E000-EFFF
DOS=HIGH,UMB
DEVICE=C:\PLUGPLAY\DRIVERS\DOS\DWCFGMG.SYS
DEVICEHIGH=C:\WINDOWS\MOUSE.SYS
DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS
DEVICEHIGH=C:\SOUND144\DRIVERS\CDMKE.SYS /P:340 /D:MSCD0001
DEVICEHIGH=C:\DOS\NANSY.SYS /X
[dos_config]
include=win_config
[base_win]
include=auto
DEVICE=C:\DOS\EMM386.EXE FRAME=E000 RAM MIN=0 D=64 I=B000-B7FF I=E000-EFFF
DOS=HIGH,UMB
DEVICE=C:\PLUGPLAY\DRIVERS\DOS\DWCFGMG.SYS
DEVICEHIGH=C:\WINDOWS\MOUSE.SYS
DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS
DEVICEHIGH=C:\SOUND144\DRIVERS\CDMKE.SYS /P:340 /D:MSCD0001
[base_CD]
include=base_config
DEVICE=C:\SOUND144\DRIVERS\CDMKE.SYS /P:340 /D:MSCD0001
[sd_CD]
include=base_CD
[emm_CD]
include=auto
DEVICE=C:\DOS\EMM386.EXE FRAME=E000 RAM MIN=0 D=64 I=B000-B7FF I=E000-EFFF
DOS=HIGH,UMB
DEVICEHIGH=C:\SOUND144\DRIVERS\CDMKE.SYS /P:340 /D:MSCD0001
DEVICEHIGH=C:\WINDOWS\MOUSE.SYS
[base_noCD]
include=base_config
[sd_noCD]
include=base_noCD
[emm_noCD]
include=auto
DEVICE=C:\DOS\EMM386.EXE FRAME=E000 RAM MIN=0 D=64 I=B000-B7FF I=E000-EFFF
DOS=HIGH,UMB
DEVICEHIGH=C:\WINDOWS\MOUSE.SYS
[d2_start]
include=sd_CD
[civ2_start]
include=base_win
[duke3d_start]
include=sd_CD
---- AUTOEXEC.BAT ----
@ECHO OFF
REM Automatic stuff
PATH
.;C:\;C:\UTIL;C:\DJGPP\BIN;C:\DOS;C:\DOS\PWRTOOLS;C:\WINDOWS;C:\SOUND144\UTILITY
;C:\PBTOOLS;C:\EMACS-19.31\BIN
PROMPT $P$G
SET DIRCMD=/O/P
SET TEMP=C:\PBTOOLS\WINTEMP
SET WINPMT=[WIN] $P$G
SET BLASTER=A220 I5 D1 T4
SET GALAXY=A220 I5 D1 K10 P530 T6
SET SOUND=C:\SOUND144
SET GAMES=C:\GAMES
SET POWERSET=ADV:REG
SET ROM2=C:\ROM2
SET ROM_LOG=ROM2.LOG
REM Put original WIN.INI back
if exist c:\windows\_winini.001 update c:/windows/_winini.001
c:/windows/win.ini
REM DJGPP environment settings
CALL C:\DJGPP\BIN\SETDJGPP C:\DJGPP C:/DJGPP
SET TMPDIR=%TEMP%
SET GO32TMP=%TEMP%
SET GO32=ansi
REM Sound settings
C:\SOUND144\UTILITY\SETMODE /SBP
C:\SOUND144\UTILITY\MIC3D /3D:ON
C:\SOUND144\UTILITY\VOLSET /S:S
REM Which configuration did we pick?
GOTO %CONFIG%
REM This is basic setup for full config
:win_config
:dos_config
C:\WINDOWS\AD_WRAP.COM
C:\PBTOOLS\AZCAL.EXE
LH C:\DOS\MSCDEX.EXE /D:MSCD0001 /M:20
C:\DOS\SMARTDRV.EXE 1024 512 /N/F
LH C:\PBTOOLS\CDREMAP.EXE
C:\DOS\DOSKEY /INSERT
CALL C:\UTIL\MACINIT
LH C:\WINDOWS\AD-DOS.COM /T10
LH C:\DOS\VSAFE.COM /1+ /2- /3- /4- /5+ /6+ /7+ /8- /Av
rem LH C:\DOS\SHARE.EXE
SET WINPMT=$E[1;35;44m[WIN]$E[1;34;40m $P$G
REM Figure out if we wanted Windows or DOS
IF %CONFIG%==win_config GOTO win_start
IF %CONFIG%==dos_config GOTO dos_start
REM This is an alternate Windows setup for max free memory.
:base_win
:civ2_start
LH C:\DOS\MSCDEX.EXE /D:MSCD0001 /M:20
C:\DOS\SMARTDRV.EXE 512 256 /N/F
LH C:\PBTOOLS\CDREMAP.EXE
if exist c:\windows\_winini.002 update c:/windows/_winini.002
c:/windows/win.ini
IF %CONFIG%==civ2_start CALL C:\UTIL\GAMES.BAT civ2
IF %CONFIG%==civ2_start GOTO END
CALL WIN
GOTO END
REM Start in Windows
:win_start
CALL WIN
GOTO PROMPT
REM Start in MS-DOS
:dos_start
CLS
REM This causes the date and time to be displayed once on startup.
PROMPT $E[1;34;40mSystem date: $D$_System time: $T
@ECHO ON
@ECHO OFF
VER
GOTO PROMPT
:PROMPT
PROMPT $E[1;34;40m$P$G
GOTO END
REM Alternate configurations
:sd_noCD
:emm_noCD
:duke3d_start
C:\DOS\SMARTDRV.EXE 256
:base_config
:base_noCD
IF %CONFIG%==duke3d_start CALL C:\UTIL\GAMES.BAT duke3d
GOTO END
:base_CD
:emm_CD
:sd_CD
:d2_start
LH C:\DOS\MSCDEX.EXE /D:MSCD0001 /M:20
IF %CONFIG%==base_CD GOTO END
C:\DOS\SMARTDRV.EXE 256
C:\PBTOOLS\CDREMAP.EXE
IF %CONFIG%==d2_start CALL C:\UTIL\GAMES.BAT descent2
GOTO END
REM We're outta here
:END
---- ENVIRONMENT ----
CONFIG=dos_config
COMSPEC=C:\COMMAND.COM
PATH=.;C:\;C:\UTIL;C:\DJGPP\BIN;C:\DOS;C:\DOS\PWRTOOLS;C:\WINDOWS;C:\SOUND144\UT
ILITY;C:\PBTOOLS;C:\EMACS-19.31\BIN
DIRCMD=/O/P
TEMP=C:\PBTOOLS\WINTEMP
BLASTER=A220 I5 D1 T4
GALAXY=A220 I5 D1 K10 P530 T6
SOUND=C:\SOUND144
GAMES=C:\GAMES
POWERSET=ADV:REG
ROM2=C:\ROM2
ROM_LOG=ROM2.LOG
DJGPP=C:/DJGPP/djgpp.env
TMPDIR=C:\PBTOOLS\WINTEMP
GO32TMP=C:\PBTOOLS\WINTEMP
GO32=ansi
WINPMT=$E[1;35;44m[WIN]$E[1;34;40m $P$G
PROMPT=$E[1;34;40m$P$G
- Raw text -