[Issue 22427] New: betterC: casting an array causes linker error in string comparison.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Oct 19 03:49:12 UTC 2021
https://issues.dlang.org/show_bug.cgi?id=22427
Issue ID: 22427
Summary: betterC: casting an array causes linker error in
string comparison.
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: major
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: dave287091 at gmail.com
This reduced code fails to link.
// foo.d
extern(C)
int main(){
if("a" == "a")
return 1;
char[] p;
auto a = cast(int[])p;
return 0;
}
A linker error results:
Undefined symbols for architecture x86_64:
"__D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb",
referenced from:
_main in foo.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error: /usr/bin/cc failed with status: 1
The undefined symbol demangles to:
pure nothrow @nogc @trusted bool core.internal.array.equality.__equals!(char,
char).__equals(scope const(char[]), scope const(char[]))
I have verified this problem happens both with dmd and ldc2. ldc2 1.24 - 1.28
has the error. Older ldc do not. Current dmd has the error, I don’t know how
far back.
--
More information about the Digitalmars-d-bugs
mailing list