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 tapsets/18597] long_arg() doesn't correctly handle negative values in 32-on-64 environment


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

--- Comment #8 from David Smith <dsmith at redhat dot com> ---
(In reply to Josh Stone from comment #7)
> (In reply to David Smith from comment #5)
> > What if we decided that if you call longlong_arg() on a 64-bit OS on a
> > 32-bit process you really *want* a 64-bit value from 1 register? In some
> > ways this makes sense and it matches our old behavior. My theory here is
> > that you know what you are doing and if you call longlong_arg() on a 32-bit
> > process you must be in the true 64-bit function at this point.
> 
> That assumes you're only using this in the kernel.  For a uprobe,
> longlong_arg() still needs to follow the 2-register ABI, no?  That's when
> the probing_32bit_app() branch should be active.
> 
> So yes, longlong_arg() in 64-bit kernel context should use 1 register,
> regardless of the task, but a 32-bit user context still needs to use 2
> registers.

We can certainly add that code back, but do we know of anyone using the
stp_arg()-based dwarfless parameters functions from uprobes? Do we test that?

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