* 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:
Paul N. Hilfinger 2004-09-11 10:24:53 +00:00
parent 52e08514ab
commit bb599908a8
38 changed files with 360 additions and 576 deletions

View File

@ -1,3 +1,117 @@
2004-09-11 Paul N. Hilfinger <hilfinger@gnat.com>
* 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.
2004-09-10 Jason Molenda (jmolenda@apple.com)
* cli/cli-script.c (read_next_line): Accept zero or more whitespace

View File

@ -10184,11 +10184,6 @@ const struct language_defn ada_language_defn = {
basic_lookup_transparent_type, /* lookup_transparent_type */
ada_la_decode, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
/* Copied from c-lang.c. */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
ada_op_print_tab, /* expression operators for printing */
0, /* c-style arrays */
1, /* String lower bound */

View File

@ -48,7 +48,6 @@
#include "inferior.h"
#include "regcache.h"
#include "gdbcmd.h"
#include "language.h" /* for local_hex_string() */
#include "ppc-tdep.h"
#include "gdb_string.h"
@ -314,7 +313,7 @@ pdc_symbol_addrs (pthdb_user_t user, pthdb_symbol_t *symbols, int count)
}
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, " symbols[%d].addr = %s\n",
i, local_hex_string (symbols[i].addr));
i, hex_string (symbols[i].addr));
}
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, " returning PDC_SUCCESS\n");
@ -347,7 +346,7 @@ pdc_read_regs (pthdb_user_t user,
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, "pdc_read_regs tid=%d flags=%s\n",
(int) tid, local_hex_string (flags));
(int) tid, hex_string (flags));
/* General-purpose registers. */
if (flags & PTHDB_FLAG_GPRS)
@ -413,7 +412,7 @@ pdc_write_regs (pthdb_user_t user,
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, "pdc_write_regs tid=%d flags=%s\n",
(int) tid, local_hex_string (flags));
(int) tid, hex_string (flags));
/* General-purpose registers. */
if (flags & PTHDB_FLAG_GPRS)
@ -458,7 +457,7 @@ pdc_read_data (pthdb_user_t user, void *buf,
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog,
"pdc_read_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
user, (long) buf, local_hex_string (addr), len);
user, (long) buf, hex_string (addr), len);
status = target_read_memory (addr, buf, len);
ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE;
@ -480,7 +479,7 @@ pdc_write_data (pthdb_user_t user, void *buf,
if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog,
"pdc_write_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n",
user, (long) buf, local_hex_string (addr), len);
user, (long) buf, hex_string (addr), len);
status = target_write_memory (addr, buf, len);
ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE;

View File

@ -3925,8 +3925,8 @@ breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
char astr1[40];
char astr2[40];
strcpy (astr1, local_hex_string_custom ((unsigned long) from_addr, "08l"));
strcpy (astr2, local_hex_string_custom ((unsigned long) to_addr, "08l"));
strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
if (have_bnum)
warning ("Breakpoint %d address previously adjusted from %s to %s.",
bnum, astr1, astr2);

View File

@ -38,7 +38,6 @@
#include "complaints.h"
#include "gdb_string.h"
#include "expression.h" /* For "enum exp_opcode" used by... */
#include "language.h" /* For "local_hex_string" */
#include "bcache.h"
#include "filenames.h" /* For DOSish file names */
#include "macrotab.h"
@ -521,7 +520,7 @@ make_blockvector (struct objfile *objfile)
= BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
complaint (&symfile_complaints, "block at %s out of order",
local_hex_string ((LONGEST) start));
hex_string ((LONGEST) start));
}
}
}

View File

@ -588,10 +588,6 @@ const struct language_defn c_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
@ -650,10 +646,6 @@ const struct language_defn cplus_language_defn =
cp_lookup_transparent_type, /* lookup_transparent_type */
cplus_demangle, /* Language specific symbol demangler */
cp_class_name_from_physname, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
@ -689,10 +681,6 @@ const struct language_defn asm_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
@ -733,10 +721,6 @@ const struct language_defn minimal_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */

View File

@ -600,7 +600,7 @@ edit_command (char *arg, int from_tty)
if (sal.symtab == 0)
/* FIXME-32x64--assumes sal.pc fits in long. */
error ("No source file for address %s.",
local_hex_string((unsigned long) sal.pc));
hex_string ((unsigned long) sal.pc));
sym = find_pc_function (sal.pc);
if (sym)
{
@ -767,7 +767,7 @@ list_command (char *arg, int from_tty)
if (sal.symtab == 0)
/* FIXME-32x64--assumes sal.pc fits in long. */
error ("No source file for address %s.",
local_hex_string ((unsigned long) sal.pc));
hex_string ((unsigned long) sal.pc));
sym = find_pc_function (sal.pc);
if (sym)
{

View File

@ -1313,7 +1313,7 @@ display_trace (int low, int high)
if (!suppress)
/* FIXME-32x64--assumes sal.pc fits in long. */
printf_filtered ("No source file for address %s.\n",
local_hex_string ((unsigned long) sal.pc));
hex_string ((unsigned long) sal.pc));
suppress = 1;
}
}

View File

