* 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) 2004-09-10 Jason Molenda (jmolenda@apple.com)
* cli/cli-script.c (read_next_line): Accept zero or more whitespace * 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 */ basic_lookup_transparent_type, /* lookup_transparent_type */
ada_la_decode, /* Language specific symbol demangler */ ada_la_decode, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ ada_op_print_tab, /* expression operators for printing */
0, /* c-style arrays */ 0, /* c-style arrays */
1, /* String lower bound */ 1, /* String lower bound */

View File

@ -48,7 +48,6 @@
#include "inferior.h" #include "inferior.h"
#include "regcache.h" #include "regcache.h"
#include "gdbcmd.h" #include "gdbcmd.h"
#include "language.h" /* for local_hex_string() */
#include "ppc-tdep.h" #include "ppc-tdep.h"
#include "gdb_string.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) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, " symbols[%d].addr = %s\n", 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) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, " returning PDC_SUCCESS\n"); fprintf_unfiltered (gdb_stdlog, " returning PDC_SUCCESS\n");
@ -347,7 +346,7 @@ pdc_read_regs (pthdb_user_t user,
if (debug_aix_thread) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, "pdc_read_regs tid=%d flags=%s\n", 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. */ /* General-purpose registers. */
if (flags & PTHDB_FLAG_GPRS) if (flags & PTHDB_FLAG_GPRS)
@ -413,7 +412,7 @@ pdc_write_regs (pthdb_user_t user,
if (debug_aix_thread) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, "pdc_write_regs tid=%d flags=%s\n", 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. */ /* General-purpose registers. */
if (flags & PTHDB_FLAG_GPRS) if (flags & PTHDB_FLAG_GPRS)
@ -458,7 +457,7 @@ pdc_read_data (pthdb_user_t user, void *buf,
if (debug_aix_thread) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, fprintf_unfiltered (gdb_stdlog,
"pdc_read_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n", "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); status = target_read_memory (addr, buf, len);
ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE; ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE;
@ -480,7 +479,7 @@ pdc_write_data (pthdb_user_t user, void *buf,
if (debug_aix_thread) if (debug_aix_thread)
fprintf_unfiltered (gdb_stdlog, fprintf_unfiltered (gdb_stdlog,
"pdc_write_data (user = %ld, buf = 0x%lx, addr = %s, len = %ld)\n", "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); status = target_write_memory (addr, buf, len);
ret = status == 0 ? PDC_SUCCESS : PDC_FAILURE; 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 astr1[40];
char astr2[40]; char astr2[40];
strcpy (astr1, local_hex_string_custom ((unsigned long) from_addr, "08l")); strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
strcpy (astr2, local_hex_string_custom ((unsigned long) to_addr, "08l")); strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
if (have_bnum) if (have_bnum)
warning ("Breakpoint %d address previously adjusted from %s to %s.", warning ("Breakpoint %d address previously adjusted from %s to %s.",
bnum, astr1, astr2); bnum, astr1, astr2);

View File

@ -38,7 +38,6 @@
#include "complaints.h" #include "complaints.h"
#include "gdb_string.h" #include "gdb_string.h"
#include "expression.h" /* For "enum exp_opcode" used by... */ #include "expression.h" /* For "enum exp_opcode" used by... */
#include "language.h" /* For "local_hex_string" */
#include "bcache.h" #include "bcache.h"
#include "filenames.h" /* For DOSish file names */ #include "filenames.h" /* For DOSish file names */
#include "macrotab.h" #include "macrotab.h"
@ -521,7 +520,7 @@ make_blockvector (struct objfile *objfile)
= BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i)); = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
complaint (&symfile_complaints, "block at %s out of order", 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 */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */
@ -650,10 +646,6 @@ const struct language_defn cplus_language_defn =
cp_lookup_transparent_type, /* lookup_transparent_type */ cp_lookup_transparent_type, /* lookup_transparent_type */
cplus_demangle, /* Language specific symbol demangler */ cplus_demangle, /* Language specific symbol demangler */
cp_class_name_from_physname, /* Language specific class_name_from_physname */ 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 */ c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */
@ -689,10 +681,6 @@ const struct language_defn asm_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */
@ -733,10 +721,6 @@ const struct language_defn minimal_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ c_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */

View File

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

View File

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

View File

@ -54,7 +54,6 @@
#include "stabsread.h" #include "stabsread.h"
#include "gdb-stabs.h" #include "gdb-stabs.h"
#include "demangle.h" #include "demangle.h"
#include "language.h" /* Needed for local_hex_string */
#include "complaints.h" #include "complaints.h"
#include "cp-abi.h" #include "cp-abi.h"
#include "gdb_assert.h" #include "gdb_assert.h"
@ -2097,7 +2096,7 @@ read_dbx_symtab (struct objfile *objfile)
default: default:
/* If we haven't found it yet, ignore it. It's probably some /* If we haven't found it yet, ignore it. It's probably some
new type we don't know about yet. */ 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; continue;
} }
} }
@ -3038,7 +3037,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
case N_NBBSS: case N_NBBSS:
case N_NBSTS: case N_NBSTS:
case N_NBLCS: case N_NBLCS:
unknown_symtype_complaint (local_hex_string (type)); unknown_symtype_complaint (hex_string (type));
/* FALLTHROUGH */ /* FALLTHROUGH */
/* The following symbol types don't need the address field relocated, /* 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 (ULONGEST l, int sizeof_l);
extern char *phex_nz (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 /* Like paddr() only print/scan raw CORE_ADDR. The output from
core_addr_to_string() can be passed direct to 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) print_section_info (struct target_ops *t, bfd *abfd)
{ {
struct section_table *p; struct section_table *p;
/* FIXME: "016l" is not wide enough when TARGET_ADDR_BIT > 64. */ /* FIXME: 16 is not wide enough when TARGET_ADDR_BIT > 64. */
char *fmt = TARGET_ADDR_BIT <= 32 ? "08l" : "016l"; int wid = TARGET_ADDR_BIT <= 32 ? 8 : 16;
printf_filtered ("\t`%s', ", bfd_get_filename (abfd)); printf_filtered ("\t`%s', ", bfd_get_filename (abfd));
wrap_here (" "); 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++) for (p = t->to_sections; p < t->to_sections_end; p++)
{ {
printf_filtered ("\t%s", local_hex_string_custom (p->addr, fmt)); printf_filtered ("\t%s", hex_string_custom (p->addr, wid));
printf_filtered (" - %s", local_hex_string_custom (p->endaddr, fmt)); printf_filtered (" - %s", hex_string_custom (p->endaddr, wid));
/* FIXME: A format of "08l" is not wide enough for file offsets /* FIXME: A format of "08l" is not wide enough for file offsets
larger than 4GB. OTOH, making it "016l" isn't desirable either 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. */ format string accordingly. */
if (info_verbose) if (info_verbose)
printf_filtered (" @ %s", 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)); printf_filtered (" is %s", bfd_section_name (p->bfd, p->the_bfd_section));
if (p->bfd != abfd) if (p->bfd != abfd)
{ {

View File

@ -480,10 +480,6 @@ const struct language_defn f_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ f_op_print_tab, /* expression operators for printing */
0, /* arrays are first-class (not c-style) */ 0, /* arrays are first-class (not c-style) */
1, /* String lower bound */ 1, /* String lower bound */

View File

@ -121,7 +121,7 @@ static void
print_i387_status_word (unsigned int status, struct ui_file *file) print_i387_status_word (unsigned int status, struct ui_file *file)
{ {
fprintf_filtered (file, "Status Word: %s", fprintf_filtered (file, "Status Word: %s",
local_hex_string_custom (status, "04")); hex_string_custom (status, 4));
fputs_filtered (" ", file); fputs_filtered (" ", file);
fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " "); fprintf_filtered (file, " %s", (status & 0x0001) ? "IE" : " ");
fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " "); fprintf_filtered (file, " %s", (status & 0x0002) ? "DE" : " ");
@ -151,7 +151,7 @@ static void
print_i387_control_word (unsigned int control, struct ui_file *file) print_i387_control_word (unsigned int control, struct ui_file *file)
{ {
fprintf_filtered (file, "Control Word: %s", fprintf_filtered (file, "Control Word: %s",
local_hex_string_custom (control, "04")); hex_string_custom (control, 4));
fputs_filtered (" ", file); fputs_filtered (" ", file);
fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " "); fprintf_filtered (file, " %s", (control & 0x0001) ? "IM" : " ");
fprintf_filtered (file, " %s", (control & 0x0002) ? "DM" : " "); 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_status_word (fstat, file);
print_i387_control_word (fctrl, file); print_i387_control_word (fctrl, file);
fprintf_filtered (file, "Tag Word: %s\n", fprintf_filtered (file, "Tag Word: %s\n",
local_hex_string_custom (ftag, "04")); hex_string_custom (ftag, 4));
fprintf_filtered (file, "Instruction Pointer: %s:", fprintf_filtered (file, "Instruction Pointer: %s:",
local_hex_string_custom (fiseg, "02")); hex_string_custom (fiseg, 2));
fprintf_filtered (file, "%s\n", local_hex_string_custom (fioff, "08")); fprintf_filtered (file, "%s\n", hex_string_custom (fioff, 8));
fprintf_filtered (file, "Operand Pointer: %s:", fprintf_filtered (file, "Operand Pointer: %s:",
local_hex_string_custom (foseg, "02")); hex_string_custom (foseg, 2));
fprintf_filtered (file, "%s\n", local_hex_string_custom (fooff, "08")); fprintf_filtered (file, "%s\n", hex_string_custom (fooff, 8));
fprintf_filtered (file, "Opcode: %s\n", 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 #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 /* Can't use a cleanup here. It is discarded, instead use
an alloca. */ 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); char *a = alloca (strlen (tmp) + 1);
strcpy (a, tmp); strcpy (a, tmp);
xfree (tmp); xfree (tmp);

View File

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

View File

@ -1106,10 +1106,6 @@ const struct language_defn java_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
java_demangle, /* Language specific symbol demangler */ java_demangle, /* Language specific symbol demangler */
java_class_name_from_physname,/* Language specific class name */ 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 */ java_op_print_tab, /* expression operators for printing */
0, /* not c-style arrays */ 0, /* not c-style arrays */
0, /* String lower bound */ 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 /* This page contains functions that return format strings for
printf for printing out numbers in different formats */ printf for printing out numbers in different formats */
/* Returns the appropriate printf format for hexadecimal #define MAX_NUM_STRING_LEN 50
numbers. */
char *
local_hex_format_custom (char *pre)
{
static char form[50];
strcpy (form, local_hex_format_prefix ()); /* Converts a LONGEST to a C-format hexadecimal literal and stores it in
strcat (form, "%"); a static string. Returns a pointer to this string. */
strcat (form, pre); char *
strcat (form, local_hex_format_specifier ()); hex_string (LONGEST num)
strcat (form, local_hex_format_suffix ()); {
return form; 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 /* Converts a LONGEST number to a C-format hexadecimal literal and stores
string. Returns a pointer to this string. */ it in a static string. Returns a pointer to this string that is
char * valid until the next call. The number is padded on the left with
local_hex_string (LONGEST num) 0s to at least WIDTH characters. */
{
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 */
char * char *
local_hex_string_custom (LONGEST num, char *width) hex_string_custom (LONGEST num, int width)
{ {
#define RESULT_BUF_LEN 50 static char result[MAX_NUM_STRING_LEN];
static char res2[RESULT_BUF_LEN]; char *result_end = result + MAX_NUM_STRING_LEN - 1;
char format[RESULT_BUF_LEN]; const char* hex = phex_nz (num, sizeof (num));
int field_width; int hex_len = strlen (hex);
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];
/* Use phex_nz to print the number into a string, then if (hex_len > width)
build the result string from local_hex_format_prefix, padding and width = hex_len;
the hex representation as indicated by "width". */ if (width + 2 >= MAX_NUM_STRING_LEN)
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 */
internal_error (__FILE__, __LINE__, 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 ()); strcpy (result_end - width - 2, "0x");
if (pad_on_left) memset (result_end - width, '0', width);
{ strcpy (result_end - hex_len, hex);
while (num_pad_chars > 0) return result_end - width - 2;
{
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;
} }
#if 0 #if 0
@ -1313,10 +1230,6 @@ const struct language_defn unknown_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */ unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */ 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 */ unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */
@ -1353,10 +1266,6 @@ const struct language_defn auto_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */ unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */ 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 */ unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */
@ -1392,10 +1301,6 @@ const struct language_defn local_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
unk_lang_demangle, /* Language specific symbol demangler */ unk_lang_demangle, /* Language specific symbol demangler */
unk_lang_class_name, /* Language specific class_name_from_physname */ 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 */ unk_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */

View File

@ -117,37 +117,6 @@ extern enum case_sensitivity
} }
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. */ /* Per architecture (OS/ABI) language information. */
struct language_arch_info struct language_arch_info
@ -284,22 +253,6 @@ struct language_defn
/* Return class name of a mangled method name or NULL. */ /* Return class name of a mangled method name or NULL. */
char *(*la_class_name_from_physname) (const char *physname); 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 */ /* Table for printing expressions */
const struct op_print *la_op_print_tab; 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) \ #define LA_VALUE_PRINT(val,stream,fmt,pretty) \
(current_language->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) \ #define LA_PRINT_CHAR(ch, stream) \
(current_language->la_printchar(ch, stream)) (current_language->la_printchar(ch, stream))
#define LA_PRINT_STRING(stream, string, length, width, force_ellipses) \ #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) \ && ((c) < 0x7F || (c) >= 0xA0) \
&& (!sevenbit_strings || (c) < 0x80)) && (!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 #if 0
/* FIXME: cagney/2000-03-04: This function does not appear to be used. /* FIXME: cagney/2000-03-04: This function does not appear to be used.
It can be deleted once 5.0 has been released. */ 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); extern char *longest_raw_hex_string (LONGEST);
#endif #endif
/* Return a string that contains a number formatted in one of the local /* Return a string that contains a number formatted as a hex string */
(language-specific) formats. Result is static and is overwritten by
the next call. Takes printf options like "08l" or "l". */
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 */ /* Type predicates */

View File

@ -433,10 +433,6 @@ const struct language_defn m2_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ m2_op_print_tab, /* expression operators for printing */
0, /* arrays are first-class (not c-style) */ 0, /* arrays are first-class (not c-style) */
0, /* String lower bound */ 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 (addr));
printf_filtered ("->0x%s", paddr (endaddr)); printf_filtered ("->0x%s", paddr (endaddr));
printf_filtered (" at %s", printf_filtered (" at %s",
local_hex_string_custom ((unsigned long) filepos, "08l")); hex_string_custom ((unsigned long) filepos, 8));
printf_filtered (": %s", name); printf_filtered (": %s", name);
print_bfd_flags (flags); print_bfd_flags (flags);
printf_filtered ("\n"); printf_filtered ("\n");

View File

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

View File

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

View File

@ -677,10 +677,6 @@ const struct language_defn objc_language_defn = {
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
objc_demangle, /* Language specific symbol demangler */ objc_demangle, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ objc_op_print_tab, /* Expression operators for printing */
1, /* C-style arrays */ 1, /* C-style arrays */
0, /* String lower bound */ 0, /* String lower bound */

View File

@ -469,10 +469,6 @@ const struct language_defn pascal_language_defn =
basic_lookup_transparent_type,/* lookup_transparent_type */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ pascal_op_print_tab, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */

View File

@ -796,23 +796,18 @@ pa64_sharedlibrary_info_command (char *ignore, int from_tty)
if (so_list->loaded == 0) if (so_list->loaded == 0)
printf_unfiltered (" (shared library unloaded)"); printf_unfiltered (" (shared library unloaded)");
printf_unfiltered (" %-18s", printf_unfiltered (" %-18s",
local_hex_string_custom (so_list->pa64_solib_desc.linkage_ptr, hex_string_custom (so_list->pa64_solib_desc.linkage_ptr, 16));
"016l"));
printf_unfiltered ("\n"); printf_unfiltered ("\n");
printf_unfiltered ("%-18s", printf_unfiltered ("%-18s",
local_hex_string_custom (so_list->pa64_solib_desc.text_base, hex_string_custom (so_list->pa64_solib_desc.text_base, 16));
"016l"));
printf_unfiltered (" %-18s", printf_unfiltered (" %-18s",
local_hex_string_custom ((so_list->pa64_solib_desc.text_base hex_string_custom ((so_list->pa64_solib_desc.text_base
+ so_list->pa64_solib_desc.text_size), + so_list->pa64_solib_desc.text_size), 16));
"016l"));
printf_unfiltered (" %-18s", printf_unfiltered (" %-18s",
local_hex_string_custom (so_list->pa64_solib_desc.data_base, hex_string_custom (so_list->pa64_solib_desc.data_base, 16));
"016l"));
printf_unfiltered (" %-18s\n", printf_unfiltered (" %-18s\n",
local_hex_string_custom ((so_list->pa64_solib_desc.data_base hex_string_custom ((so_list->pa64_solib_desc.data_base
+ so_list->pa64_solib_desc.data_size), + so_list->pa64_solib_desc.data_size), 16));
"016l"));
so_list = so_list->next; 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') if (*cp == '\0')
cp--; cp--;
} }
strcpy (buf, local_binary_format_prefix ()); strcpy (buf, cp);
strcat (buf, cp);
strcat (buf, local_binary_format_suffix ());
fputs_filtered (buf, stream); fputs_filtered (buf, stream);
} }
break; break;

View File

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

View File

@ -33,7 +33,6 @@
#include "gdb-stabs.h" #include "gdb-stabs.h"
#include "regcache.h" #include "regcache.h"
#include "arch-utils.h" #include "arch-utils.h"
#include "language.h" /* for local_hex_string(). */
#include "ppc-tdep.h" #include "ppc-tdep.h"
#include "exec.h" #include "exec.h"
@ -1229,7 +1228,7 @@ find_toc_address (CORE_ADDR pc)
: vp->objfile); : 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. */ /* 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 */ basic_lookup_transparent_type,/* lookup_transparent_type */
NULL, /* Language specific symbol demangler */ NULL, /* Language specific symbol demangler */
NULL, /* Language specific class_name_from_physname */ 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 */ NULL, /* expression operators for printing */
1, /* c-style arrays */ 1, /* c-style arrays */
0, /* String lower bound */ 0, /* String lower bound */

