[Issue 14311] New: Win32 COFF: bad symbols/relocation entries for global data accesses
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Mar 20 00:07:24 PDT 2015
https://issues.dlang.org/show_bug.cgi?id=14311
Issue ID: 14311
Summary: Win32 COFF: bad symbols/relocation entries for global
data accesses
Product: D
Version: D2
Hardware: x86
OS: Windows
Status: NEW
Keywords: wrong-code
Severity: major
Priority: P1
Component: DMD
Assignee: nobody at puremagic.com
Reporter: r.sagitario at gmx.de
Compile this code for Win64 with "dmd -m32mscoff test.d":
module test;
private __gshared int transform;
shared static this()
{
transform = 3;
}
and check the object file output with "dumpbin /disasm /all test.obj":
_D4test18_sharedStaticCtor1FZv:
00000000: C7 05 00 00 00 00 mov dword ptr [__TMP0],3
03 00 00 00
0000000A: C3 ret
i.e. there is a temporary symbol created for the variable access instead of the
actual symbol itself, as the dump for the Win64 build shows:
_D4test18_sharedStaticCtor1FZv:
0000000000000000: 55 push rbp
0000000000000001: 48 8B EC mov rbp,rsp
0000000000000004: C7 05 00 00 00 00 mov dword ptr
[_D4test9transformi],3
03 00 00 00
000000000000000E: 5D pop rbp
000000000000000F: C3 ret
This causes bad relocation entries to be built into the executable and causing
failures for the phobos unit tests.
--
More information about the Digitalmars-d-bugs
mailing list