@ -54,7 +54,6 @@
#include "stabsread.h"
#include "gdb-stabs.h"
#include "demangle.h"
#include "language.h" /* Needed for local_hex_string */
#include "complaints.h"
#include "cp-abi.h"
#include "gdb_assert.h"
@ -2097,7 +2096,7 @@ read_dbx_symtab (struct objfile *objfile)
default:
/* If we haven't found it yet, ignore it. It's probably some
new type we don't know about yet. */
unknown_symtype_complaint (local_hex_string (nlist.n_type));
unknown_symtype_complaint (hex_string (nlist.n_type));
continue;
}
}
@ -3038,7 +3037,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
case N_NBBSS:
case N_NBSTS:
case N_NBLCS:
unknown_symtype_complaint (local_hex_string (type));
unknown_symtype_complaint (hex_string (type));
/* FALLTHROUGH */
/* The following symbol types don't need the address field relocated,

View File

@ -515,6 +515,7 @@ extern char *paddr_d (LONGEST addr);
extern char *phex (ULONGEST l, int sizeof_l);
extern char *phex_nz (ULONGEST l, int sizeof_l);
extern char *int_string (LONGEST, int, int, int, int);
/* Like paddr() only print/scan raw CORE_ADDR. The output from
core_addr_to_string() can be passed direct to

View File

@ -522,8 +522,8 @@ void
print_section_info (struct target_ops *t, bfd *abfd)
{
struct section_table *p;
/* FIXME: "016l" is not wide enough when TARGET_ADDR_BIT > 64. */
char *fmt = TARGET_ADDR_BIT <= 32 ? "08l" : "016l";
/* FIXME: 16 is not wide enough when TARGET_ADDR_BIT > 64. */
int wid = TARGET_ADDR_BIT <= 32 ? 8 : 16;
printf_filtered ("\t`%s', ", bfd_get_filename (abfd));
wrap_here (" ");
@ -536,8 +536,8 @@ print_section_info (struct target_ops *t, bfd *abfd)
}
for (p = t->to_sections; p < t->to_sections_end; p++)
{
printf_filtered ("\t%s", local_hex_string_custom (p->addr, fmt));
printf_filtered (" - %s", local_hex_string_custom (p->endaddr, fmt));
printf_filtered ("\t%s", hex_string_custom (p->addr, wid));
printf_filtered (" - %s", hex_string_custom (p->endaddr, wid));
/* FIXME: A format of "08l" is not wide enough for file offsets
larger than 4GB. OTOH, making it "016l" isn't desirable either
@ -546,7 +546,7 @@ print_section_info (struct target_ops *t, bfd *abfd)
format string accordingly. */
if (info_verbose)
printf_filtered (" @ %s",
local_hex_string_custom (p->the_bfd_section->filepos, "08l"));
hex_string_custom (p->the_bfd_section->filepos, 8));
printf_filtered (" is %s", bfd_section_name (p->bfd, p->the_bfd_section));
if (p->bfd != abfd)
{

View File

@ -480,10 +480,6 @@ const struct language_defn f_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%o", "0", "o", ""}, /* Octal format info */
{"%d", "", "d", ""}, /* Decimal format info */
{"0x%x", "0x", "x", ""}, /* Hex format info */
f_op_print_tab, /* expression operators for printing */
0, /* arrays are first-class (not c-style) */
1, /* String lower bound */

View File

@ -121,7 +121,7 @@ static void
print_i387_status_word (unsigned int status, struct ui_file *file)
{
fprintf_filtered (file, "Status Word: %s",
local_hex_string_custom (status, "04"));
hex_string_custom (status, 4));
fputs_filtered (" ", file);
fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " ");
fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " ");
@ -151,7 +151,7 @@ static void
print_i387_control_word (unsigned int control, struct ui_file *file)
{
fprintf_filtered (file, "Control Word: %s",
local_hex_string_custom (control, "04"));
hex_string_custom (control, 4));
fputs_filtered (" ", file);
fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " ");
fprintf_filtered (file, " %s", (control & 0x0002) ? "DM" : " ");
@ -276,15 +276,15 @@ i387_print_float_info (struct gdbarch *gdbarch, struct ui_file *file,
print_i387_status_word (fstat, file);
print_i387_control_word (fctrl, file);
fprintf_filtered (file, "Tag Word: %s\n",
local_hex_string_custom (ftag, "04"));
hex_string_custom (ftag, 4));
fprintf_filtered (file, "Instruction Pointer: %s:",
local_hex_string_custom (fiseg, "02"));
fprintf_filtered (file, "%s\n", local_hex_string_custom (fioff, "08"));
hex_string_custom (fiseg, 2));
fprintf_filtered (file, "%s\n", hex_string_custom (fioff, 8));
fprintf_filtered (file, "Operand Pointer: %s:",
local_hex_string_custom (foseg, "02"));
fprintf_filtered (file, "%s\n", local_hex_string_custom (fooff, "08"));
hex_string_custom (foseg, 2));
fprintf_filtered (file, "%s\n", hex_string_custom (fooff, 8));
fprintf_filtered (file, "Opcode: %s\n",
local_hex_string_custom (fop ? (fop | 0xd800) : 0, "04"));
hex_string_custom (fop ? (fop | 0xd800) : 0, 4));
#undef I387_ST0_REGNUM
}

View File

@ -746,7 +746,7 @@ You must use a pointer to function type variable. Command ignored.", arg_name);
{
/* Can't use a cleanup here. It is discarded, instead use
an alloca. */
char *tmp = xstrprintf ("at %s", local_hex_string (funaddr));
char *tmp = xstrprintf ("at %s", hex_string (funaddr));
char *a = alloca (strlen (tmp) + 1);
strcpy (a, tmp);
xfree (tmp);

View File

@ -1317,7 +1317,7 @@ program_info (char *args, int from_tty)
target_files_info ();
printf_filtered ("Program stopped at %s.\n",
local_hex_string ((unsigned long) stop_pc));
hex_string ((unsigned long) stop_pc));
if (stop_step)
printf_filtered ("It stopped after being stepped.\n");
else if (num != 0)

View File

@ -1106,10 +1106,6 @@ const struct language_defn java_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
java_demangle, /* Language specific symbol demangler */
java_class_name_from_physname,/* Language specific class name */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
java_op_print_tab, /* expression operators for printing */
0, /* not c-style arrays */
0, /* String lower bound */

View File

