public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug symtab/11035] New: gdb ignores explicit scoping for ambiguous symbols
@ 2009-11-30 16:16 jsrhbz at kanargh dot force9 dot co dot uk
  2010-03-22 15:13 ` [Bug symtab/11035] " tromey at redhat dot com
  0 siblings, 1 reply; 4+ messages in thread
From: jsrhbz at kanargh dot force9 dot co dot uk @ 2009-11-30 16:16 UTC (permalink / raw)
  To: gdb-prs

Take the trivial example using 2 shared objects:

----m.cpp----
#include <stdio.h>
#include <dlfcn.h>

typedef void (*vvf)();
vvf so1_func;
vvf so2_func;

void m()
{
  printf(">>>m\n");
  so1_func();
  so2_func();
  printf("<<<m\n");
}

int main(int argc, char *argv[])
{
  void *p = dlopen("./so1.so", RTLD_LOCAL|RTLD_LAZY);
  so1_func = (vvf)dlsym(p, "so1_func");
  printf("p=%p f=%p\n", p, so1_func);

  p = dlopen("./so2.so", RTLD_LOCAL|RTLD_LAZY);
  so2_func = (vvf)dlsym(p, "so2_func");
  printf("p=%p f=%p\n", p, so2_func);

  m();
}

----so1.cpp----
#include <stdio.h>

class A {
public:
  void pA() { printf("so1::pA() in %p\n", this); }
  int so1_a;
} foo;

extern "C" void so1_func()
{
  printf("so1::foo = %p\n", &foo);
  foo.pA();
}

----so2.cpp----
#include <stdio.h>

class A {
public:
  void pA() { printf("so2::pA() in %p\n", this); }
  int so2_a;
} foo;

extern "C" void so2_func()
{
  printf("so2::foo = %p\n", &foo);
  foo.pA();
}

----Makefile----
all: m so1.so so2.so

m: m.cpp
	$(CXX) -g m.cpp -o m -ldl

so1.so: so1.cpp
	$(CXX) -g so1.cpp -o so1.so -shared -rdynamic -fPIC

so2.so: so2.cpp
	$(CXX) -g so2.cpp -o so2.so -shared -rdynamic -fPIC

----

Executing ./m shows that both .so instances can quite happily maintain their own
"foo" instances with no confusion. However, breakpointing in gdb just before the
call to m():

26	  m();
(gdb) print foo
$1 = {so1_a = 0}
(gdb) print 'so1.cpp'::foo
$2 = {so1_a = 0}
(gdb) print 'so2.cpp'::foo
$3 = {so1_a = 0}
(gdb) print *(A*)0x7ffff7dbda38
$4 = {so1_a = 0}
(gdb) print *('so2.cpp'::A*)0x7ffff7dbda38
A syntax error in expression, near `)0x7ffff7dbda38'.
(gdb)

The scoping should direct gdb to a particular instance, however it is ignored so
there seems to be no way to directly inspect the other instance.

Even if you can extract the address of the instance (here, from the output of
m(), but usually via a conveniant variable or function argument), gdb will by
default interpret the cast in the context of the wrong module, and there doesn't
appear to tell it to use the definition of A from so2 instead.

-- 
           Summary: gdb ignores explicit scoping for ambiguous symbols
           Product: gdb
           Version: 6.8
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: symtab
        AssignedTo: unassigned at sourceware dot org
        ReportedBy: jsrhbz at kanargh dot force9 dot co dot uk
                CC: gdb-prs at sourceware dot org
  GCC host triplet: x86_64-redhat-linux-gnu


http://sourceware.org/bugzilla/show_bug.cgi?id=11035

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug symtab/11035] gdb ignores explicit scoping for ambiguous symbols
  2009-11-30 16:16 [Bug symtab/11035] New: gdb ignores explicit scoping for ambiguous symbols jsrhbz at kanargh dot force9 dot co dot uk
@ 2010-03-22 15:13 ` tromey at redhat dot com
  0 siblings, 0 replies; 4+ messages in thread
From: tromey at redhat dot com @ 2010-03-22 15:13 UTC (permalink / raw)
  To: gdb-prs


------- Additional Comments From tromey at redhat dot com  2010-03-22 15:13 -------
Confirmed with 7.1 and cvs head.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|                            |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-03-22 15:13:57
               date|                            |


http://sourceware.org/bugzilla/show_bug.cgi?id=11035

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug symtab/11035] gdb ignores explicit scoping for ambiguous symbols
       [not found] <bug-11035-4717@http.sourceware.org/bugzilla/>
  2023-12-27 13:12 ` ssbssa at sourceware dot org
@ 2023-12-27 13:12 ` ssbssa at sourceware dot org
  1 sibling, 0 replies; 4+ messages in thread
From: ssbssa at sourceware dot org @ 2023-12-27 13:12 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=11035

Hannes Domani <ssbssa at sourceware dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |ssbssa at sourceware dot org

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug symtab/11035] gdb ignores explicit scoping for ambiguous symbols
       [not found] <bug-11035-4717@http.sourceware.org/bugzilla/>
@ 2023-12-27 13:12 ` ssbssa at sourceware dot org
  2023-12-27 13:12 ` ssbssa at sourceware dot org
  1 sibling, 0 replies; 4+ messages in thread
From: ssbssa at sourceware dot org @ 2023-12-27 13:12 UTC (permalink / raw)
  To: gdb-prs

https://sourceware.org/bugzilla/show_bug.cgi?id=11035

Hannes Domani <ssbssa at sourceware dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jhb at FreeBSD dot org

--- Comment #2 from Hannes Domani <ssbssa at sourceware dot org> ---
*** Bug 22718 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are on the CC list for the bug.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-12-27 13:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-30 16:16 [Bug symtab/11035] New: gdb ignores explicit scoping for ambiguous symbols jsrhbz at kanargh dot force9 dot co dot uk
2010-03-22 15:13 ` [Bug symtab/11035] " tromey at redhat dot com
     [not found] <bug-11035-4717@http.sourceware.org/bugzilla/>
2023-12-27 13:12 ` ssbssa at sourceware dot org
2023-12-27 13:12 ` ssbssa at sourceware dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).