* gdb.dwarf2/dup-psym.exp: Use prepare_for_testing_full.
[deliverable/binutils-gdb.git] / gdb / p-lang.c
index 232ce56fd13399eeb25ed22aca6ce8f4f2f49c45..c59ba0bd71d165a2ec18a23e5f043eb25addbea9 100644 (file)
@@ -1,7 +1,7 @@
 /* Pascal language support routines for GDB, the GNU debugger.
 
-   Copyright (C) 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
-   Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002-2005, 2007-2012 Free Software Foundation,
+   Inc.
 
    This file is part of GDB.
 
 #include "valprint.h"
 #include "value.h"
 #include <ctype.h>
+
 extern void _initialize_pascal_language (void);
 
 
 /* All GPC versions until now (2007-09-27) also define a symbol called
-   '_p_initialize'. Check for the presence of this symbol first.  */
+   '_p_initialize'.  Check for the presence of this symbol first.  */
 static const char GPC_P_INITIALIZE[] = "_p_initialize";
 
 /* The name of the symbol that GPC uses as the name of the main
@@ -54,7 +54,7 @@ static const char GPC_MAIN_PROGRAM_NAME_2[] = "pascal_main_program";
    so that it finds the even if the program was compiled
    without debugging information.
    According to information supplied by Waldeck Hebisch,
-   this should work for all versions posterior to June 2000. */
+   this should work for all versions posterior to June 2000.  */
 
 const char *
 pascal_main_name (void)
@@ -99,17 +99,17 @@ int
 is_pascal_string_type (struct type *type,int *length_pos,
                        int *length_size, int *string_pos,
                       struct type **char_type,
-                      char **arrayname)
+                      const char **arrayname)
 {
   if (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT)
     {
       /* Old Borland type pascal strings from Free Pascal Compiler.  */
       /* Two fields: length and st.  */
       if (TYPE_NFIELDS (type) == 2
-         && TYPE_FIELDS (type) [0].name
-          && strcmp (TYPE_FIELDS (type)[0].name, "length") == 0 
-         && TYPE_FIELDS (type) [1].name
-          && strcmp (TYPE_FIELDS (type)[1].name, "st") == 0)
+         && TYPE_FIELD_NAME (type, 0)
+         && strcmp (TYPE_FIELD_NAME (type, 0), "length") == 0
+         && TYPE_FIELD_NAME (type, 1)
+         && strcmp (TYPE_FIELD_NAME (type, 1), "st") == 0)
         {
           if (length_pos)
            *length_pos = TYPE_FIELD_BITPOS (type, 0) / TARGET_CHAR_BIT;
@@ -120,16 +120,16 @@ is_pascal_string_type (struct type *type,int *length_pos,
           if (char_type)
            *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1));
          if (arrayname)
-           *arrayname = TYPE_FIELDS (type)[1].name;
+           *arrayname = TYPE_FIELD_NAME (type, 1);
          return 2;
         };
       /* GNU pascal strings.  */
       /* Three fields: Capacity, length and schema$ or _p_schema.  */
       if (TYPE_NFIELDS (type) == 3
-         && TYPE_FIELDS (type) [0].name
-          && strcmp (TYPE_FIELDS (type)[0].name, "Capacity") == 0
-         && TYPE_FIELDS (type) [1].name
-          && strcmp (TYPE_FIELDS (type)[1].name, "length") == 0)
+         && TYPE_FIELD_NAME (type, 0)
+         && strcmp (TYPE_FIELD_NAME (type, 0), "Capacity") == 0
+         && TYPE_FIELD_NAME (type, 1)
+         && strcmp (TYPE_FIELD_NAME (type, 1), "length") == 0)
         {
          if (length_pos)
            *length_pos = TYPE_FIELD_BITPOS (type, 1) / TARGET_CHAR_BIT;
@@ -137,7 +137,7 @@ is_pascal_string_type (struct type *type,int *length_pos,
            *length_size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, 1));
          if (string_pos)
            *string_pos = TYPE_FIELD_BITPOS (type, 2) / TARGET_CHAR_BIT;
-          /* FIXME: how can I detect wide chars in GPC ?? */
+          /* FIXME: how can I detect wide chars in GPC ??  */
           if (char_type)
            {
              *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 2));
@@ -146,7 +146,7 @@ is_pascal_string_type (struct type *type,int *length_pos,
                *char_type = TYPE_TARGET_TYPE (*char_type);
            }
          if (arrayname)
-           *arrayname = TYPE_FIELDS (type)[2].name;
+           *arrayname = TYPE_FIELD_NAME (type, 2);
          return 3;
         };
     }
@@ -157,7 +157,7 @@ static void pascal_one_char (int, struct ui_file *, int *);
 
 /* Print the character C on STREAM as part of the contents of a literal
    string.
-   In_quotes is reset to 0 if a char is written with #4 notation */
+   In_quotes is reset to 0 if a char is written with #4 notation */
 
 static void
 pascal_one_char (int c, struct ui_file *stream, int *in_quotes)
@@ -188,7 +188,7 @@ static void pascal_emit_char (int c, struct type *type,
 
 /* Print the character C on STREAM as part of the contents of a literal
    string whose delimiter is QUOTER.  Note that that format for printing
-   characters and strings is language specific. */
+   characters and strings is language specific.  */
 
 static void
 pascal_emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
@@ -268,7 +268,7 @@ pascal_printstr (struct ui_file *stream, struct type *type,
 
       rep1 = i + 1;
       reps = 1;
-      while (rep1 < length 
+      while (rep1 < length
             && extract_unsigned_integer (string + rep1 * width, width,
                                          byte_order) == current_char)
        {
@@ -444,6 +444,7 @@ const struct language_defn pascal_language_defn =
   pascal_print_typedef,                /* Print a typedef using appropriate syntax */
   pascal_val_print,            /* Print a value using appropriate syntax */
   pascal_value_print,          /* Print a top-level value */
+  default_read_var_value,      /* la_read_var_value */
   NULL,                                /* Language specific skip_trampoline */
   "this",                      /* name_of_this */
   basic_lookup_symbol_nonlocal,        /* lookup_symbol_nonlocal */
@@ -459,6 +460,8 @@ const struct language_defn pascal_language_defn =
   default_print_array_index,
   default_pass_by_reference,
   default_get_string,
+  NULL,                                /* la_get_symbol_name_cmp */
+  iterate_over_symbols,
   LANG_MAGIC
 };
 
This page took 0.025958 seconds and 4 git commands to generate.