@ -583,124 +583,41 @@ binop_result_type (struct value *v1, struct value *v2)
/* This page contains functions that return format strings for
printf for printing out numbers in different formats */
/* Returns the appropriate printf format for hexadecimal
numbers. */
char *
local_hex_format_custom (char *pre)
{
static char form[50];
#define MAX_NUM_STRING_LEN 50
strcpy (form, local_hex_format_prefix ());
strcat (form, "%");
strcat (form, pre);
strcat (form, local_hex_format_specifier ());
strcat (form, local_hex_format_suffix ());
return form;
/* Converts a LONGEST to a C-format hexadecimal literal and stores it in
a static string. Returns a pointer to this string. */
char *
hex_string (LONGEST num)
{
static char result[MAX_NUM_STRING_LEN];
sprintf (result, "0x%s", phex_nz (num, sizeof (num)));
return result;
}
/* Converts a LONGEST to custom hexadecimal and stores it in a static
string. Returns a pointer to this string. */
char *
local_hex_string (LONGEST num)
{
return local_hex_string_custom (num, "l");
}
/* Converts a LONGEST number to custom hexadecimal and stores it in a static
string. Returns a pointer to this string. Note that the width parameter
should end with "l", e.g. "08l" as with calls to local_hex_string_custom */
/* Converts a LONGEST number to a C-format hexadecimal literal and stores
it in a static string. Returns a pointer to this string that is
valid until the next call. The number is padded on the left with
0s to at least WIDTH characters. */
char *
local_hex_string_custom (LONGEST num, char *width)
hex_string_custom (LONGEST num, int width)
{
#define RESULT_BUF_LEN 50
static char res2[RESULT_BUF_LEN];
char format[RESULT_BUF_LEN];
int field_width;
int num_len;
int num_pad_chars;
char *pad_char; /* string with one character */
int pad_on_left;
char *parse_ptr;
char temp_nbr_buf[RESULT_BUF_LEN];
static char result[MAX_NUM_STRING_LEN];
char *result_end = result + MAX_NUM_STRING_LEN - 1;
const char* hex = phex_nz (num, sizeof (num));
int hex_len = strlen (hex);
/* Use phex_nz to print the number into a string, then
build the result string from local_hex_format_prefix, padding and
the hex representation as indicated by "width". */
strcpy (temp_nbr_buf, phex_nz (num, sizeof (num)));
/* parse width */
parse_ptr = width;
pad_on_left = 1;
pad_char = " ";
if (*parse_ptr == '-')
{
parse_ptr++;
pad_on_left = 0;
}
if (*parse_ptr == '0')
{
parse_ptr++;
if (pad_on_left)
pad_char = "0"; /* If padding is on the right, it is blank */
}
field_width = atoi (parse_ptr);
num_len = strlen (temp_nbr_buf);
num_pad_chars = field_width - strlen (temp_nbr_buf); /* possibly negative */
if (strlen (local_hex_format_prefix ()) + num_len + num_pad_chars
>= RESULT_BUF_LEN) /* paranoia */
if (hex_len > width)
width = hex_len;
if (width + 2 >= MAX_NUM_STRING_LEN)
internal_error (__FILE__, __LINE__,
"local_hex_string_custom: insufficient space to store result");
"hex_string_custom: insufficient space to store result");
strcpy (res2, local_hex_format_prefix ());
if (pad_on_left)
{
while (num_pad_chars > 0)
{
strcat (res2, pad_char);
num_pad_chars--;
}
}
strcat (res2, temp_nbr_buf);
if (!pad_on_left)
{
while (num_pad_chars > 0)
{
strcat (res2, pad_char);
num_pad_chars--;
}
}
return res2;
} /* local_hex_string_custom */
/* Returns the appropriate printf format for octal
numbers. */
char *
local_octal_format_custom (char *pre)
{
static char form[50];
strcpy (form, local_octal_format_prefix ());
strcat (form, "%");
strcat (form, pre);
strcat (form, local_octal_format_specifier ());
strcat (form, local_octal_format_suffix ());
return form;
}
/* Returns the appropriate printf format for decimal numbers. */
char *
local_decimal_format_custom (char *pre)
{
static char form[50];
strcpy (form, local_decimal_format_prefix ());
strcat (form, "%");
strcat (form, pre);
strcat (form, local_decimal_format_specifier ());
strcat (form, local_decimal_format_suffix ());
return form;
strcpy (result_end - width - 2, "0x");
memset (result_end - width, '0', width);
strcpy (result_end - hex_len, hex);
return result_end - width - 2;
}
#if 0
@ -1313,10 +1230,6 @@ const struct language_defn unknown_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
@ -1353,10 +1266,6 @@ const struct language_defn auto_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */
@ -1392,10 +1301,6 @@ const struct language_defn local_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */

View File

