GDB/MI: Document support for -exec-run --start in -list-features
[deliverable/binutils-gdb.git] / gdb / c-lang.c
index 3a7d6f18d9c9f0d2a81eaa68c16dcb1e8a7e1549..eecc76d6d105057086d7a8fee35e22627da20cac 100644 (file)
 #include "expression.h"
 #include "parser-defs.h"
 #include "language.h"
+#include "varobj.h"
 #include "c-lang.h"
 #include "valprint.h"
 #include "macroscope.h"
 #include "gdb_assert.h"
 #include "charset.h"
-#include "gdb_string.h"
+#include <string.h>
 #include "demangle.h"
 #include "cp-abi.h"
 #include "cp-support.h"
 #include "gdb_obstack.h"
 #include <ctype.h>
 #include "exceptions.h"
+#include "gdbcore.h"
 
 extern void _initialize_c_language (void);
 
@@ -312,12 +314,7 @@ c_get_string (struct value *value, gdb_byte **buffer,
       if (err)
        {
          xfree (*buffer);
-         if (err == EIO)
-           throw_error (MEMORY_ERROR, "Address %s out of bounds",
-                        paddress (get_type_arch (type), addr));
-         else
-           error (_("Error reading string from inferior: %s"),
-                  safe_strerror (err));
+         memory_error (err, addr);
        }
     }
 
@@ -536,7 +533,7 @@ parse_one_string (struct obstack *output, char *data, int len,
       /* If we saw a run of characters, convert them all.  */
       if (p > data)
        convert_between_encodings (host_charset (), dest_charset,
-                                  data, p - data, 1,
+                                  (gdb_byte *) data, p - data, 1,
                                   output, translit_none);
       /* If we saw an escape, convert it.  */
       if (p < limit)
@@ -658,7 +655,7 @@ evaluate_subexp_c (struct type *expect_type, struct expression *exp,
            if (obstack_object_size (&output) != TYPE_LENGTH (type))
              error (_("Could not convert character "
                       "constant to target character set"));
-           value = unpack_long (type, obstack_base (&output));
+           value = unpack_long (type, (gdb_byte *) obstack_base (&output));
            result = value_from_longest (type, value);
          }
        else
@@ -732,6 +729,7 @@ const struct op_print c_op_print_tab[] =
   {"/", BINOP_DIV, PREC_MUL, 0},
   {"%", BINOP_REM, PREC_MUL, 0},
   {"@", BINOP_REPEAT, PREC_REPEAT, 0},
+  {"+", UNOP_PLUS, PREC_PREFIX, 0},
   {"-", UNOP_NEG, PREC_PREFIX, 0},
   {"!", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
   {"~", UNOP_COMPLEMENT, PREC_PREFIX, 0},
@@ -814,6 +812,7 @@ const struct exp_descriptor exp_descriptor_c =
 const struct language_defn c_language_defn =
 {
   "c",                         /* Language name */
+  "C",
   language_c,
   range_check_off,
   case_sensitive_on,
@@ -849,6 +848,7 @@ const struct language_defn c_language_defn =
   c_get_string,
   NULL,                                /* la_get_symbol_name_cmp */
   iterate_over_symbols,
+  &c_varobj_ops,
   LANG_MAGIC
 };
 
@@ -937,6 +937,7 @@ cplus_language_arch_info (struct gdbarch *gdbarch,
 const struct language_defn cplus_language_defn =
 {
   "c++",                       /* Language name */
+  "C++",
   language_cplus,
   range_check_off,
   case_sensitive_on,
@@ -958,7 +959,7 @@ const struct language_defn cplus_language_defn =
   "this",                       /* name_of_this */
   cp_lookup_symbol_nonlocal,   /* lookup_symbol_nonlocal */
   cp_lookup_transparent_type,   /* lookup_transparent_type */
-  cplus_demangle,              /* Language specific symbol demangler */
+  gdb_demangle,                        /* Language specific symbol demangler */
   cp_class_name_from_physname,  /* Language specific
                                   class_name_from_physname */
   c_op_print_tab,              /* expression operators for printing */
@@ -972,12 +973,14 @@ const struct language_defn cplus_language_defn =
   c_get_string,
   NULL,                                /* la_get_symbol_name_cmp */
   iterate_over_symbols,
+  &cplus_varobj_ops,
   LANG_MAGIC
 };
 
 const struct language_defn asm_language_defn =
 {
   "asm",                       /* Language name */
+  "assembly",
   language_asm,
   range_check_off,
   case_sensitive_on,
@@ -1013,6 +1016,7 @@ const struct language_defn asm_language_defn =
   c_get_string,
   NULL,                                /* la_get_symbol_name_cmp */
   iterate_over_symbols,
+  &default_varobj_ops,
   LANG_MAGIC
 };
 
@@ -1024,6 +1028,7 @@ const struct language_defn asm_language_defn =
 const struct language_defn minimal_language_defn =
 {
   "minimal",                   /* Language name */
+  "Minimal",
   language_minimal,
   range_check_off,
   case_sensitive_on,
@@ -1059,6 +1064,7 @@ const struct language_defn minimal_language_defn =
   c_get_string,
   NULL,                                /* la_get_symbol_name_cmp */
   iterate_over_symbols,
+  &default_varobj_ops,
   LANG_MAGIC
 };
 
This page took 0.029186 seconds and 4 git commands to generate.