Fix checks for VSX and Altivec availability on Power
[deliverable/binutils-gdb.git] / gdb / language.h
index 73619cacf3c6f9b946fd0f536476fe3944750c64..49243a9e4a0fedd15188135982c73d544d33cc7e 100644 (file)
@@ -1,6 +1,6 @@
 /* Source-language-related definitions for GDB.
 
 /* Source-language-related definitions for GDB.
 
-   Copyright (C) 1991-2014 Free Software Foundation, Inc.
+   Copyright (C) 1991-2016 Free Software Foundation, Inc.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
 
    Contributed by the Department of Computer Science at the State University
    of New York at Buffalo.
@@ -35,6 +35,7 @@ struct value_print_options;
 struct type_print_options;
 struct lang_varobj_ops;
 struct parser_state;
 struct type_print_options;
 struct lang_varobj_ops;
 struct parser_state;
+struct compile_instance;
 
 #define MAX_FORTRAN_DIMS  7    /* Maximum number of F77 array dims.  */
 
 
 #define MAX_FORTRAN_DIMS  7    /* Maximum number of F77 array dims.  */
 
@@ -110,6 +111,11 @@ struct language_arch_info
      expressions, regardless of whether the program being debugged
      actually defines such a type.  */
   struct type **primitive_type_vector;
      expressions, regardless of whether the program being debugged
      actually defines such a type.  */
   struct type **primitive_type_vector;
+
+  /* Symbol wrappers around primitive_type_vector, so that the symbol lookup
+     machinery can return them.  */
+  struct symbol **primitive_type_symbols;
+
   /* Type of elements of strings.  */
   struct type *string_char_type;
 
   /* Type of elements of strings.  */
   struct type *string_char_type;
 
@@ -235,13 +241,19 @@ struct language_defn
     void (*la_value_print) (struct value *, struct ui_file *,
                            const struct value_print_options *);
 
     void (*la_value_print) (struct value *, struct ui_file *,
                            const struct value_print_options *);
 
-    /* Given a symbol VAR, and a stack frame id FRAME, read the value
-       of the variable an return (pointer to a) struct value containing
-       the value.
+    /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a
+       stack frame id FRAME, read the value of the variable and return (pointer
+       to a) struct value containing the value.
+
+       VAR_BLOCK is needed if there's a possibility for VAR to be outside
+       FRAME.  This is what happens if FRAME correspond to a nested function
+       and VAR is defined in the outer function.  If callers know that VAR is
+       located in FRAME or is global/static, NULL can be passed as VAR_BLOCK.
 
        Throw an error if the variable cannot be found.  */
 
     struct value *(*la_read_var_value) (struct symbol *var,
 
        Throw an error if the variable cannot be found.  */
 
     struct value *(*la_read_var_value) (struct symbol *var,
+                                       const struct block *var_block,
                                        struct frame_info *frame);
 
     /* PC is possibly an unknown languages trampoline.
                                        struct frame_info *frame);
 
     /* PC is possibly an unknown languages trampoline.
@@ -261,9 +273,11 @@ struct language_defn
        the part of symbol lookup where C looks up static and global
        variables.  */
 
        the part of symbol lookup where C looks up static and global
        variables.  */
 
-    struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
-                                                const struct block *,
-                                                const domain_enum);
+    struct block_symbol (*la_lookup_symbol_nonlocal)
+      (const struct language_defn *,
+       const char *,
+       const struct block *,
+       const domain_enum);
 
     /* Find the definition of the type with the given name.  */
     struct type *(*la_lookup_transparent_type) (const char *);
 
     /* Find the definition of the type with the given name.  */
     struct type *(*la_lookup_transparent_type) (const char *);
@@ -355,6 +369,36 @@ struct language_defn
     /* Various operations on varobj.  */
     const struct lang_varobj_ops *la_varobj_ops;
 
     /* Various operations on varobj.  */
     const struct lang_varobj_ops *la_varobj_ops;
 
+    /* If this language allows compilation from the gdb command line,
+       this method should be non-NULL.  When called it should return
+       an instance of struct gcc_context appropriate to the language.
+       When defined this method must never return NULL; instead it
+       should throw an exception on failure.  The returned compiler
+       instance is owned by its caller and must be deallocated by
+       calling its 'destroy' method.  */
+
+    struct compile_instance *(*la_get_compile_instance) (void);
+
+    /* This method must be defined if 'la_get_gcc_context' is defined.
+       If 'la_get_gcc_context' is not defined, then this method is
+       ignored.
+
+       This takes the user-supplied text and returns a newly malloc'd
+       bit of code to compile.  The caller owns the result.
+
+       INST is the compiler instance being used.
+       INPUT is the user's input text.
+       GDBARCH is the architecture to use.
+       EXPR_BLOCK is the block in which the expression is being
+       parsed.
+       EXPR_PC is the PC at which the expression is being parsed.  */
+
+    char *(*la_compute_program) (struct compile_instance *inst,
+                                const char *input,
+                                struct gdbarch *gdbarch,
+                                const struct block *expr_block,
+                                CORE_ADDR expr_pc);
+
     /* Add fields above this point, so the magic number is always last.  */
     /* Magic number for compat checking.  */
 
     /* Add fields above this point, so the magic number is always last.  */
     /* Magic number for compat checking.  */
 
@@ -404,9 +448,20 @@ struct type *language_bool_type (const struct language_defn *l,
 struct type *language_string_char_type (const struct language_defn *l,
                                        struct gdbarch *gdbarch);
 
 struct type *language_string_char_type (const struct language_defn *l,
                                        struct gdbarch *gdbarch);
 
-struct type *language_lookup_primitive_type_by_name (const struct language_defn *l,
-                                                    struct gdbarch *gdbarch,
-                                                    const char *name);
+/* Look up type NAME in language L, and return its definition for architecture
+   GDBARCH.  Returns NULL if not found.  */
+
+struct type *language_lookup_primitive_type (const struct language_defn *l,
+                                            struct gdbarch *gdbarch,
+                                            const char *name);
+
+/* Wrapper around language_lookup_primitive_type to return the
+   corresponding symbol.  */
+
+struct symbol *
+  language_lookup_primitive_type_as_symbol (const struct language_defn *l,
+                                           struct gdbarch *gdbarch,
+                                           const char *name);
 
 \f
 /* These macros define the behaviour of the expression 
 
 \f
 /* These macros define the behaviour of the expression 
@@ -495,8 +550,6 @@ extern const char *language_str (enum language);
 
 extern void add_language (const struct language_defn *);
 
 
 extern void add_language (const struct language_defn *);
 
-extern enum language get_frame_language (void);        /* In stack.c */
-
 /* Check for a language-specific trampoline.  */
 
 extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc);
 /* Check for a language-specific trampoline.  */
 
 extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc);
This page took 0.03742 seconds and 4 git commands to generate.