X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ff-valprint.c;h=0a574042fcd63a0e440be62d0ff5bf8ad2337071;hb=5bce4bde2d5ff6147840f9004093ee655bc23d23;hp=4bd01cc9ab2f4b924f7ef5d3b7df39765905ac8b;hpb=0d540cdfe73cd76ebf5f3b855a4962e590052728;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c index 4bd01cc9ab..0a574042fc 100644 --- a/gdb/f-valprint.c +++ b/gdb/f-valprint.c @@ -1,6 +1,8 @@ /* Support for printing Fortran values for GDB, the GNU debugger. - Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000 - Free Software Foundation, Inc. + + Copyright (C) 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2003, 2005, 2006, + 2007, 2008, 2009 Free Software Foundation, Inc. + Contributed by Motorola. Adapted from the C definitions by Farooq Butt (fmbutt@engage.sps.mot.com), additionally worked over by Stan Shebs. @@ -8,7 +10,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -17,9 +19,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + along with this program. If not, see . */ #include "defs.h" #include "gdb_string.h" @@ -33,6 +33,7 @@ #include "frame.h" #include "gdbcore.h" #include "command.h" +#include "block.h" #if 0 static int there_is_a_visible_common_named (char *); @@ -41,12 +42,6 @@ static int there_is_a_visible_common_named (char *); extern void _initialize_f_valprint (void); static void info_common_command (char *, int); static void list_all_visible_commons (char *); -static void f77_print_array (struct type *, char *, CORE_ADDR, - struct ui_file *, int, int, int, - enum val_prettyprint); -static void f77_print_array_1 (int, int, struct type *, char *, - CORE_ADDR, struct ui_file *, int, int, int, - enum val_prettyprint); static void f77_create_arrayprint_offset_tbl (struct type *, struct ui_file *); static void f77_get_dynamic_length_of_aggregate (struct type *); @@ -66,124 +61,28 @@ int f77_array_offset_tbl[MAX_FORTRAN_DIMS + 1][2]; #define F77_DIM_OFFSET(n) (f77_array_offset_tbl[n][0]) int -f77_get_dynamic_lowerbound (struct type *type, int *lower_bound) +f77_get_lowerbound (struct type *type) { - CORE_ADDR current_frame_addr; - CORE_ADDR ptr_to_lower_bound; - - switch (TYPE_ARRAY_LOWER_BOUND_TYPE (type)) - { - case BOUND_BY_VALUE_ON_STACK: - current_frame_addr = selected_frame->frame; - if (current_frame_addr > 0) - { - *lower_bound = - read_memory_integer (current_frame_addr + - TYPE_ARRAY_LOWER_BOUND_VALUE (type), - 4); - } - else - { - *lower_bound = DEFAULT_LOWER_BOUND; - return BOUND_FETCH_ERROR; - } - break; - - case BOUND_SIMPLE: - *lower_bound = TYPE_ARRAY_LOWER_BOUND_VALUE (type); - break; + if (TYPE_ARRAY_LOWER_BOUND_IS_UNDEFINED (type)) + error (_("Lower bound may not be '*' in F77")); - case BOUND_CANNOT_BE_DETERMINED: - error ("Lower bound may not be '*' in F77"); - break; - - case BOUND_BY_REF_ON_STACK: - current_frame_addr = selected_frame->frame; - if (current_frame_addr > 0) - { - ptr_to_lower_bound = - read_memory_typed_address (current_frame_addr + - TYPE_ARRAY_LOWER_BOUND_VALUE (type), - builtin_type_void_data_ptr); - *lower_bound = read_memory_integer (ptr_to_lower_bound, 4); - } - else - { - *lower_bound = DEFAULT_LOWER_BOUND; - return BOUND_FETCH_ERROR; - } - break; - - case BOUND_BY_REF_IN_REG: - case BOUND_BY_VALUE_IN_REG: - default: - error ("??? unhandled dynamic array bound type ???"); - break; - } - return BOUND_FETCH_OK; + return TYPE_ARRAY_LOWER_BOUND_VALUE (type); } int -f77_get_dynamic_upperbound (struct type *type, int *upper_bound) +f77_get_upperbound (struct type *type) { - CORE_ADDR current_frame_addr = 0; - CORE_ADDR ptr_to_upper_bound; - - switch (TYPE_ARRAY_UPPER_BOUND_TYPE (type)) + if (TYPE_ARRAY_UPPER_BOUND_IS_UNDEFINED (type)) { - case BOUND_BY_VALUE_ON_STACK: - current_frame_addr = selected_frame->frame; - if (current_frame_addr > 0) - { - *upper_bound = - read_memory_integer (current_frame_addr + - TYPE_ARRAY_UPPER_BOUND_VALUE (type), - 4); - } - else - { - *upper_bound = DEFAULT_UPPER_BOUND; - return BOUND_FETCH_ERROR; - } - break; - - case BOUND_SIMPLE: - *upper_bound = TYPE_ARRAY_UPPER_BOUND_VALUE (type); - break; - - case BOUND_CANNOT_BE_DETERMINED: - /* we have an assumed size array on our hands. Assume that - upper_bound == lower_bound so that we show at least - 1 element.If the user wants to see more elements, let - him manually ask for 'em and we'll subscript the - array and show him */ - f77_get_dynamic_lowerbound (type, upper_bound); - break; + /* We have an assumed size array on our hands. Assume that + upper_bound == lower_bound so that we show at least 1 element. + If the user wants to see more elements, let him manually ask for 'em + and we'll subscript the array and show him. */ - case BOUND_BY_REF_ON_STACK: - current_frame_addr = selected_frame->frame; - if (current_frame_addr > 0) - { - ptr_to_upper_bound = - read_memory_typed_address (current_frame_addr + - TYPE_ARRAY_UPPER_BOUND_VALUE (type), - builtin_type_void_data_ptr); - *upper_bound = read_memory_integer (ptr_to_upper_bound, 4); - } - else - { - *upper_bound = DEFAULT_UPPER_BOUND; - return BOUND_FETCH_ERROR; - } - break; - - case BOUND_BY_REF_IN_REG: - case BOUND_BY_VALUE_IN_REG: - default: - error ("??? unhandled dynamic array bound type ???"); - break; + return f77_get_lowerbound (type); } - return BOUND_FETCH_OK; + + return TYPE_ARRAY_UPPER_BOUND_VALUE (type); } /* Obtain F77 adjustable array dimensions */ @@ -209,13 +108,8 @@ f77_get_dynamic_length_of_aggregate (struct type *type) f77_get_dynamic_length_of_aggregate (TYPE_TARGET_TYPE (type)); /* Recursion ends here, start setting up lengths. */ - retcode = f77_get_dynamic_lowerbound (type, &lower_bound); - if (retcode == BOUND_FETCH_ERROR) - error ("Cannot obtain valid array lower bound"); - - retcode = f77_get_dynamic_upperbound (type, &upper_bound); - if (retcode == BOUND_FETCH_ERROR) - error ("Cannot obtain valid array upper bound"); + lower_bound = f77_get_lowerbound (type); + upper_bound = f77_get_upperbound (type); /* Patch in a valid length value. */ @@ -238,16 +132,8 @@ f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream) while ((TYPE_CODE (tmp_type) == TYPE_CODE_ARRAY)) { - if (TYPE_ARRAY_UPPER_BOUND_TYPE (tmp_type) == BOUND_CANNOT_BE_DETERMINED) - fprintf_filtered (stream, " "); - - retcode = f77_get_dynamic_upperbound (tmp_type, &upper); - if (retcode == BOUND_FETCH_ERROR) - error ("Cannot obtain dynamic upper bound"); - - retcode = f77_get_dynamic_lowerbound (tmp_type, &lower); - if (retcode == BOUND_FETCH_ERROR) - error ("Cannot obtain dynamic lower bound"); + upper = f77_get_upperbound (tmp_type); + lower = f77_get_lowerbound (tmp_type); F77_DIM_SIZE (ndimen) = upper - lower + 1; @@ -270,42 +156,50 @@ f77_create_arrayprint_offset_tbl (struct type *type, struct ui_file *stream) } } + + /* Actual function which prints out F77 arrays, Valaddr == address in the superior. Address == the address in the inferior. */ static void -f77_print_array_1 (int nss, int ndimensions, struct type *type, char *valaddr, - CORE_ADDR address, struct ui_file *stream, int format, - int deref_ref, int recurse, enum val_prettyprint pretty) +f77_print_array_1 (int nss, int ndimensions, struct type *type, + const gdb_byte *valaddr, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value_print_options *options, + int *elts) { int i; if (nss != ndimensions) { - for (i = 0; i < F77_DIM_SIZE (nss); i++) + for (i = 0; (i < F77_DIM_SIZE (nss) && (*elts) < options->print_max); i++) { fprintf_filtered (stream, "( "); f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (nss), address + i * F77_DIM_OFFSET (nss), - stream, format, deref_ref, recurse, pretty); + stream, recurse, options, elts); fprintf_filtered (stream, ") "); } + if (*elts >= options->print_max && i < F77_DIM_SIZE (nss)) + fprintf_filtered (stream, "..."); } else { - for (i = 0; (i < F77_DIM_SIZE (nss) && i < print_max); i++) + for (i = 0; i < F77_DIM_SIZE (nss) && (*elts) < options->print_max; + i++, (*elts)++) { val_print (TYPE_TARGET_TYPE (type), valaddr + i * F77_DIM_OFFSET (ndimensions), 0, address + i * F77_DIM_OFFSET (ndimensions), - stream, format, deref_ref, recurse, pretty); + stream, recurse, options, current_language); if (i != (F77_DIM_SIZE (nss) - 1)) fprintf_filtered (stream, ", "); - if (i == print_max - 1) + if ((*elts == options->print_max - 1) + && (i != (F77_DIM_SIZE (nss) - 1))) fprintf_filtered (stream, "..."); } } @@ -315,16 +209,17 @@ f77_print_array_1 (int nss, int ndimensions, struct type *type, char *valaddr, stuff and then immediately call f77_print_array_1() */ static void -f77_print_array (struct type *type, char *valaddr, CORE_ADDR address, - struct ui_file *stream, int format, int deref_ref, int recurse, - enum val_prettyprint pretty) +f77_print_array (struct type *type, const gdb_byte *valaddr, + CORE_ADDR address, struct ui_file *stream, + int recurse, const struct value_print_options *options) { int ndimensions; + int elts = 0; ndimensions = calc_f77_array_dims (type); if (ndimensions > MAX_FORTRAN_DIMS || ndimensions < 0) - error ("Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)", + error (_("Type node corrupt! F77 arrays cannot have %d subscripts (%d Max)"), ndimensions, MAX_FORTRAN_DIMS); /* Since F77 arrays are stored column-major, we set up an @@ -333,57 +228,50 @@ f77_print_array (struct type *type, char *valaddr, CORE_ADDR address, f77_create_arrayprint_offset_tbl (type, stream); - f77_print_array_1 (1, ndimensions, type, valaddr, address, stream, format, - deref_ref, recurse, pretty); + f77_print_array_1 (1, ndimensions, type, valaddr, address, stream, + recurse, options, &elts); } /* Print data of type TYPE located at VALADDR (within GDB), which came from the inferior at address ADDRESS, onto stdio stream STREAM according to - FORMAT (a letter or 0 for natural format). The data at VALADDR is in - target byte order. + OPTIONS. The data at VALADDR is in target byte order. If the data are a string pointer, returns the number of string characters - printed. - - If DEREF_REF is nonzero, then dereference references, otherwise just print - them like pointers. - - The PRETTY parameter controls prettyprinting. */ + printed. */ int -f_val_print (struct type *type, char *valaddr, int embedded_offset, - CORE_ADDR address, struct ui_file *stream, int format, - int deref_ref, int recurse, enum val_prettyprint pretty) +f_val_print (struct type *type, const gdb_byte *valaddr, int embedded_offset, + CORE_ADDR address, struct ui_file *stream, int recurse, + const struct value_print_options *options) { - register unsigned int i = 0; /* Number of characters printed */ + struct gdbarch *gdbarch = get_type_arch (type); + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + unsigned int i = 0; /* Number of characters printed */ struct type *elttype; LONGEST val; CORE_ADDR addr; + int index; CHECK_TYPEDEF (type); switch (TYPE_CODE (type)) { case TYPE_CODE_STRING: f77_get_dynamic_length_of_aggregate (type); - LA_PRINT_STRING (stream, valaddr, TYPE_LENGTH (type), 1, 0); + LA_PRINT_STRING (stream, builtin_type (gdbarch)->builtin_char, + valaddr, TYPE_LENGTH (type), 0, options); break; case TYPE_CODE_ARRAY: fprintf_filtered (stream, "("); - f77_print_array (type, valaddr, address, stream, format, - deref_ref, recurse, pretty); + f77_print_array (type, valaddr, address, stream, recurse, options); fprintf_filtered (stream, ")"); break; -#if 0 - /* Array of unspecified length: treat like pointer to first elt. */ - valaddr = (char *) &address; - /* FALL THROUGH */ -#endif + case TYPE_CODE_PTR: - if (format && format != 's') + if (options->format && options->format != 's') { - print_scalar_formatted (valaddr, type, format, 0, stream); + print_scalar_formatted (valaddr, type, options, 0, stream); break; } else @@ -394,32 +282,62 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, if (TYPE_CODE (elttype) == TYPE_CODE_FUNC) { /* Try to print what function it points to. */ - print_address_demangle (addr, stream, demangle); + print_address_demangle (gdbarch, addr, stream, demangle); /* Return value is irrelevant except for string pointers. */ return 0; } - if (addressprint && format != 's') - fprintf_filtered (stream, "0x%s", paddr_nz (addr)); + if (options->addressprint && options->format != 's') + fputs_filtered (paddress (gdbarch, addr), stream); /* For a pointer to char or unsigned char, also print the string pointed to, unless pointer is null. */ if (TYPE_LENGTH (elttype) == 1 && TYPE_CODE (elttype) == TYPE_CODE_INT - && (format == 0 || format == 's') + && (options->format == 0 || options->format == 's') && addr != 0) - i = val_print_string (addr, -1, TYPE_LENGTH (elttype), stream); + i = val_print_string (TYPE_TARGET_TYPE (type), addr, -1, stream, + options); + + /* Return number of characters printed, including the terminating + '\0' if we reached the end. val_print_string takes care including + the terminating '\0' if necessary. */ + return i; + } + break; - /* Return number of characters printed, plus one for the - terminating null if we have "reached the end". */ - return (i + (print_max && i != print_max)); + case TYPE_CODE_REF: + elttype = check_typedef (TYPE_TARGET_TYPE (type)); + if (options->addressprint) + { + CORE_ADDR addr + = extract_typed_address (valaddr + embedded_offset, type); + fprintf_filtered (stream, "@"); + fputs_filtered (paddress (gdbarch, addr), stream); + if (options->deref_ref) + fputs_filtered (": ", stream); + } + /* De-reference the reference. */ + if (options->deref_ref) + { + if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF) + { + struct value *deref_val = + value_at + (TYPE_TARGET_TYPE (type), + unpack_pointer (type, valaddr + embedded_offset)); + common_val_print (deref_val, stream, recurse, + options, current_language); + } + else + fputs_filtered ("???", stream); } break; case TYPE_CODE_FUNC: - if (format) + if (options->format) { - print_scalar_formatted (valaddr, type, format, 0, stream); + print_scalar_formatted (valaddr, type, options, 0, stream); break; } /* FIXME, we should consider, at least for ANSI C language, eliminating @@ -428,13 +346,17 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, type_print (type, "", stream, -1); fprintf_filtered (stream, "} "); /* Try to print what function it points to, and its address. */ - print_address_demangle (address, stream, demangle); + print_address_demangle (gdbarch, address, stream, demangle); break; case TYPE_CODE_INT: - format = format ? format : output_format; - if (format) - print_scalar_formatted (valaddr, type, format, 0, stream); + if (options->format || options->output_format) + { + struct value_print_options opts = *options; + opts.format = (options->format ? options->format + : options->output_format); + print_scalar_formatted (valaddr, type, &opts, 0, stream); + } else { val_print_type_code_int (type, valaddr, stream); @@ -446,14 +368,21 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, { fputs_filtered (" ", stream); LA_PRINT_CHAR ((unsigned char) unpack_long (type, valaddr), - stream); + type, stream); } } break; + case TYPE_CODE_FLAGS: + if (options->format) + print_scalar_formatted (valaddr, type, options, 0, stream); + else + val_print_type_code_flags (type, valaddr, stream); + break; + case TYPE_CODE_FLT: - if (format) - print_scalar_formatted (valaddr, type, format, 0, stream); + if (options->format) + print_scalar_formatted (valaddr, type, options, 0, stream); else print_floating (valaddr, type, stream); break; @@ -472,32 +401,17 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, break; case TYPE_CODE_BOOL: - format = format ? format : output_format; - if (format) - print_scalar_formatted (valaddr, type, format, 0, stream); + if (options->format || options->output_format) + { + struct value_print_options opts = *options; + opts.format = (options->format ? options->format + : options->output_format); + print_scalar_formatted (valaddr, type, &opts, 0, stream); + } else { - val = 0; - switch (TYPE_LENGTH (type)) - { - case 1: - val = unpack_long (builtin_type_f_logical_s1, valaddr); - break; - - case 2: - val = unpack_long (builtin_type_f_logical_s2, valaddr); - break; - - case 4: - val = unpack_long (builtin_type_f_logical, valaddr); - break; - - default: - error ("Logicals of length %d bytes not supported", - TYPE_LENGTH (type)); - - } - + val = extract_unsigned_integer (valaddr, + TYPE_LENGTH (type), byte_order); if (val == 0) fprintf_filtered (stream, ".FALSE."); else if (val == 1) @@ -507,8 +421,7 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, { /* Bash the type code temporarily. */ TYPE_CODE (type) = TYPE_CODE_INT; - f_val_print (type, valaddr, 0, address, stream, format, - deref_ref, recurse, pretty); + f_val_print (type, valaddr, 0, address, stream, recurse, options); /* Restore the type code so later uses work as intended. */ TYPE_CODE (type) = TYPE_CODE_BOOL; } @@ -516,20 +429,7 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, break; case TYPE_CODE_COMPLEX: - switch (TYPE_LENGTH (type)) - { - case 8: - type = builtin_type_f_real; - break; - case 16: - type = builtin_type_f_real_s8; - break; - case 32: - type = builtin_type_f_real_s16; - break; - default: - error ("Cannot print out complex*%d variables", TYPE_LENGTH (type)); - } + type = TYPE_TARGET_TYPE (type); fputs_filtered ("(", stream); print_floating (valaddr, type, stream); fputs_filtered (",", stream); @@ -544,8 +444,24 @@ f_val_print (struct type *type, char *valaddr, int embedded_offset, fprintf_filtered (stream, ""); break; + case TYPE_CODE_STRUCT: + case TYPE_CODE_UNION: + /* Starting from the Fortran 90 standard, Fortran supports derived + types. */ + fprintf_filtered (stream, "( "); + for (index = 0; index < TYPE_NFIELDS (type); index++) + { + int offset = TYPE_FIELD_BITPOS (type, index) / 8; + f_val_print (TYPE_FIELD_TYPE (type, index), valaddr + offset, + embedded_offset, address, stream, recurse, options); + if (index != TYPE_NFIELDS (type) - 1) + fputs_filtered (", ", stream); + } + fprintf_filtered (stream, " )"); + break; + default: - error ("Invalid F77 type code %d in symbol table.", TYPE_CODE (type)); + error (_("Invalid F77 type code %d in symbol table."), TYPE_CODE (type)); } gdb_flush (stream); return 0; @@ -558,11 +474,11 @@ list_all_visible_commons (char *funname) tmp = head_common_list; - printf_filtered ("All COMMON blocks visible at this level:\n\n"); + printf_filtered (_("All COMMON blocks visible at this level:\n\n")); while (tmp != NULL) { - if (STREQ (tmp->owning_function, funname)) + if (strcmp (tmp->owning_function, funname) == 0) printf_filtered ("%s\n", tmp->name); tmp = tmp->next; @@ -579,7 +495,7 @@ info_common_command (char *comname, int from_tty) SAVED_F77_COMMON_PTR the_common; COMMON_ENTRY_PTR entry; struct frame_info *fi; - register char *funname = 0; + char *funname = 0; struct symbol *func; /* We have been told to display the contents of F77 COMMON @@ -587,15 +503,12 @@ info_common_command (char *comname, int from_tty) first make sure that it is visible and if so, let us display its contents */ - fi = selected_frame; - - if (fi == NULL) - error ("No frame selected"); + fi = get_selected_frame (_("No frame selected")); /* The following is generally ripped off from stack.c's routine print_frame_info() */ - func = find_pc_function (fi->pc); + func = find_pc_function (get_frame_pc (fi)); if (func) { /* In certain pathological cases, the symtabs give the wrong @@ -612,22 +525,25 @@ info_common_command (char *comname, int from_tty) be any minimal symbols in the middle of a function. FIXME: (Not necessarily true. What about text labels) */ - struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc); + struct minimal_symbol *msymbol = + lookup_minimal_symbol_by_pc (get_frame_pc (fi)); if (msymbol != NULL && (SYMBOL_VALUE_ADDRESS (msymbol) > BLOCK_START (SYMBOL_BLOCK_VALUE (func)))) - funname = SYMBOL_NAME (msymbol); + funname = SYMBOL_LINKAGE_NAME (msymbol); else - funname = SYMBOL_NAME (func); + funname = SYMBOL_LINKAGE_NAME (func); } else { - register struct minimal_symbol *msymbol = - lookup_minimal_symbol_by_pc (fi->pc); + struct minimal_symbol *msymbol = + lookup_minimal_symbol_by_pc (get_frame_pc (fi)); if (msymbol != NULL) - funname = SYMBOL_NAME (msymbol); + funname = SYMBOL_LINKAGE_NAME (msymbol); + else /* Got no 'funname', code below will fail. */ + error (_("No function found for frame.")); } /* If comname is NULL, we assume the user wishes to see the @@ -643,24 +559,22 @@ info_common_command (char *comname, int from_tty) if (the_common) { - if (STREQ (comname, BLANK_COMMON_NAME_LOCAL)) - printf_filtered ("Contents of blank COMMON block:\n"); + if (strcmp (comname, BLANK_COMMON_NAME_LOCAL) == 0) + printf_filtered (_("Contents of blank COMMON block:\n")); else - printf_filtered ("Contents of F77 COMMON block '%s':\n", comname); + printf_filtered (_("Contents of F77 COMMON block '%s':\n"), comname); printf_filtered ("\n"); entry = the_common->entries; while (entry != NULL) { - printf_filtered ("%s = ", SYMBOL_NAME (entry->symbol)); - print_variable_value (entry->symbol, fi, gdb_stdout); - printf_filtered ("\n"); + print_variable_and_value (NULL, entry->symbol, fi, gdb_stdout, 0); entry = entry->next; } } else - printf_filtered ("Cannot locate the common block %s in function '%s'\n", + printf_filtered (_("Cannot locate the common block %s in function '%s'\n"), comname, funname); } @@ -673,16 +587,13 @@ there_is_a_visible_common_named (char *comname) { SAVED_F77_COMMON_PTR the_common; struct frame_info *fi; - register char *funname = 0; + char *funname = 0; struct symbol *func; if (comname == NULL) - error ("Cannot deal with NULL common name!"); - - fi = selected_frame; + error (_("Cannot deal with NULL common name!")); - if (fi == NULL) - error ("No frame selected"); + fi = get_selected_frame (_("No frame selected")); /* The following is generally ripped off from stack.c's routine print_frame_info() */ @@ -709,17 +620,17 @@ there_is_a_visible_common_named (char *comname) if (msymbol != NULL && (SYMBOL_VALUE_ADDRESS (msymbol) > BLOCK_START (SYMBOL_BLOCK_VALUE (func)))) - funname = SYMBOL_NAME (msymbol); + funname = SYMBOL_LINKAGE_NAME (msymbol); else - funname = SYMBOL_NAME (func); + funname = SYMBOL_LINKAGE_NAME (func); } else { - register struct minimal_symbol *msymbol = + struct minimal_symbol *msymbol = lookup_minimal_symbol_by_pc (fi->pc); if (msymbol != NULL) - funname = SYMBOL_NAME (msymbol); + funname = SYMBOL_LINKAGE_NAME (msymbol); } the_common = find_common_for_function (comname, funname); @@ -732,8 +643,8 @@ void _initialize_f_valprint (void) { add_info ("common", info_common_command, - "Print out the values contained in a Fortran COMMON block."); + _("Print out the values contained in a Fortran COMMON block.")); if (xdb_commands) add_com ("lc", class_info, info_common_command, - "Print out the values contained in a Fortran COMMON block."); + _("Print out the values contained in a Fortran COMMON block.")); }