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 translator/9810] New: ia64 REG_IP() cannot be used as a lvalue


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]