This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug gdb/15121] New: x/a broken for addresses in shared libraries


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

             Bug #: 15121
           Summary: x/a broken for addresses in shared libraries
           Product: gdb
           Version: unknown
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gdb
        AssignedTo: unassigned@sourceware.org
        ReportedBy: ppluzhnikov@google.com
    Classification: Unclassified


x/a used to print symbol name regardless of whether the address was in main
executable or a shared library. It no longer does. I noticed that around 7.4
release, confirmed in  7.5.50.20130208-cvs.


Test:

// t.c
int main ()
{
  return bar ();
}

// foo.c
#include <stdlib.h>

int foo ()
{
  abort ();
}

int baz ()
{
  return foo ();
}

int bar ()
{
  return baz ();
}


gcc -m32 -g -fPIC -shared -o foo.so foo.c
gcc -m32 -g t.c ./foo.so

gdb ./a.out
(gdb) run
Starting program: /tmp/a.out 

Program received signal SIGABRT, Aborted.
0xf7fdb430 in __kernel_vsyscall ()
(gdb) bt
#0  0xf7fdb430 in __kernel_vsyscall ()
#1  0xf7e3b1df in __GI_raise (sig=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:64
#2  0xf7e3e825 in __GI_abort () at abort.c:91
#3  0xf7fd64d3 in foo () at foo.c:5
#4  0xf7fd64ea in baz () at foo.c:10
#5  0xf7fd6507 in bar () at foo.c:15
#6  0x080484af in main () at t.c:3
(gdb) fr 3
#3  0xf7fd64d3 in foo () at foo.c:5
5         abort ();
(gdb) x/2a $ebp
0xffffc708:     0xffffc718      0xf7fd64ea    << why no symbol?
(gdb) up
#4  0xf7fd64ea in baz () at foo.c:10
10        return foo ();
(gdb) x/2a $ebp
0xffffc718:     0xffffc728      0xf7fd6507    << why no symbol?
(gdb) up
#5  0xf7fd6507 in bar () at foo.c:15
15        return baz ();
(gdb) x/2a $ebp
0xffffc728:     0xffffc738      0x80484af <main+11>  << symbol ok
(gdb) 

GDB clearly knows what 0xf7fd64ea and 0xf7fd6507 are:

(gdb) p/a 0xf7fd64ea
$2 = 0xf7fd64ea <baz+23>
(gdb) p/a 0xf7fd6507
$3 = 0xf7fd6507 <bar+23>

-- 
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]