@ -117,37 +117,6 @@ extern enum case_sensitivity
}
case_sensitivity;
/* Information for doing language dependent formatting of printed values. */
struct language_format_info
{
/* The format that can be passed directly to standard C printf functions
to generate a completely formatted value in the format appropriate for
the language. */
char *la_format;
/* The prefix to be used when directly printing a value, or constructing
a standard C printf format. This generally is everything up to the
conversion specification (the part introduced by the '%' character
and terminated by the conversion specifier character). */
char *la_format_prefix;
/* The conversion specifier. This is generally everything after the
field width and precision, typically only a single character such
as 'o' for octal format or 'x' for hexadecimal format. */
char *la_format_specifier;
/* The suffix to be used when directly printing a value, or constructing
a standard C printf format. This generally is everything after the
conversion specification (the part introduced by the '%' character
and terminated by the conversion specifier character). */
char *la_format_suffix; /* Suffix for custom format string */
};
/* Per architecture (OS/ABI) language information. */
struct language_arch_info
@ -284,22 +253,6 @@ struct language_defn
/* Return class name of a mangled method name or NULL. */
char *(*la_class_name_from_physname) (const char *physname);
/* Base 2 (binary) formats. */
struct language_format_info la_binary_format;
/* Base 8 (octal) formats. */
struct language_format_info la_octal_format;
/* Base 10 (decimal) formats */
struct language_format_info la_decimal_format;
/* Base 16 (hexadecimal) formats */
struct language_format_info la_hex_format;
/* Table for printing expressions */
const struct op_print *la_op_print_tab;
@ -402,47 +355,6 @@ extern enum language set_language (enum language);
#define LA_VALUE_PRINT(val,stream,fmt,pretty) \
(current_language->la_value_print(val,stream,fmt,pretty))
/* Return a format string for printf that will print a number in one of
the local (language-specific) formats. Result is static and is
overwritten by the next call. Takes printf options like "08" or "l"
(to produce e.g. %08x or %lx). */
#define local_binary_format() \
(current_language->la_binary_format.la_format)
#define local_binary_format_prefix() \
(current_language->la_binary_format.la_format_prefix)
#define local_binary_format_specifier() \
(current_language->la_binary_format.la_format_specifier)
#define local_binary_format_suffix() \
(current_language->la_binary_format.la_format_suffix)
#define local_octal_format() \
(current_language->la_octal_format.la_format)
#define local_octal_format_prefix() \
(current_language->la_octal_format.la_format_prefix)
#define local_octal_format_specifier() \
(current_language->la_octal_format.la_format_specifier)
#define local_octal_format_suffix() \
(current_language->la_octal_format.la_format_suffix)
#define local_decimal_format() \
(current_language->la_decimal_format.la_format)
#define local_decimal_format_prefix() \
(current_language->la_decimal_format.la_format_prefix)
#define local_decimal_format_specifier() \
(current_language->la_decimal_format.la_format_specifier)
#define local_decimal_format_suffix() \
(current_language->la_decimal_format.la_format_suffix)
#define local_hex_format() \
(current_language->la_hex_format.la_format)
#define local_hex_format_prefix() \
(current_language->la_hex_format.la_format_prefix)
#define local_hex_format_specifier() \
(current_language->la_hex_format.la_format_specifier)
#define local_hex_format_suffix() \
(current_language->la_hex_format.la_format_suffix)
#define LA_PRINT_CHAR(ch, stream) \
(current_language->la_printchar(ch, stream))
#define LA_PRINT_STRING(stream, string, length, width, force_ellipses) \
@ -461,17 +373,6 @@ extern enum language set_language (enum language);
&& ((c) < 0x7F || (c) >= 0xA0) \
&& (!sevenbit_strings || (c) < 0x80))
/* Return a format string for printf that will print a number in one of
the local (language-specific) formats. Result is static and is
overwritten by the next call. Takes printf options like "08" or "l"
(to produce e.g. %08x or %lx). */
extern char *local_decimal_format_custom (char *); /* language.c */
extern char *local_octal_format_custom (char *); /* language.c */
extern char *local_hex_format_custom (char *); /* language.c */
#if 0
/* FIXME: cagney/2000-03-04: This function does not appear to be used.
It can be deleted once 5.0 has been released. */
@ -481,13 +382,11 @@ extern char *local_hex_format_custom (char *); /* language.c */
extern char *longest_raw_hex_string (LONGEST);
#endif
/* Return a string that contains a number formatted in one of the local
(language-specific) formats. Result is static and is overwritten by
the next call. Takes printf options like "08l" or "l". */
/* Return a string that contains a number formatted as a hex string */
extern char *local_hex_string (LONGEST); /* language.c */
extern char *hex_string (LONGEST); /* language.c */
extern char *local_hex_string_custom (LONGEST, char *); /* language.c */
extern char *hex_string_custom (LONGEST, int); /* language.c */
/* Type predicates */

View File

@ -433,10 +433,6 @@ const struct language_defn m2_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"%loB", "", "o", "B"}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0%lXH", "0", "X", "H"}, /* Hex format info */
m2_op_print_tab, /* expression operators for printing */
0, /* arrays are first-class (not c-style) */
0, /* String lower bound */

View File

@ -308,7 +308,7 @@ maint_print_section_info (const char *name, flagword flags,
printf_filtered (" 0x%s", paddr (addr));
printf_filtered ("->0x%s", paddr (endaddr));
printf_filtered (" at %s",
local_hex_string_custom ((unsigned long) filepos, "08l"));
hex_string_custom ((unsigned long) filepos, 8));
printf_filtered (": %s", name);
print_bfd_flags (flags);
printf_filtered ("\n");

View File

@ -88,7 +88,6 @@ typedef struct mips_extra_func_info
#include "aout/stab_gnu.h" /* STABS information */
#include "expression.h"
#include "language.h" /* For local_hex_string() */
extern void _initialize_mdebugread (void);
@ -3266,7 +3265,7 @@ parse_partial_symbols (struct objfile *objfile)
/* If we haven't found it yet, ignore it. It's probably some
new type we don't know about yet. */
complaint (&symfile_complaints, "unknown symbol type %s",
local_hex_string (type_code)); /*CUR_SYMBOL_TYPE*/
hex_string (type_code)); /*CUR_SYMBOL_TYPE*/
continue;
}
if (stabstring

View File

@ -240,9 +240,9 @@ mem_info_command (char *args, int from_tty)
m->number,
m->enabled_p ? 'y' : 'n');
if (TARGET_ADDR_BIT <= 32)
tmp = local_hex_string_custom ((unsigned long) m->lo, "08l");
tmp = hex_string_custom ((unsigned long) m->lo, 8);
else
tmp = local_hex_string_custom ((unsigned long) m->lo, "016l");
tmp = hex_string_custom ((unsigned long) m->lo, 16);
printf_filtered ("%s ", tmp);
@ -251,14 +251,14 @@ mem_info_command (char *args, int from_tty)
if (m->hi == 0)
tmp = "0x100000000";
else
tmp = local_hex_string_custom ((unsigned long) m->hi, "08l");
tmp = hex_string_custom ((unsigned long) m->hi, 8);
}
else
{
if (m->hi == 0)
tmp = "0x10000000000000000";
else
tmp = local_hex_string_custom ((unsigned long) m->hi, "016l");
tmp = hex_string_custom ((unsigned long) m->hi, 16);
}
printf_filtered ("%s ", tmp);

