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.)
Comment #1 by r.sagitario — 2010-05-02T23:42:19Z
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.
Comment #2 by braddr — 2010-05-02T23:48:11Z
Good god, did I actually do that? I did, TWICE. Um.. nevermind, closing as an invalid bug report.