DMD 2.055 Crashing on Windows 7 x64 (So is my D program)
Mehrdad
wfunction at hotmail.com
Mon Sep 26 19:08:39 PDT 2011
On 9/26/2011 3:38 PM, Steven Schveighoffer wrote:
> On Mon, 26 Sep 2011 18:10:05 -0400, Mehrdad <wfunction at hotmail.com>
> wrote:
>
>> On 9/26/2011 2:53 PM, Steven Schveighoffer wrote:
>>> I think the reason Walter always gives is that dmd would then have
>>> to output COFF objects, whereas it currently outputs OMF. OPTLINK
>>> also does not accept COFF objects.
>> Wait, why does it have to output COFF? Can't you just use an OMF
>> version of msvcrt.lib, like we're doing for all the other Windows
>> libraries?
>> I'm confused as to how this is an issue.
>
> I don't know, maybe there's another reason.
>
>>
>>> I think a lot of people would very much welcome this change, but
>>> it's somewhat of an underwhelming change. Instead of using DMC's
>>> runtime for C functions, you are using VC++'s runtime. But who
>>> cares? I want D's runtime to be better :)
>> Well, sort of. It's not so much Visual C++'s runtime, but it's
>> Microsoft's C runtime that's packaged with Windows (which Microsoft
>> ironically doesn't want you to use, but which compilers like GCC use
>> anyway... and it turns out better than anything bundled with Visual
>> Studio). You don't actually need Visual Studio to use it (in fact,
>> it's not even included) -- the Windows Driver Kit has the bundled
>> stuff required.
>
> It's the same thing. MSVCRT.dll is included with every windows. Just
> the version may be different from the runtime bundled with Visual
> Studio. That's why you can install the visual studio redistributable
> package.
>
> The lib file (which contains the linking information) is not included
> (with Windows). Neither is the statically linked version.
>
> But make no mistake, it's the Visual C++ runtime
> (MicroSoftVisualCRunTime).
>
>>
>> In all honesty I don't see a single thing about it that I would call
>> "better". Do you have any examples of things that snn.lib does
>> 'better' than msvcrt.lib?
>
> I think it may conform to the standard better. But I don't think any
> C runtime is better than what we could make in D :)
>
>> The only incompatibility (which isn't "better" or "worse"... it's
>> just an incompatibility) I can see is exception handling, but that's
>> obviously an exception that can be left in snn.lib. Almost all the
>> rest of the runtime, though, can be easily removed and redirected to
>> msvcrt.dll... and I don't think there'd be any problems. (Are there?)
>
> I don't know. For certain, there are some pieces of phobos written
> specifically knowing the internals of Digital Mars' runtime (like
> std.stdio).
>
>>> I think the best path is weaning ourselves off of C dependencies.
>>> Starting with FILE *, which has a lot of limitations. It's part of
>>> the reason I'm working on reworking std.stdio.
>>> For example, with my version of std.stdio, you would never have this
>>> problem, because it deals with the HANDLE directly instead of
>>> through DMC's file descriptor layer.
>> 100% agree, but we weren't talking about D in the first place. :)
>> This is all regarding what's /already/ taking place in snn.lib
>> /before/ D runs, which is obviously unrelated to what's going on in
>> std.stdio.
>>
>> I'm really curious to know what specific problems are keeping us from
>> doing the switch (i.e. what snn.lib does better than msvcrt.dll). :)
>
> I'm not really qualified to answer that. It seems like the right move
> to me, so there must be good reasons compiler-wise.
>
> -Steve
I hope this isn't too huge of a request (Walter?), but would it be
possible to PLEASE release an object or library file which would be
helpful for implementing the use of msvcrt.lib?
Right now, most crucial thing I need is an object file which defines
this symbol correctly (since it seems to be providing an anchor for the
rest runtime and the GC):
phobos.lib(memory) Error 42: Symbol Undefined __xi_a
Having something that also implements the following would also be
awesome, but I can't tell if it's as crucial as the above until I have
the above and try it out first:
Test.obj(Test) Error 42: Symbol Undefined __except_list
phobos.lib(deh) Error 42: Symbol Undefined __tls_array
phobos.lib(deh) Error 42: Symbol Undefined __tls_index
phobos.lib(thread) Error 42: Symbol Undefined __tlsend
phobos.lib(thread) Error 42: Symbol Undefined __tlsstart
phobos.lib(memory) Error 42: Symbol Undefined __end
If I could _only_ have these, then I could very well try to see if I can
integrate the C runtime with msvcrt.dll, which I think many people would
appreciate.
I'm pretty sure that the definition of __xi_a itself must be incredibly
small (maybe 2 lines of code total?) so I hope it's not too much trouble
to release something about it... I have no idea how to define it myself.
If a working definition was released then it'd be pretty awesome.
Thank you!
More information about the Digitalmars-d
mailing list