View File

@ -677,10 +677,6 @@ const struct language_defn objc_language_defn = {
basic_lookup_transparent_type,/* lookup_transparent_type */
objc_demangle, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"0x%lx", "0x", "x", ""}, /* Hex format info */
objc_op_print_tab, /* Expression operators for printing */
1, /* C-style arrays */
0, /* String lower bound */

View File

@ -469,10 +469,6 @@ const struct language_defn pascal_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "%", "b", ""}, /* Binary format info */
{"0%lo", "0", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"$%lx", "$", "x", ""}, /* Hex format info */
pascal_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */

View File

@ -796,23 +796,18 @@ pa64_sharedlibrary_info_command (char *ignore, int from_tty)
if (so_list->loaded == 0)
printf_unfiltered (" (shared library unloaded)");
printf_unfiltered (" %-18s",
local_hex_string_custom (so_list->pa64_solib_desc.linkage_ptr,
"016l"));
hex_string_custom (so_list->pa64_solib_desc.linkage_ptr, 16));
printf_unfiltered ("\n");
printf_unfiltered ("%-18s",
local_hex_string_custom (so_list->pa64_solib_desc.text_base,
"016l"));
hex_string_custom (so_list->pa64_solib_desc.text_base, 16));
printf_unfiltered (" %-18s",
local_hex_string_custom ((so_list->pa64_solib_desc.text_base
+ so_list->pa64_solib_desc.text_size),
"016l"));
hex_string_custom ((so_list->pa64_solib_desc.text_base
+ so_list->pa64_solib_desc.text_size), 16));
printf_unfiltered (" %-18s",
local_hex_string_custom (so_list->pa64_solib_desc.data_base,
"016l"));
hex_string_custom (so_list->pa64_solib_desc.data_base, 16));
printf_unfiltered (" %-18s\n",
local_hex_string_custom ((so_list->pa64_solib_desc.data_base
+ so_list->pa64_solib_desc.data_size),
"016l"));
hex_string_custom ((so_list->pa64_solib_desc.data_base
+ so_list->pa64_solib_desc.data_size), 16));
so_list = so_list->next;
}
}

View File

@ -499,9 +499,7 @@ print_scalar_formatted (void *valaddr, struct type *type, int format, int size,
if (*cp == '\0')
cp--;
}
strcpy (buf, local_binary_format_prefix ());
strcat (buf, cp);
strcat (buf, local_binary_format_suffix ());
strcpy (buf, cp);
fputs_filtered (buf, stream);
}
break;

View File

@ -566,7 +566,7 @@ vx_run_files_info (void)
{
printf_unfiltered ("\tRunning %s VxWorks process %s",
vx_running ? "child" : "attached",
local_hex_string (PIDGET (inferior_ptid)));
hex_string (PIDGET (inferior_ptid)));
if (vx_running)
printf_unfiltered (", function `%s'", vx_running);
printf_unfiltered (".\n");
@ -972,7 +972,7 @@ vx_wait (ptid_t ptid_to_wait_for, struct target_waitstatus *status)
else if (pid != PIDGET (inferior_ptid))
internal_error (__FILE__, __LINE__,
"Bad pid for debugged task: %s\n",
local_hex_string ((unsigned long) pid));
hex_string ((unsigned long) pid));
}
while (pid == 0);
@ -1183,7 +1183,7 @@ vx_attach (char *args, int from_tty)
if (from_tty)
printf_unfiltered ("Attaching pid %s.\n",
local_hex_string ((unsigned long) pid));
hex_string ((unsigned long) pid));
memset ((char *) &ptrace_in, '\0', sizeof (ptrace_in));
memset ((char *) &ptrace_out, '\0', sizeof (ptrace_out));
@ -1230,7 +1230,7 @@ vx_detach (char *args, int from_tty)
if (from_tty)
printf_unfiltered ("Detaching pid %s.\n",
local_hex_string (
hex_string (
(unsigned long) PIDGET (inferior_ptid)));
if (args) /* FIXME, should be possible to leave suspended */
@ -1262,7 +1262,8 @@ vx_kill (void)
Ptrace_return ptrace_out;
int status;
printf_unfiltered ("Killing pid %s.\n", local_hex_string ((unsigned long) PIDGET (inferior_ptid)));
printf_unfiltered ("Killing pid %s.\n",
hex_string ((unsigned long) PIDGET (inferior_ptid)));
memset ((char *) &ptrace_in, '\0', sizeof (ptrace_in));
memset ((char *) &ptrace_out, '\0', sizeof (ptrace_out));

View File

@ -33,7 +33,6 @@
#include "gdb-stabs.h"
#include "regcache.h"
#include "arch-utils.h"
#include "language.h" /* for local_hex_string(). */
#include "ppc-tdep.h"
#include "exec.h"
@ -1229,7 +1228,7 @@ find_toc_address (CORE_ADDR pc)
: vp->objfile);
}
}
error ("Unable to find TOC entry for pc %s\n", local_hex_string (pc));
error ("Unable to find TOC entry for pc %s\n", hex_string (pc));
}
/* Register that we are able to handle rs6000 core file formats. */

View File

@ -266,10 +266,6 @@ const struct language_defn scm_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */
{"", "", "", ""}, /* Binary format info */
{"#o%lo", "#o", "o", ""}, /* Octal format info */
{"%ld", "", "d", ""}, /* Decimal format info */
{"#x%lX", "#X", "X", ""}, /* Hex format info */
NULL, /* expression operators for printing */
1, /* c-style arrays */
0, /* String lower bound */

View File

