[BUG] BINOP_DIV and ptyp command

Pierre Muller muller@ics.u-strasbg.fr
Tue Jan 29 07:51:00 GMT 2008


  The code might be useful, but it returns wrong results...
Because if you go the the value_binop
code, you will see that there are some typecast
that do change the result type of BINOP_DIV.
  The problem with Doug's code is that
the error('Division by zero') will be thrown
even for a ptyp command, which is indeed wrong,
but how do we fix the bug then?

  By the way, Doug patch is also not correct because
even though the signed integer division is caught
in value_binop, the corresponding unsigned code
is still missing the same check.
  The patch below fixes
'p 1/0U' output, without the patch
my cygwin gdb just freezes!

OK to commit?

ChangeLog entry:

2008-01-29  Pierre Muller  <muller@ics.u-strasbg.fr>

	* valarith.c (value_binop): Handle unsigned integer
	division by zero.

Index: gdb/valarith.c
===================================================================
RCS file: /cvs/src/src/gdb/valarith.c,v
retrieving revision 1.54
diff -u -p -r1.54 valarith.c
--- gdb/valarith.c      18 Jan 2008 17:07:40 -0000      1.54
+++ gdb/valarith.c      29 Jan 2008 07:23:43 -0000
@@ -1035,7 +1035,10 @@ value_binop (struct value *arg1, struct

            case BINOP_DIV:
            case BINOP_INTDIV:
-             v = v1 / v2;
+             if (v2 != 0)
+               v = v1 / v2;
+             else
+               error (_("Division by zero"));
              break;

            case BINOP_EXP: 







More information about the Gdb-patches mailing list