This is the mail archive of the
systemtap-cvs@sourceware.org
mailing list for the systemtap project.
[SCM] systemtap: system-wide probe/trace tool branch, master, updated. release-1.3-263-g33d60a8
- From: jistone at sourceware dot org
- To: systemtap-cvs at sourceware dot org
- Date: 3 Nov 2010 20:32:59 -0000
- Subject: [SCM] systemtap: system-wide probe/trace tool branch, master, updated. release-1.3-263-g33d60a8
- Reply-to: systemtap at sourceware dot org
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "systemtap: system-wide probe/trace tool".
The branch, master has been updated
via 33d60a821c49313350cf6e575697600004567f6f (commit)
from a10f5ac4e63fc8c585376aa4ace4c3d317207933 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 33d60a821c49313350cf6e575697600004567f6f
Author: Josh Stone <jistone@redhat.com>
Date: Wed Nov 3 10:34:39 2010 -0700
uprobes: Fix post_ssout handling of "rep ret" on x86
That odd sequence is apparently used to coerce better behavior from the
branch predictor on AMD K8. GCC does this, so we need to be prepared to
deal with it.
In uprobe_post_ssout, most instructions just need a relative %ip fixup
after single-stepping out-of-line. A few are special though, either
because their new %ip is not relative, or because their return address
on the stack needs that relative SSOL adjustment, or even both. This
oddball "rep ret" is such a case, but we were missing the proper fixup
due to the unexpected prefix.
This patch moves that ip-fixup decoding to the validation phase in
setup_uprobe_post_ssout, saving the flags UPFIX_RETURN and UPFIX_ABS_IP
as needed. In this same step, we reject probing these instructions if
they have a prefix, as we haven't determined the correct behavior for
them. For "rep ret" we make an explicit exception, since we know that
behaves just like a bare "ret".
-----------------------------------------------------------------------
Summary of changes:
runtime/uprobes/uprobes_i386.c | 111 ++++++++++++++++++++-----------
runtime/uprobes/uprobes_i386.h | 7 ++-
runtime/uprobes/uprobes_x86.c | 133 ++++++++++++++++++++++----------------
runtime/uprobes/uprobes_x86.h | 7 ++-
runtime/uprobes/uprobes_x86_64.c | 125 ++++++++++++++++++++++--------------
runtime/uprobes/uprobes_x86_64.h | 2 +
runtime/uprobes2/uprobes_x86.c | 133 ++++++++++++++++++++++----------------
runtime/uprobes2/uprobes_x86.h | 7 ++-
8 files changed, 324 insertions(+), 201 deletions(-)
hooks/post-receive
--
systemtap: system-wide probe/trace tool