View File

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

View File

@ -645,18 +645,11 @@ info_sharedlibrary_command (char *ignore, int from_tty)
struct so_list *so = NULL; /* link map state variable */ struct so_list *so = NULL; /* link map state variable */
int header_done = 0; int header_done = 0;
int addr_width; int addr_width;
char *addr_fmt;
if (TARGET_PTR_BIT == 32) if (TARGET_PTR_BIT == 32)
{ addr_width = 8 + 4;
addr_width = 8 + 4;
addr_fmt = "08l";
}
else if (TARGET_PTR_BIT == 64) else if (TARGET_PTR_BIT == 64)
{ addr_width = 16 + 4;
addr_width = 16 + 4;
addr_fmt = "016l";
}
else else
{ {
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
@ -680,15 +673,15 @@ info_sharedlibrary_command (char *ignore, int from_tty)
printf_unfiltered ("%-*s", addr_width, printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL so->textsection != NULL
? local_hex_string_custom ( ? hex_string_custom (
(LONGEST) so->textsection->addr, (LONGEST) so->textsection->addr,
addr_fmt) addr_width - 4)
: ""); : "");
printf_unfiltered ("%-*s", addr_width, printf_unfiltered ("%-*s", addr_width,
so->textsection != NULL so->textsection != NULL
? local_hex_string_custom ( ? hex_string_custom (
(LONGEST) so->textsection->endaddr, (LONGEST) so->textsection->endaddr,
addr_fmt) addr_width - 4)
: ""); : "");
printf_unfiltered ("%-12s", so->symbols_loaded ? "Yes" : "No"); printf_unfiltered ("%-12s", so->symbols_loaded ? "Yes" : "No");
printf_unfiltered ("%s\n", so->so_name); 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) if (so_list->objfile == NULL)
printf_unfiltered (" (symbols not loaded)"); printf_unfiltered (" (symbols not loaded)");
printf_unfiltered ("\n"); printf_unfiltered ("\n");
printf_unfiltered (" %-12s", local_hex_string_custom (flags, "08l")); printf_unfiltered (" %-12s", hex_string_custom (flags, 8));
printf_unfiltered ("%-12s", 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", 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", 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", 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", 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; 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 /* Print the prompt for the query below. And save the arguments into
a sect_addr_info structure to be passed around to other a sect_addr_info structure to be passed around to other
functions. We have to split this up into separate print 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. */ string. */
printf_unfiltered ("add symbol table from file \"%s\" at\n", filename); 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].name = sec;
section_addrs->other[sec_num].addr = addr; section_addrs->other[sec_num].addr = addr;
printf_unfiltered ("\t%s_addr = %s\n", printf_unfiltered ("\t%s_addr = %s\n",
sec, sec, hex_string ((unsigned long)addr));
local_hex_string ((unsigned long)addr));
sec_num++; sec_num++;
/* The object's sections are initialized when a /* The object's sections are initialized when a

View File

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

View File

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

View File

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

View File

@ -2636,7 +2636,7 @@ paddr_nz (CORE_ADDR addr)
} }
static void 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 /* steal code from valprint.c:print_decimal(). Should this worry
about the real size of addr as the above does? */ 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); temp[i] = addr % (1000 * 1000 * 1000);
addr /= (1000 * 1000 * 1000); addr /= (1000 * 1000 * 1000);
i++; i++;
width -= 9;
} }
while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0]))); while (addr != 0 && i < (sizeof (temp) / sizeof (temp[0])));
width += 9;
if (width < 0)
width = 0;
switch (i) switch (i)
{ {
case 1: case 1:
sprintf (paddr_str, "%s%lu", sign, temp[0]); sprintf (paddr_str, "%s%0*lu", sign, width, temp[0]);
break; break;
case 2: 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; break;
case 3: 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; break;
default: default:
internal_error (__FILE__, __LINE__, internal_error (__FILE__, __LINE__,
@ -2670,7 +2712,7 @@ char *
paddr_u (CORE_ADDR addr) paddr_u (CORE_ADDR addr)
{ {
char *paddr_str = get_cell (); char *paddr_str = get_cell ();
decimal2str (paddr_str, "", addr); decimal2str (paddr_str, "", addr, 0);
return paddr_str; return paddr_str;
} }
@ -2679,9 +2721,9 @@ paddr_d (LONGEST addr)
{ {
char *paddr_str = get_cell (); char *paddr_str = get_cell ();
if (addr < 0) if (addr < 0)
decimal2str (paddr_str, "-", -addr); decimal2str (paddr_str, "-", -addr, 0);
else else
decimal2str (paddr_str, "", addr); decimal2str (paddr_str, "", addr, 0);
return paddr_str; 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. */ /* Convert a CORE_ADDR into a string. */
const char * const char *
core_addr_to_string (const CORE_ADDR addr) 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. /* 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 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 LONG_LONG's into this one function. The format chars b,h,w,g are
don't have a printf() that supports "ll" in the format string. We handle from print_scalar_formatted(). Numbers are printed using C
these by seeing if the number is representable as either a signed or format.
unsigned long, depending upon what format is desired, and if not we just
bail out and print the number in hex.
The format chars b,h,w,g are from print_scalar_formatted(). If USE_LOCAL, USE_C_FORMAT means to use C format in all cases. Without it,
format it according to the current language (this should be used for most 'o' and 'x' format do not include the standard C radix prefix
integers which GDB prints, the exception is things like protocols where (leading 0 or 0x).
the format of the integer is a protocol thing, not a user-visible thing).
*/ Hilfinger/2004-09-09: USE_C_FORMAT was originally called USE_LOCAL
and was intended to request formating according to the current
#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG) language and would be used for most integers that GDB prints. The
static void print_decimal (struct ui_file * stream, char *sign, exceptional cases were things like protocols where the format of
int use_local, ULONGEST val_ulong); the integer is a protocol thing, not a user-visible thing). The
static void parameter remains to preserve the information of what things might
print_decimal (struct ui_file *stream, char *sign, int use_local, be printed with language-specific format, should we ever resurrect
ULONGEST val_ulong) that capability. */
{
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
void 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) LONGEST val_long)
{ {
#if defined (CC_HAS_LONG_LONG) && !defined (PRINTF_HAS_LONG_LONG) char *val;
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)
switch (format) switch (format)
{ {
case 'd': case 'd':
fprintf_filtered (stream, val = int_string (val_long, 10, 1, 0, 1); break;
use_local ? local_decimal_format_custom ("ll")
: "%lld",
(long long) val_long);
break;
case 'u': case 'u':
fprintf_filtered (stream, "%llu", (long long) val_long); val = int_string (val_long, 10, 0, 0, 1); break;
break;
case 'x': case 'x':
fprintf_filtered (stream, val = int_string (val_long, 16, 0, 0, use_c_format); break;
use_local ? local_hex_format_custom ("ll") case 'b':
: "%llx", val = int_string (val_long, 16, 0, 2, 1); break;
(unsigned long long) val_long); 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; break;
case 'o': case 'o':
fprintf_filtered (stream, val = int_string (val_long, 8, 0, 0, use_c_format); break;
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;
default: default:
internal_error (__FILE__, __LINE__, "failed internal consistency check"); 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) fprintf_filtered (stream, val);
{
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 */
} }
/* This used to be a macro, but I don't think it is called often enough /* 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)) if (floatformat_is_negative (fmt, valaddr))
fprintf_filtered (stream, "-"); fprintf_filtered (stream, "-");
fprintf_filtered (stream, "nan("); fprintf_filtered (stream, "nan(");
fputs_filtered (local_hex_format_prefix (), stream); fputs_filtered ("0x", stream);
fputs_filtered (floatformat_mantissa (fmt, valaddr), stream); fputs_filtered (floatformat_mantissa (fmt, valaddr), stream);
fputs_filtered (local_hex_format_suffix (), stream);
fprintf_filtered (stream, ")"); fprintf_filtered (stream, ")");
return; 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. */ /* 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) if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{ {
for (p = valaddr; 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. /* 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; cycle = (len * BITS_IN_BYTES) % BITS_IN_OCTAL;
carry = 0; carry = 0;
fputs_filtered (local_octal_format_prefix (), stream); fputs_filtered ("0", stream);
if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG) if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{ {
for (p = valaddr; 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. /* 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; digits[i] = 0;
} }
fputs_filtered (local_decimal_format_prefix (), stream);
/* Ok, we have an unknown number of bytes of data to be printed in /* Ok, we have an unknown number of bytes of data to be printed in
* decimal. * decimal.
* *
@ -837,8 +681,6 @@ print_decimal_chars (struct ui_file *stream, unsigned char *valaddr,
fprintf_filtered (stream, "%1d", digits[i]); fprintf_filtered (stream, "%1d", digits[i]);
} }
xfree (digits); xfree (digits);
fputs_filtered (local_decimal_format_suffix (), stream);
} }
/* VALADDR points to an integer of LEN bytes. Print it in hex on 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. */ /* 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) if (TARGET_BYTE_ORDER == BFD_ENDIAN_BIG)
{ {
for (p = valaddr; for (p = valaddr;
@ -869,7 +711,6 @@ print_hex_chars (struct ui_file *stream, unsigned char *valaddr, unsigned len)
fprintf_filtered (stream, "%02x", *p); 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. /* VALADDR points to a char integer of LEN bytes. Print it out in appropriate language form on stream.