aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdbserver/utils.c
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2014-01-16 21:41:58 -0700
committerTom Tromey <tromey@redhat.com>2014-02-12 09:59:13 -0700
commit01fd3ea573324b8248efbb236d994420641e3d32 (patch)
tree298d7b46c13980609cae1694319cb37395d0fe8e /gdb/gdbserver/utils.c
parent9fb5010805bdfe0eb8fc5db01e7f4c93b04c8f29 (diff)
downloadgdb-01fd3ea573324b8248efbb236d994420641e3d32.zip
gdb-01fd3ea573324b8248efbb236d994420641e3d32.tar.gz
gdb-01fd3ea573324b8248efbb236d994420641e3d32.tar.bz2
share "cell" code
The "cell"-based printing code, like phex, was duplicated in both gdb and gdbserver. This patch merges the two implementations into a new file in common/. 2014-02-12 Tom Tromey <tromey@redhat.com> * utils.h: Include print-utils.h. (host_address_to_string, plongest, pulongest, phex, phex_nz) (int_string, core_addr_to_string, core_addr_to_string_nz) (hex_string, hex_string_custom): Don't declare. * utils.c (NUMCELLS, CELLSIZE, get_cell, decimal2str, pulongest) (plongest, thirty_two, phex, phex_nz, octal2str, hex_string) (hex_string_custom, int_string, core_addr_to_string) (core_addr_to_string_nz, host_address_to_string): Move to common/print-utils.c. * common/print-utils.h: New file. * common/print-utils.c: New file * Makefile.in (SFILES): Add common/print-utils.c. (HFILES_NO_SRCDIR): Add common/print-utils.h. (COMMON_OBS): Add print-utils.o. (print-utils.o): New target. 2014-02-12 Tom Tromey <tromey@redhat.com> * utils.h (pulongest, plongest, phex_nz): Don't declare. Include print-utils.h. * utils.c (NUMCELLS, CELLSIZE, get_cell, decimal2str, pulongest) (plongest, thirty_two, phex_nz): Remove. * Makefile.in (SFILES): Add common/print-utils.c. (OBS): Add print-utils.o. (print-utils-ipa.o): New target. (print-utils.o): New target. (IPA_OBJS): Add print-utils-ipa.o.
Diffstat (limited to 'gdb/gdbserver/utils.c')
-rw-r--r--gdb/gdbserver/utils.c117
1 files changed, 0 insertions, 117 deletions
diff --git a/gdb/gdbserver/utils.c b/gdb/gdbserver/utils.c
index eff4499..19955dc 100644
--- a/gdb/gdbserver/utils.c
+++ b/gdb/gdbserver/utils.c
@@ -165,123 +165,6 @@ internal_error (const char *file, int line, const char *fmt, ...)
exit (1);
}
-/* Temporary storage using circular buffer. */
-#define NUMCELLS 10
-#define CELLSIZE 50
-
-/* Return the next entry in the circular buffer. */
-
-static char *
-get_cell (void)
-{
- static char buf[NUMCELLS][CELLSIZE];
- static int cell = 0;
- if (++cell >= NUMCELLS)
- cell = 0;
- return buf[cell];
-}
-
-static char *
-decimal2str (char *sign, ULONGEST addr)
-{
- /* Steal code from valprint.c:print_decimal(). Should this worry
- about the real size of addr as the above does? */
- unsigned long temp[3];
- char *str = get_cell ();
- int i = 0;
- int width = 9;
-
- do
- {
- temp[i] = addr % (1000 * 1000 * 1000);
- addr /= (1000 * 1000 * 1000);
- i++;
- }
- while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
-
- switch (i)
- {
- case 1:
- xsnprintf (str, CELLSIZE, "%s%0*lu", sign, width, temp[0]);
- break;
- case 2:
- xsnprintf (str, CELLSIZE, "%s%0*lu%09lu", sign, width,
- temp[1], temp[0]);
- break;
- case 3:
- xsnprintf (str, CELLSIZE, "%s%0*lu%09lu%09lu", sign, width,
- temp[2], temp[1], temp[0]);
- break;
- default:
- internal_error (__FILE__, __LINE__,
- "failed internal consistency check");
- }
-
- return str;
-}
-
-/* %u for ULONGEST. The result is stored in a circular static buffer,
- NUMCELLS deep. */
-
-char *
-pulongest (ULONGEST u)
-{
- return decimal2str ("", u);
-}
-
-/* %d for LONGEST. The result is stored in a circular static buffer,
- NUMCELLS deep. */
-
-char *
-plongest (LONGEST l)
-{
- if (l < 0)
- return decimal2str ("-", -l);
- else
- return decimal2str ("", l);
-}
-
-/* Eliminate warning from compiler on 32-bit systems. */
-static int thirty_two = 32;
-
-/* Convert a ULONGEST into a HEX string, like %lx. The result is
- stored in a circular static buffer, NUMCELLS deep. */
-
-char *
-phex_nz (ULONGEST l, int sizeof_l)
-{
- char *str;
-
- switch (sizeof_l)
- {
- case 8:
- {
- unsigned long high = (unsigned long) (l >> thirty_two);
- str = get_cell ();
- if (high == 0)
- xsnprintf (str, CELLSIZE, "%lx",
- (unsigned long) (l & 0xffffffff));
- else
- xsnprintf (str, CELLSIZE, "%lx%08lx", high,
- (unsigned long) (l & 0xffffffff));
- break;
- }
- case 4:
- str = get_cell ();
- xsnprintf (str, CELLSIZE, "%lx", (unsigned long) l);
- break;
- case 2:
- str = get_cell ();
- xsnprintf (str, CELLSIZE, "%x", (unsigned short) (l & 0xffff));
- break;
- default:
- str = phex_nz (l, sizeof (l));
- break;
- }
-
- return str;
-}
-
/* Convert a CORE_ADDR into a HEX string, like %lx.
The result is stored in a circular static buffer, NUMCELLS deep. */