* dwarf2read.c (_initialize_dwarf2_read): Fix help text of
[binutils-gdb.git] / gdb / m2-lang.c
index 90c3b2f8081e7901dff36e8ffe90da56d8eb9a78..ade52d98525ed517211616cc3157c79f9e0d6118 100644 (file)
@@ -1,7 +1,7 @@
 /* Modula 2 language support routines for GDB, the GNU debugger.
 
    Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2002, 2003, 2004,
-   2005, 2007, 2008, 2009 Free Software Foundation, Inc.
+   2005, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -104,14 +104,13 @@ m2_printchar (int c, struct type *type, struct ui_file *stream)
 
 static void
 m2_printstr (struct ui_file *stream, struct type *type, const gdb_byte *string,
-            unsigned int length, int force_ellipses,
+            unsigned int length, const char *encoding, int force_ellipses,
             const struct value_print_options *options)
 {
   unsigned int i;
   unsigned int things_printed = 0;
   int in_quotes = 0;
   int need_comma = 0;
-  int width = TYPE_LENGTH (type);
 
   if (length == 0)
     {
@@ -195,6 +194,7 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp,
   struct value *arg1;
   struct value *arg2;
   struct type *type;
+
   switch (op)
     {
     case UNOP_HIGH:
@@ -211,6 +211,7 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp,
          if (m2_is_unbounded_array (type))
            {
              struct value *temp = arg1;
+
              type = TYPE_FIELD_TYPE (type, 1);
              /* i18n: Do not translate the "_m2_high" part!  */
              arg1 = value_struct_elt (&temp, NULL, "_m2_high", NULL,
@@ -240,10 +241,11 @@ evaluate_subexp_modula2 (struct type *expect_type, struct expression *exp,
        {
          struct value *temp = arg1;
          type = TYPE_FIELD_TYPE (type, 0);
-         if (type == NULL || (TYPE_CODE (type) != TYPE_CODE_PTR)) {
-           warning (_("internal error: unbounded array structure is unknown"));
-           return evaluate_subexp_standard (expect_type, exp, pos, noside);
-         }
+         if (type == NULL || (TYPE_CODE (type) != TYPE_CODE_PTR))
+           {
+             warning (_("internal error: unbounded array structure is unknown"));
+             return evaluate_subexp_standard (expect_type, exp, pos, noside);
+           }
          /* i18n: Do not translate the "_m2_contents" part!  */
          arg1 = value_struct_elt (&temp, NULL, "_m2_contents", NULL,
                                   _("unbounded structure "
@@ -356,6 +358,7 @@ const struct exp_descriptor exp_descriptor_modula2 =
 {
   print_subexp_standard,
   operator_length_standard,
+  operator_check_standard,
   op_name_standard,
   dump_subexp_body_standard,
   evaluate_subexp_modula2
@@ -406,29 +409,16 @@ build_m2_types (struct gdbarch *gdbarch)
     = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct builtin_m2_type);
 
   /* Modula-2 "pervasive" types.  NOTE:  these can be redefined!!! */
-  builtin_m2_type->builtin_int =
-    init_type (TYPE_CODE_INT,
-              gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
-              0, "INTEGER", (struct objfile *) NULL);
-  builtin_m2_type->builtin_card =
-    init_type (TYPE_CODE_INT, 
-              gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
-              TYPE_FLAG_UNSIGNED,
-              "CARDINAL", (struct objfile *) NULL);
-  builtin_m2_type->builtin_real =
-    init_type (TYPE_CODE_FLT,
-              gdbarch_float_bit (gdbarch) / TARGET_CHAR_BIT,
-              0,
-              "REAL", (struct objfile *) NULL);
-  builtin_m2_type->builtin_char =
-    init_type (TYPE_CODE_CHAR, TARGET_CHAR_BIT / TARGET_CHAR_BIT,
-              TYPE_FLAG_UNSIGNED,
-              "CHAR", (struct objfile *) NULL);
-  builtin_m2_type->builtin_bool =
-    init_type (TYPE_CODE_BOOL, 
-              gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT,
-              TYPE_FLAG_UNSIGNED,
-              "BOOLEAN", (struct objfile *) NULL);
+  builtin_m2_type->builtin_int
+    = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 0, "INTEGER");
+  builtin_m2_type->builtin_card
+    = arch_integer_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "CARDINAL");
+  builtin_m2_type->builtin_real
+    = arch_float_type (gdbarch, gdbarch_float_bit (gdbarch), "REAL", NULL);
+  builtin_m2_type->builtin_char
+    = arch_character_type (gdbarch, TARGET_CHAR_BIT, 1, "CHAR");
+  builtin_m2_type->builtin_bool
+    = arch_boolean_type (gdbarch, gdbarch_int_bit (gdbarch), 1, "BOOLEAN");
 
   return builtin_m2_type;
 }