@ -375,7 +375,7 @@ lm_base (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"lm_base: _GLOBAL_OFFSET_TABLE_ + 8 = %s\n",
local_hex_string_custom (addr, "08l"));
hex_string_custom (addr, 8));
if (target_read_memory (addr, buf, sizeof buf) != 0)
return 0;
@ -384,7 +384,7 @@ lm_base (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"lm_base: lm_base_cache = %s\n",
local_hex_string_custom (lm_base_cache, "08l"));
hex_string_custom (lm_base_cache, 8));
return lm_base_cache;
}
@ -431,7 +431,7 @@ frv_current_sos (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"current_sos: reading link_map entry at %s\n",
local_hex_string_custom (lm_addr, "08l"));
hex_string_custom (lm_addr, 8));
if (target_read_memory (lm_addr, (char *) &lm_buf, sizeof (lm_buf)) != 0)
{
@ -670,14 +670,13 @@ enable_break2 (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"enable_break: interp_loadmap_addr = %s\n",
local_hex_string_custom (interp_loadmap_addr,
"08l"));
hex_string_custom (interp_loadmap_addr, 8));
ldm = fetch_loadmap (interp_loadmap_addr);
if (ldm == NULL)
{
warning ("Unable to load dynamic linker loadmap at address %s\n",
local_hex_string_custom (interp_loadmap_addr, "08l"));
hex_string_custom (interp_loadmap_addr, 8));
enable_break_failure_warning ();
bfd_close (tmp_bfd);
return 0;
@ -718,20 +717,20 @@ enable_break2 (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"enable_break: _dl_debug_addr (prior to relocation) = %s\n",
local_hex_string_custom (addr, "08l"));
hex_string_custom (addr, 8));
addr += displacement_from_map (ldm, addr);
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"enable_break: _dl_debug_addr (after relocation) = %s\n",
local_hex_string_custom (addr, "08l"));
hex_string_custom (addr, 8));
/* Fetch the address of the r_debug struct. */
if (target_read_memory (addr, addr_buf, sizeof addr_buf) != 0)
{
warning ("Unable to fetch contents of _dl_debug_addr (at address %s) from dynamic linker",
local_hex_string_custom (addr, "08l"));
hex_string_custom (addr, 8));
}
addr = extract_unsigned_integer (addr_buf, sizeof addr_buf);
@ -740,7 +739,7 @@ enable_break2 (void)
if (target_read_memory (addr + 8, addr_buf, sizeof addr_buf) != 0)
{
warning ("Unable to fetch _dl_debug_addr->r_brk (at address %s) from dynamic linker",
local_hex_string_custom (addr + 8, "08l"));
hex_string_custom (addr + 8, 8));
enable_break_failure_warning ();
bfd_close (tmp_bfd);
return 0;
@ -751,7 +750,7 @@ enable_break2 (void)
if (target_read_memory (addr, addr_buf, sizeof addr_buf) != 0)
{
warning ("Unable to fetch _dl_debug_addr->.r_brk entry point (at address %s) from dynamic linker",
local_hex_string_custom (addr, "08l"));
hex_string_custom (addr, 8));
enable_break_failure_warning ();
bfd_close (tmp_bfd);
return 0;
@ -799,8 +798,8 @@ enable_break (void)
if (solib_frv_debug)
fprintf_unfiltered (gdb_stdlog,
"enable_break: solib event breakpoint placed at entry point: %s\n",
local_hex_string_custom
(symfile_objfile->ei.entry_point, "08l"));
hex_string_custom
(symfile_objfile->ei.entry_point, 8));
}
else
{

View File

@ -645,18 +645,11 @@ info_sharedlibrary_command (char *ignore, int from_tty)
struct so_list *so = NULL; /* link map state variable */
int header_done = 0;
int addr_width;
char *addr_fmt;
if (TARGET_PTR_BIT == 32)
{
addr_width = 8 + 4;
addr_fmt = "08l";
}
addr_width = 8 + 4;
else if (TARGET_PTR_BIT == 64)
{
addr_width = 16 + 4;
addr_fmt = "016l";
}
addr_width = 16 + 4;
else
{
internal_error (__FILE__, __LINE__,
@ -680,15 +673,15 @@ info_sharedlibrary_command (char *ignore, int from_tty)
printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL
? local_hex_string_custom (
? hex_string_custom (
(LONGEST) so->textsection->addr,
addr_fmt)
addr_width - 4)
: "");
printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL
? local_hex_string_custom (
? hex_string_custom (
(LONGEST) so->textsection->endaddr,
addr_fmt)
addr_width - 4)
: "");
printf_unfiltered ("%-12s", so->symbols_loaded ? "Yes" : "No");
printf_unfiltered ("%s\n", so->so_name);

View File

@ -1463,17 +1463,17 @@ som_sharedlibrary_info_command (char *ignore, int from_tty)
if (so_list->objfile == NULL)
printf_unfiltered (" (symbols not loaded)");
printf_unfiltered ("\n");
printf_unfiltered (" %-12s", local_hex_string_custom (flags, "08l"));
printf_unfiltered (" %-12s", hex_string_custom (flags, 8));
printf_unfiltered ("%-12s",
local_hex_string_custom (so_list->som_solib.text_addr, "08l"));
hex_string_custom (so_list->som_solib.text_addr, 8));
printf_unfiltered ("%-12s",
local_hex_string_custom (so_list->som_solib.text_end, "08l"));
hex_string_custom (so_list->som_solib.text_end, 8));
printf_unfiltered ("%-12s",
local_hex_string_custom (so_list->som_solib.data_start, "08l"));
hex_string_custom (so_list->som_solib.data_start, 8));
printf_unfiltered ("%-12s",
local_hex_string_custom (so_list->som_solib.data_end, "08l"));
hex_string_custom (so_list->som_solib.data_end, 8));
printf_unfiltered ("%-12s\n",
local_hex_string_custom (so_list->som_solib.got_value, "08l"));
hex_string_custom (so_list->som_solib.got_value, 8));
so_list = so_list->next;
}
}

View File

