[Issue 8443] New: [2.060 beta] Win32 linker bug with separate compilation
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jul 25 15:40:52 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8443
Summary: [2.060 beta] Win32 linker bug with separate
compilation
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrej.mitrovich at gmail.com
--- Comment #0 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2012-07-25 15:40:49 PDT ---
Compiling with -c on a module-by-module
basis creates linking errors and a linker crash. Test-case for a Win32
machine:
$ git clone https://github.com/AndrejMitrovic/WindowsAPI.git
Open the WindowsAPI folder and paste this D script:
module build;
import std.array;
import std.conv;
import std.stdio;
import std.parallelism;
import std.file;
import std.path;
import std.process;
import std.string;
alias std.string.join join;
void main()
{
string[] objFiles;
string[] entries;
foreach (string entry; dirEntries(r"win32", SpanMode.shallow))
entries ~= entry; // .array won't work.., to!string[] won't work..
foreach (string entry; parallel(entries, 1))
{
string objFile = entry.stripExtension.setExtension(".obj");
objFiles ~= objFile;
string cmd = format("dmd -c -version=Unicode
-version=WindowsXP %s -of%s", entry, objFile);
system(cmd);
}
system("echo void main() { } > test.d");
string cmd = format("dmd test.d -version=Unicode
-version=WindowsXP %s", objFiles.join(" "));
system(cmd);
}
Run it:
$ rdmd build.d
This is what I get:
Error 32: Data Outside Segment Bounds : _DATA
win32\mmsystem.obj(mmsystem)
Error 32: Data Outside Segment Bounds : _DATA
win32\mmsystem.obj(mmsystem)
Error 32: Data Outside Segment Bounds : _DATA
win32\mmsystem.obj(mmsystem)
Error 32: Data Outside Segment Bounds : _DATA
win32\mmsystem.obj(mmsystem)
Error 32: Data Outside Segment Bounds : _DATA
and a crash:
---------------------------
Unexpected OPTLINK Termination at EIP=00402C6C
---------------------------
EAX=017C0000 EBX=004C22F8 ECX=00000004 EDX=0001FFFF
ESI=010524DC EDI=00003FF8 EBP=0012FFF0 ESP=0012FF84
First=00402000
The script works fine with 2.059.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list