X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Flanguage.h;h=73619cacf3c6f9b946fd0f536476fe3944750c64;hb=711833262c7a413b10a32f01153454bc5a53a5a6;hp=a47a44d25947ad65d1663a5ad71da65d72ac9aa7;hpb=1a119f3613c3094c82b127b735b9c69648a37387;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/language.h b/gdb/language.h index a47a44d..73619ca 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -1,7 +1,6 @@ /* Source-language-related definitions for GDB. - Copyright (C) 1991-1995, 1998-2000, 2003-2004, 2007-2012 Free - Software Foundation, Inc. + Copyright (C) 1991-2014 Free Software Foundation, Inc. Contributed by the Department of Computer Science at the State University of New York at Buffalo. @@ -24,6 +23,8 @@ #if !defined (LANGUAGE_H) #define LANGUAGE_H 1 +#include "symtab.h" + /* Forward decls for prototypes. */ struct value; struct objfile; @@ -31,6 +32,9 @@ struct frame_info; struct expression; struct ui_file; struct value_print_options; +struct type_print_options; +struct lang_varobj_ops; +struct parser_state; #define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */ @@ -55,27 +59,6 @@ extern enum range_check } range_check; -/* type_mode == - type_mode_auto: type_check set automatically to default of language. - type_mode_manual: type_check set manually by user. */ - -extern enum type_mode - { - type_mode_auto, type_mode_manual - } -type_mode; - -/* type_check == - type_check_on: Types are checked in GDB expressions, producing errors. - type_check_warn: Types are checked, producing warnings. - type_check_off: Types are not checked in GDB expressions. */ - -extern enum type_check - { - type_check_off, type_check_warn, type_check_on - } -type_check; - /* case_mode == case_mode_auto: case_sensitivity set upon selection of scope. case_mode_manual: case_sensitivity set only by user. */ @@ -152,7 +135,11 @@ struct language_defn { /* Name of the language. */ - char *la_name; + const char *la_name; + + /* Natural or official name of the language. */ + + const char *la_natural_name; /* its symtab language-enum (defs.h). */ @@ -162,10 +149,6 @@ struct language_defn enum range_check la_range_check; - /* Default type checking. */ - - enum type_check la_type_check; - /* Default case sensitivity. */ enum case_sensitivity la_case_sensitivity; @@ -182,7 +165,7 @@ struct language_defn /* Parser function. */ - int (*la_parser) (void); + int (*la_parser) (struct parser_state *); /* Parser error function. */ @@ -210,7 +193,7 @@ struct language_defn /* Print a type using syntax appropriate for this language. */ void (*la_print_type) (struct type *, const char *, struct ui_file *, int, - int); + int, const struct type_print_options *); /* Print a typedef using syntax appropriate for this language. TYPE is the underlying type. NEW_SYMBOL is the symbol naming @@ -240,17 +223,26 @@ struct language_defn OPTIONS are the formatting options to be used when printing. */ - int (*la_val_print) (struct type *type, - const gdb_byte *contents, - int embedded_offset, CORE_ADDR address, - struct ui_file *stream, int recurse, - const struct value *val, - const struct value_print_options *options); + void (*la_val_print) (struct type *type, + const gdb_byte *contents, + int embedded_offset, CORE_ADDR address, + struct ui_file *stream, int recurse, + const struct value *val, + const struct value_print_options *options); /* Print a top-level value using syntax appropriate for this language. */ - int (*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. + + Throw an error if the variable cannot be found. */ + + struct value *(*la_read_var_value) (struct symbol *var, + struct frame_info *frame); /* PC is possibly an unknown languages trampoline. If that PC falls in a trampoline belonging to this language, @@ -297,10 +289,14 @@ struct language_defn /* The list of characters forming word boundaries. */ char *(*la_word_break_characters) (void); - /* Should return a NULL terminated array of all symbols which - are possible completions for TEXT. WORD is the entire command - on which the completion is being made. */ - char **(*la_make_symbol_completion_list) (char *text, char *word); + /* Should return a vector of all symbols which are possible + completions for TEXT. WORD is the entire command on which the + completion is being made. If CODE is TYPE_CODE_UNDEF, then all + symbols should be examined; otherwise, only STRUCT_DOMAIN + symbols whose type has a code of CODE should be matched. */ + VEC (char_ptr) *(*la_make_symbol_completion_list) (const char *text, + const char *word, + enum type_code code); /* The per-architecture (OS/ABI) language information. */ void (*la_language_arch_info) (struct gdbarch *, @@ -339,9 +335,9 @@ struct language_defn /* Find all symbols in the current program space matching NAME in DOMAIN, according to this language's rules. - The search starts with BLOCK. This function iterates upward - through blocks. When the outermost block has been finished, - the function returns. + The search is done in BLOCK only. + The caller is responsible for iterating up through superblocks + if desired. For each one, call CALLBACK with the symbol and the DATA argument. If CALLBACK returns zero, the iteration ends at that @@ -356,6 +352,9 @@ struct language_defn symbol_found_callback_ftype *callback, void *data); + /* Various operations on varobj. */ + const struct lang_varobj_ops *la_varobj_ops; + /* Add fields above this point, so the magic number is always last. */ /* Magic number for compat checking. */ @@ -413,9 +412,6 @@ struct type *language_lookup_primitive_type_by_name (const struct language_defn /* These macros define the behaviour of the expression evaluator. */ -/* Should we strictly type check expressions? */ -#define STRICT_TYPE (type_check != type_check_off) - /* Should we range check values against the domain of their type? */ #define RANGE_CHECK (range_check != range_check_off) @@ -435,8 +431,8 @@ extern enum language set_language (enum language); the current setting of working_lang, which the user sets with the "set language" command. */ -#define LA_PRINT_TYPE(type,varstring,stream,show,level) \ - (current_language->la_print_type(type,varstring,stream,show,level)) +#define LA_PRINT_TYPE(type,varstring,stream,show,level,flags) \ + (current_language->la_print_type(type,varstring,stream,show,level,flags)) #define LA_PRINT_TYPEDEF(type,new_symbol,stream) \ (current_language->la_print_typedef(type,new_symbol,stream)) @@ -479,16 +475,8 @@ extern enum language set_language (enum language); extern int pointer_type (struct type *); -/* Checks Binary and Unary operations for semantic type correctness. */ -/* FIXME: Does not appear to be used. */ -#define unop_type_check(v,o) binop_type_check((v),NULL,(o)) - -extern void binop_type_check (struct value *, struct value *, int); - /* Error messages */ -extern void type_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); - extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2); /* Data: Does this value represent "truth" to the current language? */ @@ -501,7 +489,7 @@ extern enum language language_enum (char *str); extern const struct language_defn *language_def (enum language); -extern char *language_str (enum language); +extern const char *language_str (enum language); /* Add a language to the set known by GDB (at initialization time). */