summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMasami Hiramatsu <mhiramat@redhat.com>2008-09-12 14:40:00 -0400
committerMasami Hiramatsu <mhiramat@redhat.com>2008-09-12 14:40:00 -0400
commit82e5a20c33f5c0746720e83a551bf499661475d1 (patch)
treed8f30891acf30b727a12e90d0166ea13aa45f872
parent739828c29912961414ab42e4780bbddb35fc5278 (diff)
downloadsystemtap-steved-82e5a20c33f5c0746720e83a551bf499661475d1.tar.gz
systemtap-steved-82e5a20c33f5c0746720e83a551bf499661475d1.tar.xz
systemtap-steved-82e5a20c33f5c0746720e83a551bf499661475d1.zip
PR6028: use ip instead of pp for probe identification.
-rw-r--r--ChangeLog6
-rw-r--r--runtime/ChangeLog6
-rw-r--r--runtime/regs-ia64.c8
-rw-r--r--tapsets.cxx2
4 files changed, 17 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index ca04745f..96bf7747 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-12 Masami Hiramatsu <mhiramat@redhat.com>
+
+ BZ 6028
+ * tapsets.cxx (dwarf_derived_probe::emit_probe_local_init): Use REG_IP
+ instead of pp to check probe address.
+
2008-09-12 Frank Ch. Eigler <fche@elastic.org>
GCC 4.4 (var-tracking) build-compatilibity.
diff --git a/runtime/ChangeLog b/runtime/ChangeLog
index 6740ea4e..6ad7e51f 100644
--- a/runtime/ChangeLog
+++ b/runtime/ChangeLog
@@ -1,3 +1,9 @@
+2008-09-12 Masami Hiramatsu <mhiramat@redhat.com>
+
+ BZ 6028
+ * regs-ia64.c (bspcache): Use REG_IP instead of pp to check probe
+ address.
+
2008-09-12 David Smith <dsmith@redhat.com>
BZ 6755
diff --git a/runtime/regs-ia64.c b/runtime/regs-ia64.c
index 8ce3e4c3..b0eb9829 100644
--- a/runtime/regs-ia64.c
+++ b/runtime/regs-ia64.c
@@ -39,10 +39,10 @@ static void ia64_stap_get_arbsp(struct unw_frame_info *info, void *arg)
* bspcache: get cached unwound address and
* set a probe local cache of the offset of unwound address.
*/
-#define bspcache(cache, regs, pp)\
+#define bspcache(cache, regs)\
if(regs) {\
static unsigned __offset = 0; /* probe local cache */\
- static const char * __pp = NULL; /* reference probe point */\
+ static void * __ip = NULL; /* reference ip */\
unsigned long *bsp;\
asm volatile("{ flushrs }\n"); /* flushrs for fixing bsp */\
bsp = (void*)ia64_getreg(_IA64_REG_AR_BSP);\
@@ -53,10 +53,10 @@ static void ia64_stap_get_arbsp(struct unw_frame_info *info, void *arg)
if (pa.address != 0) {\
__offset = ia64_rse_num_regs(pa.address, bsp)\
-(regs->cr_ifs & 127);\
- __pp = (const char *)pp;\
+ __ip = (void *)REG_IP(regs);\
cache = pa.address;\
}\
- } else if (pp == __pp)\
+ } else if ((void *)REG_IP(regs) == __ip)\
cache = ia64_rse_skip_regs(bsp,\
-(__offset + (regs->cr_ifs & 127)));\
}
diff --git a/tapsets.cxx b/tapsets.cxx
index f25c671c..85505084 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -4747,7 +4747,7 @@ void
dwarf_derived_probe::emit_probe_local_init(translator_output * o)
{
// emit bsp cache setup
- o->newline() << "bspcache(c->unwaddr, c->regs, c->probe_point);";
+ o->newline() << "bspcache(c->unwaddr, c->regs);";
}
// ------------------------------------------------------------------------