mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 01:28:46 +00:00
* language.c (local_hex_format_custom): Remove.
(local_hex_string): Rename to hex_string, use C format, and move to utils.c (local_hex_string_custom): Rename to hex_string_custom and change interface. Now uses C format. Move to utils.c (local_octal_format_custom): Remove. (local_decimal_format_custom): Remove. (unknown_language_defn): Remove language-specific number formatting entries. (auto_language_defn): Ditto. (local_language_defn): Ditto. * language.h (struct language_format_info): Delete declaration. (struct language_defn): Remove language_format_info fields la_binary_format, la_octal_format, la_decimal_format, la_hex_format. (local_binary_format): Remove macro. (local_binary_format_prefix): Remove macro. (local_binary_format_specifier): Remove macro. (local_binary_format_suffix): Remove macro. (local_octal_format): Remove macro. (local_octal_format_prefix): Remove macro. (local_octal_format_specifier): Remove macro. (local_octal_format_suffix): Remove macro. (local_decimal_format): Remove macro. (local_decimal_format_prefix): Remove macro. (local_decimal_format_specifier): Remove macro. (local_decimal_format_suffix): Remove macro. (local_hex_format): Remove macro. (local_hex_format_prefix): Remove macro. (local_hex_format_specifier): Remove macro. (local_hex_format_suffix): Remove macro. (local_decimal_format_custom): Remove. (local_octal_format_custom): Remove. (local_hex_format_custom): Remove. (local_hex_string): Rename to hex_string and move to defs.h. (local_hex_string_custom): Rename to hex_string_custom, change interface, and move to defs.h. * utils.c: (int_string): New function. (hex_string): New function (from language.c). (hex_string_custom): New function (from language.c). (octal2str): New function. (decimal2str): Add width parameter. (paddr_u): Use new decimal2str interface. (paddr_d): Ditto. * defs.h (hex_string): Declare. (hex_string_custom): Declare. (int_string): Declare. * printcmd.c (print_scalar_formatted): Remove localized binary formatting. * valprint.c (print_longest): Use int_string. (print_floating): Use C hex format. (print_hex_chars): Ditto. (print_binary_chars): Remove language-specific formatting. (print_octal_chars): Use C octal format. (print_decimal_chars): Delocalize format. (print_decimal): Remove. * ada-lang.c (ada_language_defn): Remove language-specific number formatting entries. * p-lang.c (pascal_language_defn): Ditto. * c-lang.c (c_language_defn): Ditto. (cplus_language_defn): Ditto. (asm_language_defn): Ditto. (minimal_language_defn): Ditto. * f-lang.c (f_language_defn): Ditto. * jv-lang.c (java_language_defn): Ditto. * m2-lang.c (m2_language_defn): Ditto. * scm-lang.c (scm_language_defn): Ditto. * objc-lang.c (objc_language_defn): Ditto. * memattr.c (mem_info_command): Use renamed hex_string_custom with new interface. * pa64solib.c (pa64_sharedlibrary_info_command): Ditto. * ui-out.c (ui_out_field_core_addr): Ditto. * breakpoint.c (breakpoint_adjustment_warning): Ditto. * exec.c (print_section_info): Ditto. * i387-tdep.c (print_i387_status_word): Ditto. (print_i387_control_word): Ditto. (i387_print_float_info): Ditto. * maint.c (maint_print_section_info): Ditto. * solib.c (info_sharedlibrary_command): Ditto. * somsolib.c (som_sharedlibrary_info_command): Ditto. * symtab.c (print_msymbol_info): Ditto. * tracepoint.c (tracepoints_info): Ditto. * solib-frv.c (lm_base): Ditto. (frv_current_sos): Ditto. (enable_break2): Ditto. (enable_break): Ditto. * dbxread.c (read_dbx_symtab): Use renamed hex_string. (process_one_symbol): Ditto. * infcmd.c (program_info): Ditto. * mdebugread.c (parse_partial_symbols): Ditto. * symfile.c (add_symbol_file_command): Ditto. * cli/cli-cmds.c (edit_command): Ditto. (list_command): Ditto. * infcall.c (call_function_by_hand): Ditto. * remote-vx.c (vx_run_files_info): Ditto. (vx_wait): Ditto. (vx_attach): Ditto. (vx_detach): Ditto. (vx_kill): Ditto. * aix-thread.c (pdc_symbol_addrs): Ditto. (pdc_read_regs): Ditto. (pdc_write_regs): Ditto. (pdc_read_data): Ditto. (pdc_write_data): Ditto. * d10v-tdep.c (display_trace): Ditto. * rs6000-nat.c (find_toc_address): Ditto. * aix-thread.c: Don't include language.h. * buildsym.c: Ditto. * dbxread.c: Ditto. * mdebugread.c: Ditto. * rs6000-nat.c: Ditto. * buildsym.c (make_blockvector): Use renamed hex_string.
This commit is contained in:
104
gdb/utils.c
104
gdb/utils.c
@@ -2636,7 +2636,7 @@ paddr_nz (CORE_ADDR addr)
|
||||
}
|
||||
|
||||
static void
|
||||
decimal2str (char *paddr_str, char *sign, ULONGEST addr)
|
||||
decimal2str (char *paddr_str, char *sign, ULONGEST addr, int width)
|
||||
{
|
||||
/* steal code from valprint.c:print_decimal(). Should this worry
|
||||
about the real size of addr as the above does? */
|
||||
@@ -2647,18 +2647,60 @@ decimal2str (char *paddr_str, char *sign, ULONGEST addr)
|
||||
temp[i] = addr % (1000 * 1000 * 1000);
|
||||
addr /= (1000 * 1000 * 1000);
|
||||
i++;
|
||||
width -= 9;
|
||||
}
|
||||
while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
|
||||
width += 9;
|
||||
if (width < 0)
|
||||
width = 0;
|
||||
switch (i)
|
||||
{
|
||||
case 1:
|
||||
sprintf (paddr_str, "%s%lu", sign, temp[0]);
|
||||
sprintf (paddr_str, "%s%0*lu", sign, width, temp[0]);
|
||||
break;
|
||||
case 2:
|
||||
sprintf (paddr_str, "%s%lu%09lu", sign, temp[1], temp[0]);
|
||||
sprintf (paddr_str, "%s%0*lu%09lu", sign, width, temp[1], temp[0]);
|
||||
break;
|
||||
case 3:
|
||||
sprintf (paddr_str, "%s%lu%09lu%09lu", sign, temp[2], temp[1], temp[0]);
|
||||
sprintf (paddr_str, "%s%0*lu%09lu%09lu", sign, width,
|
||||
temp[2], temp[1], temp[0]);
|
||||
break;
|
||||
default:
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"failed internal consistency check");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
octal2str (char *paddr_str, ULONGEST addr, int width)
|
||||
{
|
||||
unsigned long temp[3];
|
||||
int i = 0;
|
||||
do
|
||||
{
|
||||
temp[i] = addr % (0100000 * 0100000);
|
||||
addr /= (0100000 * 0100000);
|
||||
i++;
|
||||
width -= 10;
|
||||
}
|
||||
while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
|
||||
width += 10;
|
||||
if (width < 0)
|
||||
width = 0;
|
||||
switch (i)
|
||||
{
|
||||
case 1:
|
||||
if (temp[0] == 0)
|
||||
sprintf (paddr_str, "%*o", width, 0);
|
||||
else
|
||||
sprintf (paddr_str, "0%0*lo", width, temp[0]);
|
||||
break;
|
||||
case 2:
|
||||
sprintf (paddr_str, "0%0*lo%010lo", width, temp[1], temp[0]);
|
||||
break;
|
||||
case 3:
|
||||
sprintf (paddr_str, "0%0*lo%010lo%010lo", width,
|
||||
temp[2], temp[1], temp[0]);
|
||||
break;
|
||||
default:
|
||||
internal_error (__FILE__, __LINE__,
|
||||
@@ -2670,7 +2712,7 @@ char *
|
||||
paddr_u (CORE_ADDR addr)
|
||||
{
|
||||
char *paddr_str = get_cell ();
|
||||
decimal2str (paddr_str, "", addr);
|
||||
decimal2str (paddr_str, "", addr, 0);
|
||||
return paddr_str;
|
||||
}
|
||||
|
||||
@@ -2679,9 +2721,9 @@ paddr_d (LONGEST addr)
|
||||
{
|
||||
char *paddr_str = get_cell ();
|
||||
if (addr < 0)
|
||||
decimal2str (paddr_str, "-", -addr);
|
||||
decimal2str (paddr_str, "-", -addr, 0);
|
||||
else
|
||||
decimal2str (paddr_str, "", addr);
|
||||
decimal2str (paddr_str, "", addr, 0);
|
||||
return paddr_str;
|
||||
}
|
||||
|
||||
@@ -2747,6 +2789,54 @@ phex_nz (ULONGEST l, int sizeof_l)
|
||||
}
|
||||
|
||||
|
||||
/* Convert VAL to a numeral in the given radix. For
|
||||
* radix 10, IS_SIGNED may be true, indicating a signed quantity;
|
||||
* otherwise VAL is interpreted as unsigned. If WIDTH is supplied,
|
||||
* it is the minimum width (0-padded if needed). USE_C_FORMAT means
|
||||
* to use C format in all cases. If it is false, then 'x'
|
||||
* and 'o' formats do not include a prefix (0x or leading 0). */
|
||||
|
||||
char *
|
||||
int_string (LONGEST val, int radix, int is_signed, int width,
|
||||
int use_c_format)
|
||||
{
|
||||
switch (radix)
|
||||
{
|
||||
case 16:
|
||||
{
|
||||
char *result;
|
||||
if (width == 0)
|
||||
result = hex_string (val);
|
||||
else
|
||||
result = hex_string_custom (val, width);
|
||||
if (! use_c_format)
|
||||
result += 2;
|
||||
return result;
|
||||
}
|
||||
case 10:
|
||||
{
|
||||
char *result = get_cell ();
|
||||
if (is_signed && val < 0)
|
||||
decimal2str (result, "-", -val, width);
|
||||
else
|
||||
decimal2str (result, "", val, width);
|
||||
return result;
|
||||
}
|
||||
case 8:
|
||||
{
|
||||
char *result = get_cell ();
|
||||
octal2str (result, val, width);
|
||||
if (use_c_format || val == 0)
|
||||
return result;
|
||||
else
|
||||
return result + 1;
|
||||
}
|
||||
default:
|
||||
internal_error (__FILE__, __LINE__,
|
||||
"failed internal consistency check");
|
||||
}
|
||||
}
|
||||
|
||||
/* Convert a CORE_ADDR into a string. */
|
||||
const char *
|
||||
core_addr_to_string (const CORE_ADDR addr)
|
||||
|
||||
Reference in New Issue
Block a user