Bug 456059 - macro "store_register" passed 2 arguments, but takes just 1
macro "store_register" passed 2 arguments, but takes just 1
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: systemtap (Show other bugs)
ppc64 Linux
low Severity low
: rc
: ---
Assigned To: Frank Ch. Eigler
Petr Muller
Depends On:
  Show dependency treegraph
Reported: 2008-07-21 05:48 EDT by Vitaly Mayatskikh
Modified: 2016-09-19 22:04 EDT (History)
1 user (show)

See Also:
Fixed In Version: 0.6.2
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2008-07-21 11:25:49 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Vitaly Mayatskikh 2008-07-21 05:48:26 EDT
Systemtap generates store_register() call with two parameters, but macro
store_register has only one parameter on powerpc and s390/s390x platforms (see
/usr/share/systemtap/runtime/loc2c-runtime.h at lines 109-129. It makes
impossible to use systemtap on ppc and s390.
Comment 1 Vitaly Mayatskikh 2008-07-21 05:51:30 EDT
--- systemtap/runtime/loc2c-runtime.h.orig	2008-07-21 05:50:46.000000000 -0400
+++ systemtap/runtime/loc2c-runtime.h	2008-07-21 05:49:05.000000000 -0400
@@ -111,20 +111,20 @@
 #undef fetch_register
 #undef store_register
 #define fetch_register(regno) ((intptr_t) c->regs->gpr[regno])
-#define store_register(regno) (c->regs->gpr[regno] = (value))
+#define store_register(regno, value) (c->regs->gpr[regno] = (value))
 #elif defined (__arm__)
 #undef fetch_register
 #undef store_register
 #define fetch_register(regno) ((long) c->regs->uregs[regno])
-#define store_register(regno) (c->regs->uregs[regno] = (value))
+#define store_register(regno, value) (c->regs->uregs[regno] = (value))
 #elif defined (__s390__) || defined (__s390x__)
 #undef fetch_register
 #undef store_register
 #define fetch_register(regno) ((intptr_t) c->regs->gprs[regno])
-#define store_register(regno) (c->regs->gprs[regno] = (value))
+#define store_register(regno, value) (c->regs->gprs[regno] = (value))
Comment 2 Frank Ch. Eigler 2008-07-21 11:25:49 EDT
This was fixed in upstream commit 55913279fa530b4400e8aba9c9791e2fe32f5bcc,
which is/was included with systemtap-0.6.2.
Comment 3 Vitaly Mayatskikh 2008-07-21 11:40:59 EDT
Yes, but the fix need to be included in RHEL-4. Otherwise systemtap is not
usable on some supported archs.
Comment 4 Frank Ch. Eigler 2008-07-21 11:49:07 EDT
It will be; systemtap-0.6.2 is in rhel4.7.

Note You need to log in before you can comment on or make changes to this bug.