Bug 5774 – [64 bit] "relocation truncated to fit" with __gshared array, while(), and $

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2011-03-23T14:40:00Z
Last change time
2012-05-22T06:06:01Z
Keywords
link-failure, rejects-valid
Assigned to
nobody
Creator
clugdbug

Comments

Comment #0 by clugdbug — 2011-03-23T14:40:09Z
Cut down from a failure in core.cpuid. With all of the build problems with druntime at the moment I'm not able to get any normal file to build on 64bits; but this is the relevant case from the runtime build. This probably needs -O -release, since it goes away if I replace 'while' with 'if'; but I haven't checked which flags are actually necessary. ============= __gshared char[48] dish; void foo() { int end = 0; while (dish[$-end-1]==0) { ++end; } } =========== src/core/cpuid.d:(.text._D4core5cpuid3fooFZv+0x9): relocation truncated to fit: R_X86_64_PC32 against symbol `_D4core5cpuid4dishG48a' defined in .data section in obj/core/cpuid.o
Comment #1 by clugdbug — 2012-05-22T06:06:01Z
I can no longer reproduce this bug. I can revert the workaround, and the code still links. I presume the root cause was fixed shortly after this bug was filed.