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