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 uprobes/15279] New: Stop munging the uprobes IP with kernel 3.9


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

             Bug #: 15279
           Summary: Stop munging the uprobes IP with kernel 3.9
           Product: systemtap
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: uprobes
        AssignedTo: systemtap@sourceware.org
        ReportedBy: jistone@redhat.com
    Classification: Unclassified


As of commit 74e59dfc, merged for kernel 3.9, uprobes now sets regs->ip to the
breakpoint address prior to calling the handler.  This means we no longer need
to call uprobe_get_swbp_addr(), and in fact would be incorrect to do so since
the ip would get adjusted twice.

For example, on 3.9.0-0.rc2.git0.3.fc19.x86_64:

$ ./run-stap -e 'probe process.mark("*") { printf("%s  %#x\n", pp(), uaddr())
}' \
  -c './stap -l begin' 
begin
process("[...]/stap").statement(0x41262d)  0x41262c
process("[...]/stap").statement(0x4128a2)  0x4128a1
process("[...]/stap").statement(0x4128bf)  0x4128be
process("[...]/stap").statement(0x4148f5)  0x4148f4
process("[...]/stap").statement(0x414992)  0x414991
process("[...]/stap").statement(0x414d5d)  0x414d5c
process("[...]/stap").statement(0x414dbc)  0x414dbb
process("[...]/stap").statement(0x4120df)  0x4120de
process("[...]/stap").statement(0x41212b)  0x41212a
process("[...]/stap").statement(0x51b8b9)  0x51b8b8
process("[...]/stap").statement(0x51ba83)  0x51ba82
process("[...]/stap").statement(0x51c53c)  0x51c53b

Every uaddr() is one less than its real statement address because we
overadjusted.

We could gate this on >=KERNEL_VERSION(3,9,0), but usually we prefer more
direct feature tests, to deal with kernel backports.  There's nothing directly
visible for this change, but that commit was intermingled with prefiltering
commits (PR15278), so we could use one of those #defines as an indicator.

-- 
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]