[Issue 17712] New: [REG 2.074] [LINK] Undefined reference to std.conv.toChars!(10, char, 1, uint).toChars(uint)
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Thu Aug 3 00:11:49 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17712
Issue ID: 17712
Summary: [REG 2.074] [LINK] Undefined reference to
std.conv.toChars!(10, char, 1, uint).toChars(uint)
Product: D
Version: D2
Hardware: All
OS: Linux
Status: NEW
Severity: regression
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: ibuclaw at gdcproject.org
Reduced test (with two selective imports).
---
struct Bytecode
{
uint data;
}
@trusted ctSub(U)(string format, U args)
{
import std.conv : to;
foreach (i; format)
return format~ to!string(args);
return format;
}
struct CtContext
{
import std.uni : CodepointSet;
CodepointSet[] charsets;
string ctAtomCode(Bytecode[] ir)
{
string code;
switch (code)
{
OrChar:
code ~= ``;
for (uint i ; i ;)
code ~= ctSub(``, ir[i].data);
charsets[ir[0].data].toSourceCode;
break;
default:
assert(0);
}
return code;
}
}
---
Causes link error.
---
backtracking.o: In function
`_D3std4conv17__T6toImplTAyaTkZ6toImplFNaNbNekkE3std5ascii10LetterCaseZAya':
__main.d:(.text._D3std4conv17__T6toImplTAyaTkZ6toImplFNaNbNekkE3std5ascii10LetterCaseZAya+0x5e):
undefined reference to
`_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result'
backtracking.o: In function
`_D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa':
__main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0xd):
undefined reference to
`_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result6lengthMFNaNbNdNiNfZm'
__main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x4f):
undefined reference to
`_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result5emptyMFNaNbNdNiNfZb'
__main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x5c):
undefined reference to
`_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result5frontMFNaNbNdNiNfZa'
__main.d:(.text._D3std5array96__T5arrayTS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZ5arrayFNaNbNfS3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6ResultZAa+0x9f):
undefined reference to
`_D3std4conv47__T7toCharsVii10TaVE3std5ascii10LetterCasei1TkZ7toCharsFNaNbNiNfkZ6Result8popFrontMFNaNbNiNfZv'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
---
Prettified.
---
backtracking.o: In function `std.conv.toImpl!(immutable(char)[],
uint).toImpl(uint, uint, std.ascii.LetterCase)':
__main.d:(0x5e): undefined reference to `std.conv.toChars!(10, char, 1,
uint).toChars(uint)'
backtracking.o: In function `std.array.array!(std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result).array(std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result)':
__main.d:(0xd): undefined reference to `std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result.length()'
__main.d:(0x4f): undefined reference to `std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result.empty()'
__main.d:(0x5c): undefined reference to `std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result.front()'
__main.d:(0x9f): undefined reference to `std.conv.toChars!(10, char, 1,
uint).toChars(uint).Result.popFront()'
collect2: error: ld returned 1 exit status
Error: linker exited with status 1
---
Does not happen with 2.073.
---
$ dmd-2073 backtracking.d -v 2>&1 | grep toChars.Result.popFront
function std.conv.toChars!(10, char, cast(LetterCase)true,
uint).toChars.Result.popFront
function std.conv.toChars!(16, char, cast(LetterCase)false,
uint).toChars.Result.popFront
function std.conv.toChars!(16, char, cast(LetterCase)true,
uint).toChars.Result.popFront
function std.conv.toChars!(2, char, cast(LetterCase)true,
uint).toChars.Result.popFront
function std.conv.toChars!(8, char, cast(LetterCase)true,
uint).toChars.Result.popFront
$ dmd-2074 backtracking.d -v 2>&1 | grep toChars.Result.popFront
function std.conv.toChars!(16, char, cast(LetterCase)false,
uint).toChars.Result.popFront
function std.conv.toChars!(16, char, cast(LetterCase)true,
uint).toChars.Result.popFront
function std.conv.toChars!(2, char, cast(LetterCase)true,
uint).toChars.Result.popFront
function std.conv.toChars!(8, char, cast(LetterCase)true,
uint).toChars.Result.popFront
---
However when testing with gdc, all I updated was the library, and managed to
reproduce the same thing, so a change in phobos exposed this.
--
More information about the Digitalmars-d-bugs
mailing list