rustc decides to emit both:
<2><2f5b>: Abbrev Number: 10 (DW_TAG_subprogram) ... <2f6e> DW_AT_name : (indirect string, offset: 0x23a): main
and
<2><2f95>: Abbrev Number: 2 (DW_TAG_namespace) <2f96> DW_AT_name : (indirect string, offset: 0x23a): main
in the same scope.
Then the lookup finds the wrong one, because gdb's symbol tables are bad and still follow C namespace rules.
rustc decides to emit both:
<2><2f5b>: Abbrev Number: 10 (DW_TAG_subprogram)
...
<2f6e> DW_AT_name : (indirect string, offset: 0x23a): main
and
<2><2f95>: Abbrev Number: 2 (DW_TAG_namespace)
<2f96> DW_AT_name : (indirect string, offset: 0x23a): main
in the same scope.
Then the lookup finds the wrong one, because gdb's symbol tables
are bad and still follow C namespace rules.