X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fprintcmd.c;h=8c14077e16d736fc8b8520049363a0a1195a222f;hb=e1e9e218c189882084a89fdee655a0a523efbaf8;hp=dcc3329d676a04915607b5856bae3987852ef502;hpb=d0352a18a504a4e7b761f6b3264cf11347d8d056;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/printcmd.c b/gdb/printcmd.c index dcc3329d67..8c14077e16 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1,5 +1,7 @@ /* Print values for GNU debugger GDB. - Copyright 1986-1991, 1993-1995, 1998, 2000 Free Software Foundation, Inc. + + Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1993, 1994, 1995, + 1998, 2000 Free Software Foundation, Inc. This file is part of GDB. @@ -189,10 +191,7 @@ static void sym_info (char *, int); past the specification and past all whitespace following it. */ static struct format_data -decode_format (string_ptr, oformat, osize) - char **string_ptr; - int oformat; - int osize; +decode_format (char **string_ptr, int oformat, int osize) { struct format_data val; register char *p = *string_ptr; @@ -250,7 +249,7 @@ decode_format (string_ptr, oformat, osize) val.size = osize ? 'h' : osize; else /* Bad value for TARGET_PTR_BIT */ - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); break; case 'f': /* Floating point has to be word or giantword. */ @@ -280,11 +279,8 @@ decode_format (string_ptr, oformat, osize) This is used to pad hex numbers so they line up. */ static void -print_formatted (val, format, size, stream) - register value_ptr val; - register int format; - int size; - struct ui_file *stream; +print_formatted (register value_ptr val, register int format, int size, + struct ui_file *stream) { struct type *type = check_typedef (VALUE_TYPE (val)); int len = TYPE_LENGTH (type); @@ -347,12 +343,8 @@ print_formatted (val, format, size, stream) with a format. */ void -print_scalar_formatted (valaddr, type, format, size, stream) - char *valaddr; - struct type *type; - int format; - int size; - struct ui_file *stream; +print_scalar_formatted (char *valaddr, struct type *type, int format, int size, + struct ui_file *stream) { LONGEST val_long; unsigned int len = TYPE_LENGTH (type); @@ -445,14 +437,7 @@ print_scalar_formatted (valaddr, type, format, size, stream) case 'a': { - /* Truncate address to the size of a target pointer, avoiding - shifts larger or equal than the width of a CORE_ADDR. The - local variable PTR_BIT stops the compiler reporting a shift - overflow when it won't occure. */ CORE_ADDR addr = unpack_pointer (type, valaddr); - int ptr_bit = TARGET_PTR_BIT; - if (ptr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) - addr &= ((CORE_ADDR) 1 << ptr_bit) - 1; print_address (addr, stream); } break; @@ -471,7 +456,7 @@ print_scalar_formatted (valaddr, type, format, size, stream) break; case 0: - abort (); + internal_error (__FILE__, __LINE__, "failed internal consistency check"); case 't': /* Binary; 't' stands for "two". */ @@ -531,8 +516,7 @@ print_scalar_formatted (valaddr, type, format, size, stream) `info lines' uses this. */ void -set_next_address (addr) - CORE_ADDR addr; +set_next_address (CORE_ADDR addr) { next_address = addr; @@ -551,11 +535,8 @@ set_next_address (addr) settings of the demangle and asm_demangle variables. */ void -print_address_symbolic (addr, stream, do_demangle, leadin) - CORE_ADDR addr; - struct ui_file *stream; - int do_demangle; - char *leadin; +print_address_symbolic (CORE_ADDR addr, struct ui_file *stream, int do_demangle, + char *leadin) { char *name = NULL; char *filename = NULL; @@ -735,13 +716,19 @@ build_address_symbolic (CORE_ADDR addr, /* IN */ /* Print address ADDR on STREAM. USE_LOCAL means the same thing as for print_longest. */ void -print_address_numeric (addr, use_local, stream) - CORE_ADDR addr; - int use_local; - struct ui_file *stream; +print_address_numeric (CORE_ADDR addr, int use_local, struct ui_file *stream) { - /* This assumes a CORE_ADDR can fit in a LONGEST. Probably a safe - assumption. */ + /* Truncate address to the size of a target pointer, avoiding shifts + larger or equal than the width of a CORE_ADDR. The local + variable PTR_BIT stops the compiler reporting a shift overflow + when it won't occure. */ + /* NOTE: This assumes that the significant address information is + kept in the least significant bits of ADDR - the upper bits were + either zero or sign extended. Should ADDRESS_TO_POINTER() or + some ADDRESS_TO_PRINTABLE() be used to do the conversion? */ + int addr_bit = TARGET_ADDR_BIT; + if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT)) + addr &= ((CORE_ADDR) 1 << addr_bit) - 1; print_longest (stream, 'x', use_local, (ULONGEST) addr); } @@ -750,9 +737,7 @@ print_address_numeric (addr, use_local, stream) after the number. */ void -print_address (addr, stream) - CORE_ADDR addr; - struct ui_file *stream; +print_address (CORE_ADDR addr, struct ui_file *stream) { print_address_numeric (addr, 1, stream); print_address_symbolic (addr, stream, asm_demangle, " "); @@ -764,10 +749,7 @@ print_address (addr, stream) or not. */ void -print_address_demangle (addr, stream, do_demangle) - CORE_ADDR addr; - struct ui_file *stream; - int do_demangle; +print_address_demangle (CORE_ADDR addr, struct ui_file *stream, int do_demangle) { if (addr == 0) { @@ -799,10 +781,7 @@ static struct type *examine_g_type; Fetch it from memory and print on gdb_stdout. */ static void -do_examine (fmt, addr, sect) - struct format_data fmt; - CORE_ADDR addr; - asection *sect; +do_examine (struct format_data fmt, CORE_ADDR addr, asection *sect) { register char format = 0; register char size; @@ -883,9 +862,7 @@ do_examine (fmt, addr, sect) } static void -validate_format (fmt, cmdname) - struct format_data fmt; - char *cmdname; +validate_format (struct format_data fmt, char *cmdname) { if (fmt.size != 0) error ("Size letters are meaningless in \"%s\" command.", cmdname); @@ -903,10 +880,7 @@ validate_format (fmt, cmdname) */ static void -print_command_1 (exp, inspect, voidprint) - char *exp; - int inspect; - int voidprint; +print_command_1 (char *exp, int inspect, int voidprint) { struct expression *expr; register struct cleanup *old_chain = 0; @@ -999,9 +973,7 @@ print_command_1 (exp, inspect, voidprint) /* ARGSUSED */ static void -print_command (exp, from_tty) - char *exp; - int from_tty; +print_command (char *exp, int from_tty) { print_command_1 (exp, 0, 1); } @@ -1009,9 +981,7 @@ print_command (exp, from_tty) /* Same as print, except in epoch, it gets its own window */ /* ARGSUSED */ static void -inspect_command (exp, from_tty) - char *exp; - int from_tty; +inspect_command (char *exp, int from_tty) { extern int epoch_interface; @@ -1021,18 +991,14 @@ inspect_command (exp, from_tty) /* Same as print, except it doesn't print void results. */ /* ARGSUSED */ static void -call_command (exp, from_tty) - char *exp; - int from_tty; +call_command (char *exp, int from_tty) { print_command_1 (exp, 0, 0); } /* ARGSUSED */ void -output_command (exp, from_tty) - char *exp; - int from_tty; +output_command (char *exp, int from_tty) { struct expression *expr; register struct cleanup *old_chain; @@ -1067,9 +1033,7 @@ output_command (exp, from_tty) /* ARGSUSED */ static void -set_command (exp, from_tty) - char *exp; - int from_tty; +set_command (char *exp, int from_tty) { struct expression *expr = parse_expression (exp); register struct cleanup *old_chain = @@ -1080,9 +1044,7 @@ set_command (exp, from_tty) /* ARGSUSED */ static void -sym_info (arg, from_tty) - char *arg; - int from_tty; +sym_info (char *arg, int from_tty) { struct minimal_symbol *msymbol; struct objfile *objfile; @@ -1127,9 +1089,7 @@ sym_info (arg, from_tty) /* ARGSUSED */ static void -address_info (exp, from_tty) - char *exp; - int from_tty; +address_info (char *exp, int from_tty) { register struct symbol *sym; register struct minimal_symbol *msymbol; @@ -1341,9 +1301,7 @@ address_info (exp, from_tty) } void -x_command (exp, from_tty) - char *exp; - int from_tty; +x_command (char *exp, int from_tty) { struct expression *expr; struct format_data fmt; @@ -1420,9 +1378,7 @@ x_command (exp, from_tty) Specify the expression. */ static void -display_command (exp, from_tty) - char *exp; - int from_tty; +display_command (char *exp, int from_tty) { struct format_data fmt; register struct expression *expr; @@ -1480,11 +1436,10 @@ display_command (exp, from_tty) } static void -free_display (d) - struct display *d; +free_display (struct display *d) { - free ((PTR) d->exp); - free ((PTR) d); + xfree (d->exp); + xfree (d); } /* Clear out the display_chain. @@ -1492,23 +1447,22 @@ free_display (d) the types stored in many expressions. */ void -clear_displays () +clear_displays (void) { register struct display *d; while ((d = display_chain) != NULL) { - free ((PTR) d->exp); + xfree (d->exp); display_chain = d->next; - free ((PTR) d); + xfree (d); } } /* Delete the auto-display number NUM. */ static void -delete_display (num) - int num; +delete_display (int num) { register struct display *d1, *d; @@ -1540,9 +1494,7 @@ delete_display (num) Specify the element numbers. */ static void -undisplay_command (args, from_tty) - char *args; - int from_tty; +undisplay_command (char *args, int from_tty) { register char *p = args; register char *p1; @@ -1580,8 +1532,7 @@ undisplay_command (args, from_tty) or if the display is disabled. */ static void -do_one_display (d) - struct display *d; +do_one_display (struct display *d) { int within_current_scope; @@ -1666,7 +1617,7 @@ do_one_display (d) evaluated in the current scope. */ void -do_displays () +do_displays (void) { register struct display *d; @@ -1678,8 +1629,7 @@ do_displays () This is done when there is an error or a signal. */ void -disable_display (num) - int num; +disable_display (int num) { register struct display *d; @@ -1693,7 +1643,7 @@ disable_display (num) } void -disable_current_display () +disable_current_display (void) { if (current_display_number >= 0) { @@ -1705,9 +1655,7 @@ disable_current_display () } static void -display_info (ignore, from_tty) - char *ignore; - int from_tty; +display_info (char *ignore, int from_tty) { register struct display *d; @@ -1734,9 +1682,7 @@ Num Enb Expression\n"); } static void -enable_display (args, from_tty) - char *args; - int from_tty; +enable_display (char *args, int from_tty) { register char *p = args; register char *p1; @@ -1775,9 +1721,7 @@ enable_display (args, from_tty) /* ARGSUSED */ static void -disable_display_command (args, from_tty) - char *args; - int from_tty; +disable_display_command (char *args, int from_tty) { register char *p = args; register char *p1; @@ -1810,10 +1754,8 @@ disable_display_command (args, from_tty) specified by a struct symbol. */ void -print_variable_value (var, frame, stream) - struct symbol *var; - struct frame_info *frame; - struct ui_file *stream; +print_variable_value (struct symbol *var, struct frame_info *frame, + struct ui_file *stream) { value_ptr val = read_var_value (var, frame); @@ -1829,11 +1771,8 @@ print_variable_value (var, frame, stream) according to the stack frame". At least for VAX, i386, isi. */ void -print_frame_args (func, fi, num, stream) - struct symbol *func; - struct frame_info *fi; - int num; - struct ui_file *stream; +print_frame_args (struct symbol *func, struct frame_info *fi, int num, + struct ui_file *stream) { struct block *b = NULL; int nsyms = 0; @@ -2051,12 +1990,8 @@ print_frame_args (func, fi, num, stream) the first nameless arg). */ static void -print_frame_nameless_args (fi, start, num, first, stream) - struct frame_info *fi; - long start; - int num; - int first; - struct ui_file *stream; +print_frame_nameless_args (struct frame_info *fi, long start, int num, + int first, struct ui_file *stream) { int i; CORE_ADDR argsaddr; @@ -2094,9 +2029,7 @@ print_frame_nameless_args (fi, start, num, first, stream) /* ARGSUSED */ static void -printf_command (arg, from_tty) - char *arg; - int from_tty; +printf_command (char *arg, int from_tty) { register char *f = NULL; register char *s = arg; @@ -2327,7 +2260,8 @@ printf_command (arg, from_tty) /* Copy the string contents into a string inside GDB. */ str = (char *) alloca (j + 1); - read_memory (tem, str, j); + if (j != 0) + read_memory (tem, str, j); str[j] = 0; printf_filtered (current_substring, str); @@ -2377,9 +2311,7 @@ printf_command (arg, from_tty) /* ARGSUSED */ static void -disassemble_command (arg, from_tty) - char *arg; - int from_tty; +disassemble_command (char *arg, int from_tty) { CORE_ADDR low, high; char *name; @@ -2502,9 +2434,7 @@ disassemble_command (arg, from_tty) on STREAM. Returns length of the instruction, in bytes. */ static int -print_insn (memaddr, stream) - CORE_ADDR memaddr; - struct ui_file *stream; +print_insn (CORE_ADDR memaddr, struct ui_file *stream) { if (TARGET_BYTE_ORDER == BIG_ENDIAN) TARGET_PRINT_INSN_INFO->endian = BFD_ENDIAN_BIG; @@ -2520,7 +2450,7 @@ print_insn (memaddr, stream) void -_initialize_printcmd () +_initialize_printcmd (void) { current_display_number = -1;