Re: [PATCH v3] Expand bitpos and type.length to LONGEST and ULONGEST

Jan Kratochvil
2012-06-06T21:34:41Z

@@ -7968,7 +7968,7 @@ remote_insert_watchpoint (CORE_ADDR addr, int len, int type,
[...]
- xsnprintf (p, endbuf - p, ",%x", len);
+ xsnprintf (p, endbuf - p, ",%s", int_string (len, 16, 1, 0, 0));
[...]
@@ -8012,7 +8012,7 @@ remote_remove_watchpoint (CORE_ADDR addr, int len, int type,
[...]
- xsnprintf (p, endbuf - p, ",%x", len);
+ xsnprintf (p, endbuf - p, ",%s", int_string (len, 16, 1, 0, 0));

int_string does not support IS_SIGNED (1) for RADIX 16 anyway.
So I would simplify it just by using:

+ xsnprintf (p, endbuf - p, ",%s", phex_nz (len, 8));

--- a/gdb/rx-tdep.c
+++ b/gdb/rx-tdep.c
@@ -710,10 +710,10 @@ rx_return_value (struct gdbarch *gdbarch,
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
ULONGEST valtype_len = TYPE_LENGTH (valtype);

- if (TYPE_LENGTH (valtype) > 16
+ if (valtype_len > 16
|| ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT
|| TYPE_CODE (valtype) == TYPE_CODE_UNION)
- && TYPE_LENGTH (valtype) % 4 != 0))
+ && valtype_len % 4 != 0))
return RETURN_VALUE_STRUCT_CONVENTION;

This seems to be an unrelated cleanup, just drop it.

@@ -1763,9 +1764,10 @@ xtensa_push_dummy_call (struct gdbarch *gdbarch,
{
struct value *arg = args[i];
struct type *arg_type = check_typedef (value_type (arg));
- fprintf_unfiltered (gdb_stdlog, "%2d: %s %3d ", i,
+ fprintf_unfiltered (gdb_stdlog, "%2d: %s %s ", i,
host_address_to_string (arg),
- TYPE_LENGTH (arg_type));
+ int_string (TYPE_LENGTH (arg_type), 10, 0, 3,
+ 0));

It is sure just for debugging but this is an output change due to zeroes
padding. What about putting there instead:

const char *arg_type_len_s = pulongest (TYPE_LENGTH (arg_type));

+ fprintf_unfiltered (gdb_stdlog, "%2d: %s %s ", i,
[...]
arg_type_len_s);

Used:
rm -rf splint/;mkdir -p splint/bits;touch splint/bits/confname.h;for i in `cat files`;do mkdir -p splint/`dirname $i`;splint +posixlib +gnuextensions -Isplint -exportlocal -DTUI -I. -Icommon -I../include -I../bfd -I../libdecnumber -I../opcodes -I.. -I/usr/include/python2.7 $i &>splint/$i.out;done
find splint-bitpos/ -type f|sort|xargs cat|perl -lpe 's/^\s*(\S*?\.[ch]:\d+:\d+):/LOC $1\n/' >splint-bitpos.out
diff -I"^LOC " splint-clean.out splint-bitpos.out|vim -

and got for example:
-LOC ada-lang.c:669:33
+LOC ada-lang.c:670:33
Function umax_of_size expects arg 1 to be int gets unsigned
- int: (t)->length
+ long int: (t)->length

It has 26000 lines this way, I will try to reduce the diff size somehow.

Thanks,
Jan