mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-18 05:12:33 +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:
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)
|
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
|
||||||
|
@ -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 */
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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 */
|
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 */
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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
|
||||||
|
10
gdb/exec.c
10
gdb/exec.c
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
|
@ -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 */
|
||||||
|
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
|
/* 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 */
|
||||||
|
107
gdb/language.h
107
gdb/language.h
@ -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 */
|
||||||
|
|
||||||
|
@ -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 */
|
||||||
|
@ -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");
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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 */
|
||||||
|
@ -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 */
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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));
|
||||||
|
@ -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. */
|
||||||
|
@ -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 */
|
||||||
|
@ -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
|
||||||
{
|
{
|
||||||
|
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 */
|
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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
10
gdb/symtab.c
10
gdb/symtab.c
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
104
gdb/utils.c
104
gdb/utils.c
@ -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)
|
||||||
|
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.
|
/* 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.
|
||||||
|
Reference in New Issue
Block a user