[LLVMdev] Files to lib/System/Win32
Jeff Cohen
jeffc at jolt-lang.org
Mon Sep 20 19:44:33 PDT 2004
And here's another patch for Signals.cpp that corrects a compilation
problem with mingw provided to me by Henrik.
On Sun, 19 Sep 2004 12:35:48 -0700
Jeff Cohen <jeffc at jolt-lang.org> wrote:
> Completed testing. Diffs for Path.cpp attached to fix bugs.
>
> Some of them are probably present in the Unix version as well.
>
> There are some uses of ThrowError when there is no error present in
> errno to format. A throw statement should be used.
>
> Path::is_valid uses realpath on Unix. The problem is that realpath
> validates that all the directory components of the path actually exist
> and are executable. There are two problems with this. First, Path.h
> states that is_valid does syntactic validation only. Second, it is
> impossible to create a series of nested directories with
> create_directory(true) as such a path would be invalid according to
> realpath and hence is_valid. I changed the Win32 version to only
> perform syntactic validation.
>
> Path::create_directory had other problems. The use of path::copy to
> make a local copy of the path assumed there was a null terminator.
> std::string doesn't use null termination. The parsing code to identify
> the intermediate directories wasn't correct either.
>
> My first implementation of create_file was incorrect because it
> succeeded even if the file already existed. I fixed that, but creating
> a file to serialize concurrent programs is a Unix paradigm that is not
> appropriate for all platforms. On Windows the preferred way is to use a
> mutex, which cleans up after itself if a program dies abnormally.
>
>
> On Sat, 18 Sep 2004 22:38:25 -0700
> Reid Spencer <reid at x10sys.com> wrote:
>
> > Patch committed. Thanks for cleaning up some of the coding standards
> > issues.
> >
> > Reid.
> >
> > On Sat, 2004-09-18 at 22:18, Jeff Cohen wrote:
> > > Patch for Signals.cpp attached.
> > >
> > > On Sat, 18 Sep 2004 21:30:12 -0700
> > > Jeff Cohen <jeffc at jolt-lang.org> wrote:
> > >
> > > > On Sat, 18 Sep 2004 12:30:41 -0700
> > > > Reid Spencer <reid at x10sys.com> wrote:
> > > >
> > > > > Patch looks good so I committed it. I'd be interested in knowing what
> > > > > your test results are once you start testing with the Win32 port.
> > > >
> > > > I tested Signals.cpp and verified that the CTRL/C handler works, as does
> > > > the stack trace. In fact, here's a sample:
> > > >
> > > > 77E73887 (0xE06D7363 0x00000001 0x00000003 0x0012FF28), RaiseException()+0080 bytes(s)
> > > > 10226DB9 (0x0012FF44 0x0040DEFC 0x00020024 0x00647373), _CxxThrowException()+0057 bytes(s)
> > > > 00401822 (0x0012FFC0 0x00409A2C 0x00000001 0x003250D0), XYZ::func()+0034 bytes(s), c:\projects\llvm\test.cpp, line 12
> > > > 004017ED (0x00000001 0x003250D0 0x00322C68 0x00020024), main()+0013 bytes(s), c:\projects\llvm\test.cpp, line 19
> > > > 00409A2C (0x00020024 0x7FFDF000 0x7FFDF000 0xF3893CF0), mainCRTStartup()+0300 bytes(s), f:\vs70builds\3077\vc\crtbld\crt\src\crtexe.c, line 398+0017 byte(s)
> > > > 77E814C7 (0x00409900 0x00000000 0x78746341 0x00000020), GetCurrentDirectoryW()+0068 bytes(s)
> > > >
> > > > However, for some reason I haven't been able to determine, the lovely
> > > > trace you see above comes out only on Windows XP. On Windows 2000, it
> > > > can't get the symbol information for EXEs, though it does for DLLs. I
> > > > know this code worked on 2000 in the past, so it must be something that
> > > > broke with VC 7.1. Oh well.
> > > >
> > > > (The GetCurrentDirectoryW is bogus, but the top of the stack usually is).
> > > >
> > > > I did make some minor changes that I'll submit shortly.
> > > >
> > > > _______________________________________________
> > > > LLVM Developers mailing list
> > > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > > > http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
> > >
> > > ______________________________________________________________________
> > > _______________________________________________
> > > LLVM Developers mailing list
> > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> > > http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Signals.diff
Type: application/octet-stream
Size: 575 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20040920/b60294f0/attachment.obj>
More information about the llvm-dev
mailing list