sample code: module test.d; void foo() { } void main() { foo(); } $ dmd -v -g -c debug-names.d (or -gc instead of -g, same results) $ objdump --syms debug-names.o debug-names.o: file format elf32-i386 SYMBOL TABLE: (output edited to hide parts not relevant) 00000000 l df *ABS* 00000000 debug-names.d 00000000 l d .text._D4test1d3fooFZv 00000000 .text._D4test1d3fooFZv 00000000 g F .text._D4test1d3fooFZv 00000005 _D4test1d3fooFZv secondary evidence (gdb from cvs with the recent patches to support d): (gdb) list test.d.foo 1 module test.d; 2 3 void foo() 4 { 5 } 6 7 void main() 8 { 9 foo(); 10 } (gdb) list test.foo Can't find member of namespace, class, struct, or union named "test.foo" Hint: try 'test.foo<TAB> or 'test.foo<ESC-?> (Note leading single quote.)
You should not add the file extension to the module statement. I can't test it with gdb, but I guess "module test;" will work as expected.
Good god, did I actually do that? I did, TWICE. Um.. nevermind, closing as an invalid bug report.