Ok this is kinda weird. On FreeBSD 9.1, DMD 2.063.2, this hello world
works fine:
----------------------------
# cat hello.d
import std.stdio;
void main()
{
writeln("Hello");
}
# rdmd --force hello.d
Hello
----------------------------
But this trivial std.regex usage results in a giant stream of linker
errors:
----------------------------
# cat testRegex.d
import std.regex;
void main()
{
auto r = regex("aaa");
}
# rdmd --force testRegex.d
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x110):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x2b9):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x3af):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x4ab):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x60c):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x78b):
more undefined references to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
follow
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv+0x22a):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv+0x257):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
[...snip (full output is attached)...]
----------------------------
My dmd.conf looks like this, and yes I'm aware that's not the most kosher
place to install it (That DFLAGS stuff is really all on one line):
----------------------------
[Environment]
DFLAGS=-I/root/dmd2/src/phobos -I/root/dmd2/src/druntime/import
-L-L/root/dmd2/freebsd/lib32 -L-L/root/dmd2/freebsd/lib64
-L--no-warn-search-mismatch -L--export-dynamic
----------------------------
I know that's the only dmd.conf on the system because this is a fresh
FreeBSD VM as of today.
I also tried removing "-L--no-warn-search-mismatch -L--export-dynamic",
but that made no difference.
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x110):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x2b9):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x3af):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x4ab):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x60c):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser10parseRegexMFNeZv+0x78b):
more undefined references to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode' follow
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv+0x22a):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser9parseAtomMFNfZv+0x257):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex15__T6ParserTAyaZ6Parser13genLookaroundMFNfE3std5regex2IRZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser13genLookaroundMFNfE3std5regex2IRZv+0x42):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser13fixLookaroundMFNfkZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser13fixLookaroundMFNfkZv+0x97):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex15__T6ParserTAyaZ6Parser13parseCharTermMFNfZS3std8typecons88__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex15__T6ParserTAyaZ6Parser8OperatorZ5Tuple':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser13parseCharTermMFNfZS3std8typecons88__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex15__T6ParserTAyaZ6Parser8OperatorZ5Tuple+0x532):
undefined reference to
`_D3std8internal3uni8Interval6__ctorMFNcNfwwZS3std8internal3uni8Interval'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser13parseCharTermMFNfZS3std8typecons88__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex15__T6ParserTAyaZ6Parser8OperatorZ5Tuple+0x67e):
undefined reference to
`_D3std8internal3uni8Interval6__ctorMFNcNfwwZS3std8internal3uni8Interval'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex15__T6ParserTAyaZ6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x7f):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0xe4):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x12f):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x178):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex15__T6ParserTAyaZ6Parser11parseEscapeMFNeZv':
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11parseEscapeMFNeZv+0x72):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11parseEscapeMFNeZv+0xa3):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11parseEscapeMFNeZv+0xd1):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:testRegex.d:(.text._D3std5regex15__T6ParserTAyaZ6Parser11parseEscapeMFNeZv+0xff):
more undefined references to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode' follow
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex18__T6ParserTAyaVb1Z6Parser9parseAtomMFNfZv':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser9parseAtomMFNfZv+0x22a):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser9parseAtomMFNfZv+0x257):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex18__T6ParserTAyaVb1Z6Parser13genLookaroundMFNfE3std5regex2IRZv':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser13genLookaroundMFNfE3std5regex2IRZv+0x42):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex18__T6ParserTAyaVb1Z6Parser13fixLookaroundMFNfkZv':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser13fixLookaroundMFNfkZv+0x97):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex18__T6ParserTAyaVb1Z6Parser13parseCharTermMFNfZS3std8typecons91__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex18__T6ParserTAyaVb1Z6Parser8OperatorZ5Tuple':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser13parseCharTermMFNfZS3std8typecons91__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex18__T6ParserTAyaVb1Z6Parser8OperatorZ5Tuple+0x532):
undefined reference to
`_D3std8internal3uni8Interval6__ctorMFNcNfwwZS3std8internal3uni8Interval'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser13parseCharTermMFNfZS3std8typecons91__T5TupleTS3std8internal3uni12CodepointSetTE3std5regex18__T6ParserTAyaVb1Z6Parser8OperatorZ5Tuple+0x67e):
undefined reference to
`_D3std8internal3uni8Interval6__ctorMFNcNfwwZS3std8internal3uni8Interval'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function
`_D3std5regex18__T6ParserTAyaVb1Z6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x7f):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0xe4):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x12f):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11charsetToIrMFNexS3std8internal3uni12CodepointSetZv+0x178):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:
In function `_D3std5regex18__T6ParserTAyaVb1Z6Parser11parseEscapeMFNeZv':
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11parseEscapeMFNeZv+0x72):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11parseEscapeMFNeZv+0xa3):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11parseEscapeMFNeZv+0xd1):
undefined reference to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode'
/tmp/.rdmd-0/rdmd-testRegex.d-5897227E7D8898088FFE24128F75C9A3/objs/testRegex.o:testRegex.d:(.text._D3std5regex18__T6ParserTAyaVb1Z6Parser11parseEscapeMFNeZv+0xff):
more undefined references to
`_D3std5regex8Bytecode6__ctorMFNcNfE3std5regex2IRkZS3std5regex8Bytecode' follow
--- errorlevel 1