Yes, these fixes have been around in lcrash long enough. And the core of
sial obviously did not change during the crash port. ACK'ed
Luc
-----Original Message-----
From: crash-utility-bounces(a)redhat.com
[mailto:crash-utility-bounces@redhat.com] On Behalf Of Dave Anderson
Sent: Friday, November 09, 2007 2:58 PM
To: Discussion list for crash utility usage, maintenance and development
Cc: lucchouina(a)yahoo.com
Subject: Re: [Crash-utility] [PATCH] Fix SIAL warnings
Bernhard Walle wrote:
This patch fixes "operation on 'v1' may be
undefined" warning in
sial_exeop().
In some places V1 and L1 where used as arguments at the same time.
It's from lkcdutils and has been there in CVS for a few month.
Originally written by Jan Blunck <jblunck(a)suse.de>.
Thanks, Bernhard -- it's queued based upon Luc's approval.
Luc, can you give this an ACK?
Thanks,
Dave
Signed-off-by: Bernhard Walle <bwalle(a)suse.de>
---
extensions/libsial/sial_op.c | 95
++++++++++++++++++++++++++-----------------
1 file changed, 59 insertions(+), 36 deletions(-)
--- a/extensions/libsial/sial_op.c
+++ b/extensions/libsial/sial_op.c
@@ -28,15 +28,15 @@ typedef struct {
#define V3 (v3?v3:(v3=NODE_EXE(P3)))
#define V4 (v4?v4:(v4=NODE_EXE(P4)))
-#define L1 (unival(v1?v1:V1))
-#define L2 (unival(v2?v2:V2))
-#define L3 (unival(v3?v3:V3))
-#define L4 (unival(v4?v4:V4))
-
-#define S1 ((v1?v1:V1)->v.data)
-#define S2 ((v2?v2:V2)->v.data)
-#define S3 ((v3?v3:V3)->v.data)
-#define S4 ((v4?v4:V4)->v.data)
+#define L1 (unival(V1))
+#define L2 (unival(V2))
+#define L3 (unival(V3))
+#define L4 (unival(V4))
+
+#define S1 ((V1)->v.data)
+#define S2 ((V2)->v.data)
+#define S3 ((V3)->v.data)
+#define S4 ((V4)->v.data)
void sial_do_deref(int n, value_t *v, value_t *ref); ul @@ -545,39
+545,53 @@ inval:
case ADD: { /* expr + expr */
/* adding two pointers ? */
if(V2->type.type == V_REF) goto inval;
- sial_transfer(v=sial_newval(), V1, L1 +
L2*size);
+
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) + L2 * size);
}
break;
case SUB: { /* expr - expr */
-
/* different results if mixed types.
if both are pointers then result is a
V_BASE */
if(V2->type.type == V_REF)
v=sial_makebtype(L1 - L2);
- else sial_transfer(v=sial_newval(), V1,
L1 - L2*size);
+ else {
+ V1;
+ sial_transfer(v=sial_newval(),
v1,
+ unival(v1) - L2 *
size);
+ }
}
break;
case PREDECR: { /* pre is easy */
- sial_transfer(v=sial_newval(), V1,
L1-size);
- sial_setval(V1, v);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) - size);
+ sial_setval(v1, v);
}
break;
case PREINCR: {
- sial_transfer(v=sial_newval(), V1,
L1+size);
- sial_setval(V1, v);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) + size);
+ sial_setval(v1, v);
}
break;
case POSTINCR: {
- sial_transfer(v=sial_newval(), V1,
L1+size);
- sial_setval(V1, v);
- sial_transfer(v, V1, L1);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) + size);
+ sial_setval(v1, v);
+ sial_transfer(v, v1, unival(v1));
}
break;
case POSTDECR: {
- sial_transfer(v=sial_newval(), V1,
L1-size);
- sial_setval(V1, v);
- sial_transfer(v, V1, L1);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) - size);
+ sial_setval(v1, v);
+ sial_transfer(v, v1, unival(v1));
}
break;
default:
@@ -625,26 +639,33 @@ inval:
}
break;
case PREDECR: { /* pre is easy */
- sial_transfer(v=sial_newval(), V1,
L1-1);
- sial_setval(V1, v);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) - 1);
+ sial_setval(v1, v);
}
break;
case PREINCR: {
V1;
- sial_transfer(v=sial_newval(), V1,
L1+1);
- sial_setval(V1, v);
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) + 1);
+ sial_setval(v1, v);
}
break;
case POSTINCR: {
- sial_transfer(v=sial_newval(), V1,
L1+1);
- sial_setval(V1, v);
- sial_transfer(v, V1, L1);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) + 1);
+ sial_setval(v1, v);
+ sial_transfer(v, v1, unival(v1));
}
break;
case POSTDECR: {
- sial_transfer(v=sial_newval(), V1,
L1-1);
- sial_setval(V1, v);
- sial_transfer(v, V1, L1);
+ V1;
+ sial_transfer(v=sial_newval(), v1,
+ unival(v1) - 1);
+ sial_setval(v1, v);
+ sial_transfer(v, v1, unival(v1));
}
break;
default: sial_rerror(&P1->pos, "Oops ops !
[%d]", top); @@
-682,12
+703,14 @@ doop:
else {
/* if it's a Me-op then v is already set
*/
- if(top != o->op) { sial_setval(V1, v); }
- else {
-
- sial_setval(V1, V2);
+ V1;
+ if(top != o->op) {
+ sial_setval(v1, v);
+ } else {
+ sial_setval(v1, V2);
v=sial_cloneval(V2);
}
+
}
}
/* the result of a assignment if not an Lvalue_t */
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility
Confidentiality Notice
This e-mail (including any attachments) is intended only for the recipients named above.
It may contain confidential or privileged information and should not be read, copied or
otherwise used by any other person. If you are not a named recipient, please notify the
sender of that fact and delete the e-mail from your system.