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

Josh Stone <jistone at redhat dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jistone at redhat dot com

--- Comment #7 from Josh Stone <jistone at redhat dot com> ---
(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.

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