@ -1742,7 +1742,7 @@ add_symbol_file_command (char *args, int from_tty)
/* Print the prompt for the query below. And save the arguments into
a sect_addr_info structure to be passed around to other
functions. We have to split this up into separate print
statements because local_hex_string returns a local static
statements because hex_string returns a local static
string. */
printf_unfiltered ("add symbol table from file \"%s\" at\n", filename);
@ -1761,8 +1761,7 @@ add_symbol_file_command (char *args, int from_tty)
section_addrs->other[sec_num].name = sec;
section_addrs->other[sec_num].addr = addr;
printf_unfiltered ("\t%s_addr = %s\n",
sec,
local_hex_string ((unsigned long)addr));
sec, hex_string ((unsigned long)addr));
sec_num++;
/* The object's sections are initialized when a

View File

@ -3136,12 +3136,12 @@ print_msymbol_info (struct minimal_symbol *msymbol)
char *tmp;
if (TARGET_ADDR_BIT <= 32)
tmp = local_hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol)
& (CORE_ADDR) 0xffffffff,
"08l");
tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol)
& (CORE_ADDR) 0xffffffff,
8);
else
tmp = local_hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol),
"016l");
tmp = hex_string_custom (SYMBOL_VALUE_ADDRESS (msymbol),
16);
printf_filtered ("%s %s\n",
tmp, SYMBOL_PRINT_NAME (msymbol));
}

View File

@ -494,11 +494,10 @@ tracepoints_info (char *tpnum_exp, int from_tty)
char *tmp;
if (TARGET_ADDR_BIT <= 32)
tmp = local_hex_string_custom (t->address
& (CORE_ADDR) 0xffffffff,
"08l");
tmp = hex_string_custom (t->address & (CORE_ADDR) 0xffffffff,
8);
else
tmp = local_hex_string_custom (t->address, "016l");
tmp = hex_string_custom (t->address, 16);
printf_filtered ("%s ", tmp);
}

View File

@ -496,9 +496,9 @@ ui_out_field_core_addr (struct ui_out *uiout,
based on TARGET_ADDR_BIT. */
/* print_address_numeric (address, 1, local_stream); */
if (TARGET_ADDR_BIT <= 32)
strcpy (addstr, local_hex_string_custom (address, "08l"));
strcpy (addstr, hex_string_custom (address, 8));
else
strcpy (addstr, local_hex_string_custom (address, "016l"));
strcpy (addstr, hex_string_custom (address, 16));
ui_out_field_string (uiout, fldname, addstr);
}

View File

@ -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)

View File

