diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 13 | ||||
-rw-r--r-- | gdb/TODO | 11 | ||||
-rw-r--r-- | gdb/defs.h | 5 | ||||
-rw-r--r-- | gdb/monitor.c | 3 | ||||
-rw-r--r-- | gdb/utils.c | 111 |
5 files changed, 56 insertions, 87 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7f12774..60722a0 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,16 @@ +Mon May 22 12:05:13 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * defs.h (t_reg): Delete typedef. + (preg, preg_nz): Delete function. Replaced by phex and phex_nz. + * utils.c (phex, phex_nz): New functions. + (paddr, paddr_nz): Use. + + * monitor.c (monitor_store_register): Replace preg with phex. + +Mon May 22 11:46:01 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * TODO: Add note on typecast using catch_errors_ftype. + 2000-05-21 Mark Kettenis <kettenis@gnu.org> * i387-tdep.c (print_i387_value): Cast &value to (char *) in @@ -250,6 +250,12 @@ http://sourceware.cygnus.com/ml/gdb-patches/2000-q1/msg00814.html -- +Elimination of ``(catch_errors_ftype *) func''. + +Like make_cleanup_func it isn't portable. + +-- + Re: Various C++ things value_headof/value_from_vtable_info are worthless, and should be removed. @@ -348,13 +354,14 @@ Send debug and log output log gdb_stdlog. GDB still contains many cases where (f)printf or printf_filtered () is used when it should be sending the messages to gdb_stderror or -gdb_stdlog. +gdb_stdlog. The thought of #defining printf to something has crossed +peoples minds ;-) -- Rationalize the host-endian code (grep for HOST_BYTE_ORDER). -At preent defs.h includes <endian.h> (which is linux specific) yet +At present defs.h includes <endian.h> (which is linux specific) yet almost nothing depends on it. Suggest "gdb_endian.h" which can also handle <machine/endian.h> and only include that where it is really needed. @@ -482,9 +482,8 @@ extern char *paddr_nz (CORE_ADDR addr); extern char *paddr_u (CORE_ADDR addr); extern char *paddr_d (LONGEST addr); -typedef bfd_vma t_reg; -extern char *preg (t_reg reg); -extern char *preg_nz (t_reg reg); +extern char *phex (ULONGEST l, int sizeof_l); +extern char *phex_nz (ULONGEST l, int sizeof_l); extern void fprintf_symbol_filtered (struct ui_file *, char *, enum language, int); diff --git a/gdb/monitor.c b/gdb/monitor.c index a9bd502..8dbd31f 100644 --- a/gdb/monitor.c +++ b/gdb/monitor.c @@ -1377,7 +1377,8 @@ monitor_store_register (regno) } val = read_register (regno); - monitor_debug ("MON storeg %d %s\n", regno, preg (val)); + monitor_debug ("MON storeg %d %s\n", regno, + phex (val, REGISTER_RAW_SIZE (regno))); /* send the register deposit command */ diff --git a/gdb/utils.c b/gdb/utils.c index 45fdb1d..8e2c5c5 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -2836,6 +2836,8 @@ floatformat_from_doublest (fmt, from, to) } } +/* print routines to handle variable size regs, etc. */ + /* temporary storage using circular buffer */ #define NUMCELLS 16 #define CELLSIZE 32 @@ -2849,79 +2851,22 @@ get_cell () return buf[cell]; } -/* print routines to handle variable size regs, etc. - - FIXME: Note that t_addr is a bfd_vma, which is currently either an - unsigned long or unsigned long long, determined at configure time. - If t_addr is an unsigned long long and sizeof (unsigned long long) - is greater than sizeof (unsigned long), then I believe this code will - probably lose, at least for little endian machines. I believe that - it would also be better to eliminate the switch on the absolute size - of t_addr and replace it with a sequence of if statements that compare - sizeof t_addr with sizeof the various types and do the right thing, - which includes knowing whether or not the host supports long long. - -fnf - - */ - int strlen_paddr (void) { return (TARGET_PTR_BIT / 8 * 2); } - -/* eliminate warning from compiler on 32-bit systems */ -static int thirty_two = 32; - char * paddr (CORE_ADDR addr) { - char *paddr_str = get_cell (); - switch (TARGET_PTR_BIT / 8) - { - case 8: - sprintf (paddr_str, "%08lx%08lx", - (unsigned long) (addr >> thirty_two), (unsigned long) (addr & 0xffffffff)); - break; - case 4: - sprintf (paddr_str, "%08lx", (unsigned long) addr); - break; - case 2: - sprintf (paddr_str, "%04x", (unsigned short) (addr & 0xffff)); - break; - default: - sprintf (paddr_str, "%lx", (unsigned long) addr); - } - return paddr_str; + return phex (addr, TARGET_PTR_BIT / 8); } char * paddr_nz (CORE_ADDR addr) { - char *paddr_str = get_cell (); - switch (TARGET_PTR_BIT / 8) - { - case 8: - { - unsigned long high = (unsigned long) (addr >> thirty_two); - if (high == 0) - sprintf (paddr_str, "%lx", (unsigned long) (addr & 0xffffffff)); - else - sprintf (paddr_str, "%lx%08lx", - high, (unsigned long) (addr & 0xffffffff)); - break; - } - case 4: - sprintf (paddr_str, "%lx", (unsigned long) addr); - break; - case 2: - sprintf (paddr_str, "%x", (unsigned short) (addr & 0xffff)); - break; - default: - sprintf (paddr_str, "%lx", (unsigned long) addr); - } - return paddr_str; + return phex_nz (addr, TARGET_PTR_BIT / 8); } static void @@ -2976,54 +2921,58 @@ paddr_d (LONGEST addr) return paddr_str; } +/* eliminate warning from compiler on 32-bit systems */ +static int thirty_two = 32; + char * -preg (reg) - t_reg reg; +phex (ULONGEST l, int sizeof_l) { - char *preg_str = get_cell (); - switch (sizeof (t_reg)) + char *str = get_cell (); + switch (sizeof_l) { case 8: - sprintf (preg_str, "%08lx%08lx", - (unsigned long) (reg >> thirty_two), (unsigned long) (reg & 0xffffffff)); + sprintf (str, "%08lx%08lx", + (unsigned long) (l >> thirty_two), + (unsigned long) (l & 0xffffffff)); break; case 4: - sprintf (preg_str, "%08lx", (unsigned long) reg); + sprintf (str, "%08lx", (unsigned long) l); break; case 2: - sprintf (preg_str, "%04x", (unsigned short) (reg & 0xffff)); + sprintf (str, "%04x", (unsigned short) (l & 0xffff)); break; default: - sprintf (preg_str, "%lx", (unsigned long) reg); + phex (l, sizeof (l)); + break; } - return preg_str; + return str; } char * -preg_nz (reg) - t_reg reg; +phex_nz (ULONGEST l, int sizeof_l) { - char *preg_str = get_cell (); - switch (sizeof (t_reg)) + char *str = get_cell (); + switch (sizeof_l) { case 8: { - unsigned long high = (unsigned long) (reg >> thirty_two); + unsigned long high = (unsigned long) (l >> thirty_two); if (high == 0) - sprintf (preg_str, "%lx", (unsigned long) (reg & 0xffffffff)); + sprintf (str, "%lx", (unsigned long) (l & 0xffffffff)); else - sprintf (preg_str, "%lx%08lx", - high, (unsigned long) (reg & 0xffffffff)); + sprintf (str, "%lx%08lx", + high, (unsigned long) (l & 0xffffffff)); break; } case 4: - sprintf (preg_str, "%lx", (unsigned long) reg); + sprintf (str, "%lx", (unsigned long) l); break; case 2: - sprintf (preg_str, "%x", (unsigned short) (reg & 0xffff)); + sprintf (str, "%x", (unsigned short) (l & 0xffff)); break; default: - sprintf (preg_str, "%lx", (unsigned long) reg); + phex_nz (l, sizeof (l)); + break; } - return preg_str; + return str; } |