From: j DOT aldrich6 AT genie DOT com Message-Id: <199607140814.AA207812066@relay1.geis.com> Date: Sun, 14 Jul 96 08:07:00 UTC 0000 To: djgpp AT delorie DOT com Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Subject: Error compiling Emacs 19.31 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