delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/2001/08/25/03:48:07

Date: Sat, 25 Aug 2001 10:45:20 +0300
From: "Eli Zaretskii" <eliz AT is DOT elta DOT co DOT il>
Sender: halo1 AT zahav DOT net DOT il
To: sandmann AT clio DOT rice DOT edu (Charles Sandmann)
Message-Id: <7263-Sat25Aug2001104519+0300-eliz@is.elta.co.il>
X-Mailer: Emacs 20.6 (via feedmail 8.3.emacs20_6 I) and Blat ver 1.8.9
CC: djgpp-workers AT delorie DOT com
In-reply-to: <10108241959.AA13217@clio.rice.edu> (sandmann@clio.rice.edu)
Subject: Re: gcc-3.0.1 WinXP and lfn=n
References: <10108241959 DOT AA13217 AT clio DOT rice DOT edu>
Reply-To: djgpp-workers AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: djgpp-workers AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

> From: sandmann AT clio DOT rice DOT edu (Charles Sandmann)
> Date: Fri, 24 Aug 2001 14:59:48 -0500 (CDT)
> > 
> > It dies someplace in stat() - we enter and NTVDM goes away.
> > The name we send it when it does does not exist, but seems OK to me:
> > ("d:/djgpp/bin/djgpp/3.01/as.exe")
> > However this is the CD drive and the device is not ready.
> > 
> > The previous calls to stat() had some really bad things sent:
> > "c:/djgpp/lib/gcc-lib/djgpp/3.01/../../../../djgpp/bin/djgpp/3.01/as.exe"
> > 
> > I don't think we are supposed to send DOS strings that long.  I'm not
> > sure which of these two caused the problem (or if a combo).
> > 
> > I'm not sure what algorithm GCC uses trying to find as, but it looks like
> > it's checked every random combo at this point and still hasn't found it :-)
> 
> I changed d:\djgpp\bin in specs to c:\djgpp\bin and I can now compile with
> lfn=n ... 

What specs did you mean here?  Are those the built-in specs that are
compiled into GCC?  If so, how does d:/djgpp/bin gets into them--is
that because this is the directory where you or Andris have built the
package?

> I wrote a small test program - and now I can kill NTVDM with a nice crash
> box.  The long SFN kills the "16-bit dos subsystem."

Can you post this program?

> Should we avoid sending very long strings to DOS?

How long is ``very long''?  DOS is supposed to be able to handle file
names up to 80 characters, with some functions limited to just 64.

Another known DOS limit is 8 levels of subdirectories: some system
calls fail if the file name is in a subdirectory more than 8 levels
deep.  The above file name doesn't exceed this limit, unless they
count them before canonicalization (with function 60h of Int 21h),
which should remove all the "../" parts for the file name.

Can you find out what is the limit in this case that NTVDM doesn't
like?

Also, I'm not sure I understand: if the long string is the one which
crashes NTVDM, how come removing d:/djgpp/bin from the list of
directories GCC tries fixed the problem?  Finally, does the fact that
the CD drive is empty have any importance?  What happens if you put a
disk in there?

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019