@ -209,202 +209,52 @@ val_print_type_code_int (struct type *type, char *valaddr,
/* Print a number according to FORMAT which is one of d,u,x,o,b,h,w,g.
The raison d'etre of this function is to consolidate printing of
LONG_LONG's into this one function. Some platforms have long longs but
don't have a printf() that supports "ll" in the format string. We handle
these by seeing if the number is representable as either a signed or
unsigned long, depending upon what format is desired, and if not we just
bail out and print the number in hex.
LONG_LONG's into this one function. The format chars b,h,w,g are
from print_scalar_formatted(). Numbers are printed using C
format.
The format chars b,h,w,g are from print_scalar_formatted(). If USE_LOCAL,
format it according to the current language (this should be used for most
integers which GDB prints, the exception is things like protocols where
the format of the integer is a protocol thing, not a user-visible thing).
*/
#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
static void print_decimal (struct ui_file * stream, char *sign,
int use_local, ULONGEST val_ulong);
static void
print_decimal (struct ui_file *stream, char *sign, int use_local,
ULONGEST val_ulong)
{
unsigned long temp[3];
int i = 0;
do
{
temp[i] = val_ulong % (1000 * 1000 * 1000);
val_ulong /= (1000 * 1000 * 1000);
i++;
}
while (val_ulong != 0 && i < (sizeof (temp) / sizeof (temp[0])));
switch (i)
{
case 1:
fprintf_filtered (stream, "%s%lu",
sign, temp[0]);
break;
case 2:
fprintf_filtered (stream, "%s%lu%09lu",
sign, temp[1], temp[0]);
break;
case 3:
fprintf_filtered (stream, "%s%lu%09lu%09lu",
sign, temp[2], temp[1], temp[0]);
break;
default:
internal_error (__FILE__, __LINE__, "failed internal consistency check");
}
return;
}
#endif
USE_C_FORMAT means to use C format in all cases. Without it,
'o' and 'x' format do not include the standard C radix prefix
(leading 0 or 0x).
Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
and was intended to request formating according to the current
language and would be used for most integers that GDB prints. The
exceptional cases were things like protocols where the format of
the integer is a protocol thing, not a user-visible thing). The
parameter remains to preserve the information of what things might
be printed with language-specific format, should we ever resurrect
that capability. */
void
print_longest (struct ui_file *stream, int format, int use_local,
print_longest (struct ui_file *stream, int format, int use_c_format,
LONGEST val_long)
{
#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG)
if (sizeof (long) < sizeof (LONGEST))
{
switch (format)
{
case 'd':
{
/* Print a signed value, that doesn't fit in a long */
if ((long) val_long != val_long)
{
if (val_long < 0)
print_decimal (stream, "-", use_local, -val_long);
else
print_decimal (stream, "", use_local, val_long);
return;
}
break;
}
case 'u':
{
/* Print an unsigned value, that doesn't fit in a long */
if ((unsigned long) val_long != (ULONGEST) val_long)
{
print_decimal (stream, "", use_local, val_long);
return;
}
break;
}
case 'x':
case 'o':
case 'b':
case 'h':
case 'w':
case 'g':
/* Print as unsigned value, must fit completely in unsigned long */
{
unsigned long temp = val_long;
if (temp != val_long)
{
/* Urk, can't represent value in long so print in hex.
Do shift in two operations so that if sizeof (long)
== sizeof (LONGEST) we can avoid warnings from
picky compilers about shifts >= the size of the
shiftee in bits */
unsigned long vbot = (unsigned long) val_long;
LONGEST temp = (val_long >> (sizeof (long) * HOST_CHAR_BIT - 1));
unsigned long vtop = temp >> 1;
fprintf_filtered (stream, "0x%lx%08lx", vtop, vbot);
return;
}
break;
}
}
}
#endif
#if defined (CC_HAS_LONG_LONG) && defined (PRINTF_HAS_LONG_LONG)
char *val;
switch (format)
{
case 'd':
fprintf_filtered (stream,
use_local ? local_decimal_format_custom ("ll")
: "%lld",
(long long) val_long);
break;
val = int_string (val_long, 10, 1, 0, 1); break;
case 'u':
fprintf_filtered (stream, "%llu", (long long) val_long);
break;
val = int_string (val_long, 10, 0, 0, 1); break;
case 'x':
fprintf_filtered (stream,
use_local ? local_hex_format_custom ("ll")
: "%llx",
(unsigned long long) val_long);
val = int_string (val_long, 16, 0, 0, use_c_format); break;
case 'b':
val = int_string (val_long, 16, 0, 2, 1); break;
case 'h':
val = int_string (val_long, 16, 0, 4, 1); break;
case 'w':
val = int_string (val_long, 16, 0, 8, 1); break;
case 'g':
val = int_string (val_long, 16, 0, 16, 1); break;
break;
case 'o':
fprintf_filtered (stream,
use_local ? local_octal_format_custom ("ll")
: "%llo",
(unsigned long long) val_long);
break;
case 'b':
fprintf_filtered (stream, local_hex_format_custom ("02ll"), val_long);
break;
case 'h':
fprintf_filtered (stream, local_hex_format_custom ("04ll"), val_long);
break;
case 'w':
fprintf_filtered (stream, local_hex_format_custom ("08ll"), val_long);
break;
case 'g':
fprintf_filtered (stream, local_hex_format_custom ("016ll"), val_long);
break;
val = int_string (val_long, 8, 0, 0, use_c_format); break;
default:
internal_error (__FILE__, __LINE__, "failed internal consistency check");
}
#else /* !CC_HAS_LONG_LONG || !PRINTF_HAS_LONG_LONG */
/* In the following it is important to coerce (val_long) to a long. It does
nothing if !LONG_LONG, but it will chop off the top half (which we know
we can ignore) if the host supports long longs. */
}
switch (format)
{
case 'd':
fprintf_filtered (stream,
use_local ? local_decimal_format_custom ("l")
: "%ld",
(long) val_long);
break;
case 'u':
fprintf_filtered (stream, "%lu", (unsigned long) val_long);
break;
case 'x':
fprintf_filtered (stream,
use_local ? local_hex_format_custom ("l")
: "%lx",
(unsigned long) val_long);
break;
case 'o':
fprintf_filtered (stream,
use_local ? local_octal_format_custom ("l")
: "%lo",
(unsigned long) val_long);
break;
case 'b':
fprintf_filtered (stream, local_hex_format_custom ("02l"),
(unsigned long) val_long);
break;
case 'h':
fprintf_filtered (stream, local_hex_format_custom ("04l"),
(unsigned long) val_long);
break;
case 'w':
fprintf_filtered (stream, local_hex_format_custom ("08l"),
(unsigned long) val_long);
break;
case 'g':
fprintf_filtered (stream, local_hex_format_custom ("016l"),
(unsigned long) val_long);
break;
default:
internal_error (__FILE__, __LINE__, "failed internal consistency check");
}
#endif /* CC_HAS_LONG_LONG || PRINTF_HAS_LONG_LONG */
fprintf_filtered (stream, val);
}
/* This used to be a macro, but I don't think it is called often enough
@ -449,9 +299,8 @@ print_floating (char *valaddr, struct type *type, struct ui_file *stream)
if (floatformat_is_negative (fmt, valaddr))
fprintf_filtered (stream, "-");
fprintf_filtered (stream, "nan(");
fputs_filtered (local_hex_format_prefix (), stream);
fputs_filtered ("0x", stream);
fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
fputs_filtered (local_hex_format_suffix (), stream);
fprintf_filtered (stream, ")");
return;
}
@ -512,7 +361,6 @@ print_binary_chars (struct ui_file *stream, unsigned char *valaddr,
/* FIXME: We should be not printing leading zeroes in most cases. */
fputs_filtered (local_binary_format_prefix (), stream);
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
for (p = valaddr;
@ -550,7 +398,6 @@ print_binary_chars (struct ui_file *stream, unsigned char *valaddr,
}
}
}
fputs_filtered (local_binary_format_suffix (), stream);
}
/* VALADDR points to an integer of LEN bytes.
@ -599,7 +446,7 @@ print_octal_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
carry = 0;
fputs_filtered (local_octal_format_prefix (), stream);
fputs_filtered ("0", stream);
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
for (p = valaddr;
@ -698,7 +545,6 @@ print_octal_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
}
}
fputs_filtered (local_octal_format_suffix (), stream);
}
/* VALADDR points to an integer of LEN bytes.
@ -741,8 +587,6 @@ print_decimal_chars (struct ui_file *stream, unsigned char *valaddr,
digits[i] = 0;
}
fputs_filtered (local_decimal_format_prefix (), stream);
/* Ok, we have an unknown number of bytes of data to be printed in
* decimal.
*
@ -837,8 +681,6 @@ print_decimal_chars (struct ui_file *stream, unsigned char *valaddr,
fprintf_filtered (stream, "%1d", digits[i]);
}
xfree (digits);
fputs_filtered (local_decimal_format_suffix (), stream);
}
/* VALADDR points to an integer of LEN bytes. Print it in hex on stream. */
@ -850,7 +692,7 @@ print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
/* FIXME: We should be not printing leading zeroes in most cases. */
fputs_filtered (local_hex_format_prefix (), stream);
fputs_filtered ("0x", stream);
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{
for (p = valaddr;
@ -869,7 +711,6 @@ print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
fprintf_filtered (stream, "%02x", *p);
}
}
fputs_filtered (local_hex_format_suffix (), stream);
}
/* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.