This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap 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 runtime/12566] usymbols.exp 64-bit test failing on ppc64


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

--- Comment #1 from David Smith <dsmith at redhat dot com> 2011-03-11 21:02:13 UTC ---
Here's some additional information.

In the 32-bit case (which works):

# eu-readelf -s usymbols-m32 | fgrep main_handler
   62: 1000059c      4 FUNC    GLOBAL DEFAULT       12 main_handler
# fgrep main_handler /tmp/stapVlnORz/stap-symbols.h 
  { 0x1000059c, "main_handler" },

The above is good, stap's value of the symbol matches up with eu-readelf's
value.

When run under gdb,
(gdb) p &main_handler
$2 = (void (*)(int)) 0x1000059c <main_handler>

That's good, gdb's idea of the symbol value also matches.

# fgrep /usymbols-m32 /proc/9161/maps
10000000-10010000 r-xp 00000000 fd:00 2239275                           
/root/ppc64/testsuite/usymbols-m32
10010000-10020000 rw-p 00000000 fd:00 2239275                           
/root/ppc64/testsuite/usymbols-m32

That's good, 0x1000059c exists within that first executable vma.

In the 64-bit case (which fails):

# eu-readelf -s usymbols-m64  | fgrep main_handler
   63: 0000000010010c48     16 FUNC    GLOBAL DEFAULT       22 main_handler
# fgrep main_handler /tmp/stapImPRwN/stap-symbols.h 
  { 0x10010c48, "main_handler" },

That's good, the eu-readelf and stap values match.

When run under gb,
(gdb) p &main_handler
$1 = (void (*)(int)) 0x10000700 <main_handler>

That's bad - when run, somehow the address has changed.

# fgrep /usymbols-m64 /proc/9183/maps 
10000000-10010000 r-xp 00000000 fd:00 2239236                           
/root/ppc64/testsuite/usymbols-m64
10010000-10020000 rw-p 00000000 fd:00 2239236                           
/root/ppc64/testsuite/usymbols-m64

The 0x10010c48 address exists within that 2nd non-executable vma (the code in
vma.c only looks at executable vmas), which is why the symbol lookup code
fails.  The gdb address (0x10000700) does exist within the 1st executable vma.

Perhaps there is some relocation going on that systemtap needs to know about.

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


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