This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH v3] Expand bitpos and type.length to LONGEST and ULONGEST
- From: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- To: Siddhesh Poyarekar <siddhesh at redhat dot com>
- Cc: gdb-patches at sourceware dot org, Tom Tromey <tromey at redhat dot com>
- Date: Wed, 6 Jun 2012 23:34:20 +0200
- Subject: Re: [PATCH v3] Expand bitpos and type.length to LONGEST and ULONGEST
- References: <20120221210235.GA26897@host2.jankratochvil.net> <20120504183858.67d416b7@spoyarek> <20120515200454.GA11338@host2.jankratochvil.net> <20120523192245.0f785e69@spoyarek> <20120523174610.GA23405@host2.jankratochvil.net> <20120524070634.4e346d9d@spoyarek> <20120524150105.GA8232@host2.jankratochvil.net> <20120531234422.3ea35cde@spoyarek> <20120605222651.GA25480@host2.jankratochvil.net> <20120606235335.7fa94030@spoyarek>
@@ -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