perf probe: Fix offset to allow signed value
Fix dereference offset to intmax_t from uintmax_t, because it can have negative values (for example local variable's offset from frame pointer). Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com> Cc: systemtap <systemtap@sources.redhat.com> Cc: DLE <dle-develop@lists.sourceforge.net> LKML-Reference: <20100315170228.31852.71946.stgit@localhost6.localdomain6> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
b63be8d7be
commit
67c7ff7c56
|
@ -333,8 +333,8 @@ static void show_location(Dwarf_Op *op, struct probe_finder *pf)
|
||||||
die("%u exceeds max register number.", regn);
|
die("%u exceeds max register number.", regn);
|
||||||
|
|
||||||
if (deref)
|
if (deref)
|
||||||
ret = snprintf(pf->buf, pf->len, " %s=+%ju(%s)",
|
ret = snprintf(pf->buf, pf->len, " %s=%+jd(%s)",
|
||||||
pf->var, (uintmax_t)offs, regs);
|
pf->var, (intmax_t)offs, regs);
|
||||||
else
|
else
|
||||||
ret = snprintf(pf->buf, pf->len, " %s=%s", pf->var, regs);
|
ret = snprintf(pf->buf, pf->len, " %s=%s", pf->var, regs);
|
||||||
DIE_IF(ret < 0);
|
DIE_IF(ret < 0);
|
||||||
|
|
Loading…
Reference in New Issue