Bug 13384

Summary: toplevel namespace aliases don't work
Product: gdb Reporter: Tom Tromey <tromey>
Component: c++Assignee: Not yet assigned to anyone <unassigned>
Status: REOPENED ---    
Severity: normal CC: b.r.longbons, keiths, ssbssa
Priority: P2    
Version: unknown   
Target Milestone: ---   
Host: Target:
Build: Last reconfirmed:

Description Tom Tromey 2011-11-04 18:56:52 UTC
Consider this test:

namespace A {
  namespace B {
    namespace C {
      int x = 5;

      int nsfunc () {
	return x;
      }
    }
  }
}

namespace Q = A::B;

int xfun() {
  return Q::C::x;		// Breakpoint xfun
}

using namespace Q::C;

int yfun() {
  return x;			// Breakpoint yfun
}

int main(){
  return xfun() + yfun();
}

If you break in "main", then "break Q::C::nsfunc" should work.
However, it does not.
Comment 1 Ben Longbons 2013-07-30 06:40:42 UTC
This looks the same as the comment 5 of the duplicated bug (though an argument *could* be made that that should have been a separate bug).

*** This bug has been marked as a duplicate of bug 7935 ***
Comment 2 Keith Seitz 2013-07-30 11:33:08 UTC
Actually, this is a different problem than 7935.

Tom wrote "break Q::C::nsfunc" should work -- and it does work with my (recently submitted) patch for 7935.

However, I think what he meant to write is "break nsfunc" should work when stopped in main, since we have imported Q::C. That does not currently work (and my patch does not address this separate issue).

Reading symbols from 13384...done.
(gdb) start
Temporary breakpoint 1 at 0x4005d5: file 13384.cc, line 26.
Starting program: 13384 

Temporary breakpoint 1, main () at 13384.cc:26
26	  return xfun() + yfun() + nsfunc();
(gdb) b Q::C::nsfunc
Breakpoint 2 at 0x4005b0: file 13384.cc, line 7.
(gdb) b nsfunc
Function "nsfunc" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n

find_linespec_symbols and everything below it know nothing about imported namespaces.
Comment 3 Hannes Domani 2023-12-17 18:00:31 UTC
"b Q::C::nsfunc" doesn't work, but "Q::C::nsfunc()" does:
```
(gdb) b Q::C::nsfunc
Function "Q::C::nsfunc" not defined.
Make breakpoint pending on future shared library load? (y or [n]) n
(gdb) b Q::C::nsfunc()
Breakpoint 2 at 0x13f5f1604: file gdb-13384.cpp, line 7, column 9.
```