This is the mail archive of the
systemtap@sourceware.org
mailing list for the systemtap project.
[Bug translator/9810] New: ia64 REG_IP() cannot be used as a lvalue
- From: "wcohen at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: systemtap at sources dot redhat dot com
- Date: 3 Feb 2009 19:42:23 -0000
- Subject: [Bug translator/9810] New: ia64 REG_IP() cannot be used as a lvalue
- Reply-to: sourceware-bugzilla at sourceware dot org
The ia64 REG_IP() for the ia64 takes a couple register values to synthesize a
value for the instruction pointer in runtime/regs.h:
#define REG_IP(regs) ((regs)->cr_iip +ia64_psr(regs)->ri)
However, the translator generates code like the following that uses REG_IP as an
lvalue for begin and end probes:
#ifdef STP_NEED_UNWIND_DATA
memset (& c->regs_buffer, 0, sizeof (c->regs_buffer));
REG_IP((& c->regs_buffer)) = (unsigned long)__builtin_return_address (0);
REG_SP((& c->regs_buffer)) = (unsigned long)& c;
c->regs = & c->regs_buffer;
#endif
This causes the following tests to fail on ia64:
systemtap.examples/interrupt/scf
systemtap.examples/io/io_submit
buildok/context_test.stp
The ri (restart instruction) points to which instruction in a bundle to restart
execution at. The ri field is part of the program status register (psr).
--
Summary: ia64 REG_IP() cannot be used as a lvalue
Product: systemtap
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: translator
AssignedTo: systemtap at sources dot redhat dot com
ReportedBy: wcohen at redhat dot com
GCC host triplet: ia64
http://sourceware.org/bugzilla/show_bug.cgi?id=9810
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.