D.gnu - MinGW64 Build Instructions
- Daniel Green (6/6) Apr 29 2011 https://bitbucket.org/goshawk/gdc/wiki/MinGW64
- dsimcha (9/15) Apr 30 2011 Nice! Based on your other post, I'm a little confused. Is this a
- Daniel Green (5/8) Apr 30 2011 I've attempted to patch Phobos and got it to compile. I think there are...
- dsimcha (3/9) May 14 2011 Now that you have the patches "officially" submitted, are you going to
- Daniel Green (3/5) May 17 2011 I'll get binaries posted when I have a build script that can go from
- Vladimir Panteleev (8/14) May 25 2011 I took the liberty of cleaning up the instructions a bit.
- Daniel Green (8/11) May 27 2011 Is that with the patch? The errors should be uint to size_t
- Vladimir Panteleev (19/31) May 27 2011 Where is the patch? In the original post you said you'd post the patches...
- Daniel Green (6/20) May 27 2011 Forgot to mention it but all patches relating to Win64 support can be
- Vladimir Panteleev (9/11) May 27 2011 Thanks, didn't expect that part to be that simple.
- Daniel Green (4/12) May 28 2011 I think the problem is likely to be the Win64 calling convention. Win64...
- Vladimir Panteleev (6/22) May 29 2011 Pretty sure it's not the calling convention. aApplycdzd exists only in t...
- Daniel Green (10/12) Jun 01 2011 I looked into the issue and the problem lines with the use of sprintf in...
https://bitbucket.org/goshawk/gdc/wiki/MinGW64 The above link details the process of building GDC with TDM64. The instructions are not great at the moment. It's getting late and I rushed them. I'll get the patches posted sometime tomorrow. Post any questions or comments in this newsgroup and I'll do my best to answer them.
Apr 29 2011
On 4/30/2011 1:42 AM, Daniel Green wrote:https://bitbucket.org/goshawk/gdc/wiki/MinGW64 The above link details the process of building GDC with TDM64. The instructions are not great at the moment. It's getting late and I rushed them. I'll get the patches posted sometime tomorrow. Post any questions or comments in this newsgroup and I'll do my best to answer them.Nice! Based on your other post, I'm a little confused. Is this a barebones 64-bit compiler, or is it at least an attempt to patch Phobos and druntime to work on Win64? Right now pretty much all time/energy I have for D work is being devoted to tracking down the Heisenbug from Hell in std.parallelism (which I think might actually be a codegen bug that's messing with the low order bits of pointers), so I won't have time to look at this in much detail until that gets fixed, but after that I'll be willing to put it through some serious testing.
Apr 30 2011
On 4/30/2011 3:20 PM, dsimcha wrote:Nice! Based on your other post, I'm a little confused. Is this a barebones 64-bit compiler, or is it at least an attempt to patch Phobos and druntime to work on Win64?I've attempted to patch Phobos and got it to compile. I think there are issues resulting from Win64 calling conventions not prefixing '_' to symbols. Most of the changes are uint/ulong casts. So it was surprisingly easier than I had imagined.
Apr 30 2011
On 4/30/2011 1:42 AM, Daniel Green wrote:https://bitbucket.org/goshawk/gdc/wiki/MinGW64 The above link details the process of building GDC with TDM64. The instructions are not great at the moment. It's getting late and I rushed them. I'll get the patches posted sometime tomorrow. Post any questions or comments in this newsgroup and I'll do my best to answer them.Now that you have the patches "officially" submitted, are you going to post binaries?
May 14 2011
On 5/14/2011 11:02 PM, dsimcha wrote:Now that you have the patches "officially" submitted, are you going to post binaries?I'll get binaries posted when I have a build script that can go from start to finish without human intervention.
May 17 2011
On Sat, 30 Apr 2011 08:42:57 +0300, Daniel Green <venix1 gmail.com> wrote:https://bitbucket.org/goshawk/gdc/wiki/MinGW64 The above link details the process of building GDC with TDM64. The instructions are not great at the moment. It's getting late and I rushed them. I'll get the patches posted sometime tomorrow. Post any questions or comments in this newsgroup and I'll do my best to answer them.I took the liberty of cleaning up the instructions a bit. However, it doesn't look like the Phobos in HG tip is ready for 64-bit. There were some trivial problems in std.stream, but lots of warnings/errors in the GC. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
May 25 2011
On 5/25/2011 6:59 PM, Vladimir Panteleev wrote:However, it doesn't look like the Phobos in HG tip is ready for 64-bit. There were some trivial problems in std.stream, but lots of warnings/errors in the GC.Is that with the patch? The errors should be uint to size_t conversions. However, I ran across linker issues becuase of calling conventions. Symbols used by the GC, __data_start__ are still exported, by the linker scripts, with Win32 calling conventions causing unresolved symbol errors when searching for the Win64 version. Also, is that D1? I don't recall D2 spitting out as many GC warnings but instead had a lot of Windows specific errors.
May 27 2011
On Fri, 27 May 2011 23:52:33 +0300, Daniel Green <venix1 gmail.com> wrote:On 5/25/2011 6:59 PM, Vladimir Panteleev wrote:Where is the patch? In the original post you said you'd post the patches "tomorrow", but I haven't seen them here or linked from the building instructions.However, it doesn't look like the Phobos in HG tip is ready for 64-bit. There were some trivial problems in std.stream, but lots of warnings/errors in the GC.Is that with the patch?The errors should be uint to size_t conversions. However, I ran across linker issues becuase of calling conventions. Symbols used by the GC, __data_start__ are still exported, by the linker scripts, with Win32 calling conventions causing unresolved symbol errors when searching for the Win64 version.Here's what I'm getting: ../../../libphobos/internal/gc/gcx.d:900: Error: function win32.os_query_staticdataseg (void**,uint*) does not match parameter types (void**,ulong*) ../../../libphobos/internal/gc/gcx.d:900: Error: cannot implicitly convert expression (& nbytes) of type ulong* to uint* ../../../libphobos/internal/gc/gcx.d:917: Error: function win32.os_query_staticdataseg (void**,uint*) does not match parameter types (void**,ulong*) ../../../libphobos/internal/gc/gcx.d:917: Error: cannot implicitly convert expression (& nbytes) of type ulong* to uint*Also, is that D1? I don't recall D2 spitting out as many GC warnings but instead had a lot of Windows specific errors.Yep, this is D1. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
May 27 2011
On 5/27/2011 4:55 PM, Vladimir Panteleev wrote:Where is the patch? In the original post you said you'd post the patches "tomorrow", but I haven't seen them here or linked from the building instructions.Forgot to mention it but all patches relating to Win64 support can be found here. https://bitbucket.org/goshawk/gdc/issue/206/win64-supportHere's what I'm getting: ../../../libphobos/internal/gc/gcx.d:900: Error: function win32.os_query_staticdataseg (void**,uint*) does not match parameter types (void**,ulong*) ../../../libphobos/internal/gc/gcx.d:900: Error: cannot implicitly convert expression (& nbytes) of type ulong* to uint* ../../../libphobos/internal/gc/gcx.d:917: Error: function win32.os_query_staticdataseg (void**,uint*) does not match parameter types (void**,ulong*) ../../../libphobos/internal/gc/gcx.d:917: Error: cannot implicitly convert expression (& nbytes) of type ulong* to uint*You have to change os_query_staticdataseg in win32.d it's done in the patch.
May 27 2011
On Sat, 28 May 2011 06:32:02 +0300, Daniel Green <venix1 gmail.com> wrote:You have to change os_query_staticdataseg in win32.d it's done in the patch.Thanks, didn't expect that part to be that simple. The next obstacle seems to be _aApplycdzd/_aApplywdzd linking errors. I have no idea where gdc is getting that function name from. It seems to want _aApplycd1 and _aApplywd1 from internal/aApply.d, but I've no idea where the "zd" is coming from. -- Best regards, Vladimir mailto:vladimir thecybershadow.net
May 27 2011
On 5/28/2011 1:53 AM, Vladimir Panteleev wrote:On Sat, 28 May 2011 06:32:02 +0300, Daniel Green <venix1 gmail.com> wrote:I think the problem is likely to be the Win64 calling convention. Win64 no longer uses _ prefix for symbol names. Can dump the symbols for the object file and see if "aApplycdzd" exists?You have to change os_query_staticdataseg in win32.d it's done in the patch.Thanks, didn't expect that part to be that simple. The next obstacle seems to be _aApplycdzd/_aApplywdzd linking errors. I have no idea where gdc is getting that function name from. It seems to want _aApplycd1 and _aApplywd1 from internal/aApply.d, but I've no idea where the "zd" is coming from.
May 28 2011
On Sat, 28 May 2011 22:46:17 +0300, Daniel Green <venix1 gmail.com> wrote:On 5/28/2011 1:53 AM, Vladimir Panteleev wrote:Pretty sure it's not the calling convention. aApplycdzd exists only in the object files for modules which use foreach (dchar c; someString). -- Best regards, Vladimir mailto:vladimir thecybershadow.netOn Sat, 28 May 2011 06:32:02 +0300, Daniel Green <venix1 gmail.com> wrote:I think the problem is likely to be the Win64 calling convention. Win64 no longer uses _ prefix for symbol names. Can dump the symbols for the object file and see if "aApplycdzd" exists?You have to change os_query_staticdataseg in win32.d it's done in the patch.Thanks, didn't expect that part to be that simple. The next obstacle seems to be _aApplycdzd/_aApplywdzd linking errors. I have no idea where gdc is getting that function name from. It seems to want _aApplycd1 and _aApplywd1 from internal/aApply.d, but I've no idea where the "zd" is coming from.
May 29 2011
On 5/29/2011 4:20 AM, Vladimir Panteleev wrote:Pretty sure it's not the calling convention. aApplycdzd exists only in the object files for modules which use foreach (dchar c; someString).I looked into the issue and the problem lines with the use of sprintf in the compiler source. Line 1833 of statement.c. --- int j = sprintf(fdname, "_aApply%s%.*s%zd", r, 2, fntab[flag], dim); --- %zd is not supported by MSVCRT sprintf causing _aApplycdzd. What I'm curious about is why this issue only surfaced with 64-bit support. I've included a patch that solves the issue by enabling MinGW's ANSI printf replacements. I'll apply it to the the repository later.
Jun 01 2011