1*5796c8dcSSimon Schubert /* Source-language-related definitions for GDB. 2*5796c8dcSSimon Schubert 3*5796c8dcSSimon Schubert Copyright (C) 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2003, 2004, 4*5796c8dcSSimon Schubert 2007, 2008, 2009 Free Software Foundation, Inc. 5*5796c8dcSSimon Schubert 6*5796c8dcSSimon Schubert Contributed by the Department of Computer Science at the State University 7*5796c8dcSSimon Schubert of New York at Buffalo. 8*5796c8dcSSimon Schubert 9*5796c8dcSSimon Schubert This file is part of GDB. 10*5796c8dcSSimon Schubert 11*5796c8dcSSimon Schubert This program is free software; you can redistribute it and/or modify 12*5796c8dcSSimon Schubert it under the terms of the GNU General Public License as published by 13*5796c8dcSSimon Schubert the Free Software Foundation; either version 3 of the License, or 14*5796c8dcSSimon Schubert (at your option) any later version. 15*5796c8dcSSimon Schubert 16*5796c8dcSSimon Schubert This program is distributed in the hope that it will be useful, 17*5796c8dcSSimon Schubert but WITHOUT ANY WARRANTY; without even the implied warranty of 18*5796c8dcSSimon Schubert MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19*5796c8dcSSimon Schubert GNU General Public License for more details. 20*5796c8dcSSimon Schubert 21*5796c8dcSSimon Schubert You should have received a copy of the GNU General Public License 22*5796c8dcSSimon Schubert along with this program. If not, see <http://www.gnu.org/licenses/>. */ 23*5796c8dcSSimon Schubert 24*5796c8dcSSimon Schubert #if !defined (LANGUAGE_H) 25*5796c8dcSSimon Schubert #define LANGUAGE_H 1 26*5796c8dcSSimon Schubert 27*5796c8dcSSimon Schubert /* Forward decls for prototypes */ 28*5796c8dcSSimon Schubert struct value; 29*5796c8dcSSimon Schubert struct objfile; 30*5796c8dcSSimon Schubert struct frame_info; 31*5796c8dcSSimon Schubert struct expression; 32*5796c8dcSSimon Schubert struct ui_file; 33*5796c8dcSSimon Schubert struct value_print_options; 34*5796c8dcSSimon Schubert 35*5796c8dcSSimon Schubert #define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims */ 36*5796c8dcSSimon Schubert 37*5796c8dcSSimon Schubert /* range_mode == 38*5796c8dcSSimon Schubert range_mode_auto: range_check set automatically to default of language. 39*5796c8dcSSimon Schubert range_mode_manual: range_check set manually by user. */ 40*5796c8dcSSimon Schubert 41*5796c8dcSSimon Schubert extern enum range_mode 42*5796c8dcSSimon Schubert { 43*5796c8dcSSimon Schubert range_mode_auto, range_mode_manual 44*5796c8dcSSimon Schubert } 45*5796c8dcSSimon Schubert range_mode; 46*5796c8dcSSimon Schubert 47*5796c8dcSSimon Schubert /* range_check == 48*5796c8dcSSimon Schubert range_check_on: Ranges are checked in GDB expressions, producing errors. 49*5796c8dcSSimon Schubert range_check_warn: Ranges are checked, producing warnings. 50*5796c8dcSSimon Schubert range_check_off: Ranges are not checked in GDB expressions. */ 51*5796c8dcSSimon Schubert 52*5796c8dcSSimon Schubert extern enum range_check 53*5796c8dcSSimon Schubert { 54*5796c8dcSSimon Schubert range_check_off, range_check_warn, range_check_on 55*5796c8dcSSimon Schubert } 56*5796c8dcSSimon Schubert range_check; 57*5796c8dcSSimon Schubert 58*5796c8dcSSimon Schubert /* type_mode == 59*5796c8dcSSimon Schubert type_mode_auto: type_check set automatically to default of language 60*5796c8dcSSimon Schubert type_mode_manual: type_check set manually by user. */ 61*5796c8dcSSimon Schubert 62*5796c8dcSSimon Schubert extern enum type_mode 63*5796c8dcSSimon Schubert { 64*5796c8dcSSimon Schubert type_mode_auto, type_mode_manual 65*5796c8dcSSimon Schubert } 66*5796c8dcSSimon Schubert type_mode; 67*5796c8dcSSimon Schubert 68*5796c8dcSSimon Schubert /* type_check == 69*5796c8dcSSimon Schubert type_check_on: Types are checked in GDB expressions, producing errors. 70*5796c8dcSSimon Schubert type_check_warn: Types are checked, producing warnings. 71*5796c8dcSSimon Schubert type_check_off: Types are not checked in GDB expressions. */ 72*5796c8dcSSimon Schubert 73*5796c8dcSSimon Schubert extern enum type_check 74*5796c8dcSSimon Schubert { 75*5796c8dcSSimon Schubert type_check_off, type_check_warn, type_check_on 76*5796c8dcSSimon Schubert } 77*5796c8dcSSimon Schubert type_check; 78*5796c8dcSSimon Schubert 79*5796c8dcSSimon Schubert /* case_mode == 80*5796c8dcSSimon Schubert case_mode_auto: case_sensitivity set upon selection of scope 81*5796c8dcSSimon Schubert case_mode_manual: case_sensitivity set only by user. */ 82*5796c8dcSSimon Schubert 83*5796c8dcSSimon Schubert extern enum case_mode 84*5796c8dcSSimon Schubert { 85*5796c8dcSSimon Schubert case_mode_auto, case_mode_manual 86*5796c8dcSSimon Schubert } 87*5796c8dcSSimon Schubert case_mode; 88*5796c8dcSSimon Schubert 89*5796c8dcSSimon Schubert /* array_ordering == 90*5796c8dcSSimon Schubert array_row_major: Arrays are in row major order 91*5796c8dcSSimon Schubert array_column_major: Arrays are in column major order.*/ 92*5796c8dcSSimon Schubert 93*5796c8dcSSimon Schubert extern enum array_ordering 94*5796c8dcSSimon Schubert { 95*5796c8dcSSimon Schubert array_row_major, array_column_major 96*5796c8dcSSimon Schubert } 97*5796c8dcSSimon Schubert array_ordering; 98*5796c8dcSSimon Schubert 99*5796c8dcSSimon Schubert 100*5796c8dcSSimon Schubert /* case_sensitivity == 101*5796c8dcSSimon Schubert case_sensitive_on: Case sensitivity in name matching is used 102*5796c8dcSSimon Schubert case_sensitive_off: Case sensitivity in name matching is not used */ 103*5796c8dcSSimon Schubert 104*5796c8dcSSimon Schubert extern enum case_sensitivity 105*5796c8dcSSimon Schubert { 106*5796c8dcSSimon Schubert case_sensitive_on, case_sensitive_off 107*5796c8dcSSimon Schubert } 108*5796c8dcSSimon Schubert case_sensitivity; 109*5796c8dcSSimon Schubert 110*5796c8dcSSimon Schubert 111*5796c8dcSSimon Schubert /* macro_expansion == 112*5796c8dcSSimon Schubert macro_expansion_no: No macro expansion is available 113*5796c8dcSSimon Schubert macro_expansion_c: C-like macro expansion is available */ 114*5796c8dcSSimon Schubert 115*5796c8dcSSimon Schubert enum macro_expansion 116*5796c8dcSSimon Schubert { 117*5796c8dcSSimon Schubert macro_expansion_no, macro_expansion_c 118*5796c8dcSSimon Schubert }; 119*5796c8dcSSimon Schubert 120*5796c8dcSSimon Schubert 121*5796c8dcSSimon Schubert /* Per architecture (OS/ABI) language information. */ 122*5796c8dcSSimon Schubert 123*5796c8dcSSimon Schubert struct language_arch_info 124*5796c8dcSSimon Schubert { 125*5796c8dcSSimon Schubert /* Its primitive types. This is a vector ended by a NULL pointer. 126*5796c8dcSSimon Schubert These types can be specified by name in parsing types in 127*5796c8dcSSimon Schubert expressions, regardless of whether the program being debugged 128*5796c8dcSSimon Schubert actually defines such a type. */ 129*5796c8dcSSimon Schubert struct type **primitive_type_vector; 130*5796c8dcSSimon Schubert /* Type of elements of strings. */ 131*5796c8dcSSimon Schubert struct type *string_char_type; 132*5796c8dcSSimon Schubert 133*5796c8dcSSimon Schubert /* Symbol name of type to use as boolean type, if defined. */ 134*5796c8dcSSimon Schubert const char *bool_type_symbol; 135*5796c8dcSSimon Schubert /* Otherwise, this is the default boolean builtin type. */ 136*5796c8dcSSimon Schubert struct type *bool_type_default; 137*5796c8dcSSimon Schubert }; 138*5796c8dcSSimon Schubert 139*5796c8dcSSimon Schubert /* Structure tying together assorted information about a language. */ 140*5796c8dcSSimon Schubert 141*5796c8dcSSimon Schubert struct language_defn 142*5796c8dcSSimon Schubert { 143*5796c8dcSSimon Schubert /* Name of the language */ 144*5796c8dcSSimon Schubert 145*5796c8dcSSimon Schubert char *la_name; 146*5796c8dcSSimon Schubert 147*5796c8dcSSimon Schubert /* its symtab language-enum (defs.h) */ 148*5796c8dcSSimon Schubert 149*5796c8dcSSimon Schubert enum language la_language; 150*5796c8dcSSimon Schubert 151*5796c8dcSSimon Schubert /* Default range checking */ 152*5796c8dcSSimon Schubert 153*5796c8dcSSimon Schubert enum range_check la_range_check; 154*5796c8dcSSimon Schubert 155*5796c8dcSSimon Schubert /* Default type checking */ 156*5796c8dcSSimon Schubert 157*5796c8dcSSimon Schubert enum type_check la_type_check; 158*5796c8dcSSimon Schubert 159*5796c8dcSSimon Schubert /* Default case sensitivity */ 160*5796c8dcSSimon Schubert enum case_sensitivity la_case_sensitivity; 161*5796c8dcSSimon Schubert 162*5796c8dcSSimon Schubert /* Multi-dimensional array ordering */ 163*5796c8dcSSimon Schubert enum array_ordering la_array_ordering; 164*5796c8dcSSimon Schubert 165*5796c8dcSSimon Schubert /* Style of macro expansion, if any, supported by this language. */ 166*5796c8dcSSimon Schubert enum macro_expansion la_macro_expansion; 167*5796c8dcSSimon Schubert 168*5796c8dcSSimon Schubert /* Definitions related to expression printing, prefixifying, and 169*5796c8dcSSimon Schubert dumping */ 170*5796c8dcSSimon Schubert 171*5796c8dcSSimon Schubert const struct exp_descriptor *la_exp_desc; 172*5796c8dcSSimon Schubert 173*5796c8dcSSimon Schubert /* Parser function. */ 174*5796c8dcSSimon Schubert 175*5796c8dcSSimon Schubert int (*la_parser) (void); 176*5796c8dcSSimon Schubert 177*5796c8dcSSimon Schubert /* Parser error function */ 178*5796c8dcSSimon Schubert 179*5796c8dcSSimon Schubert void (*la_error) (char *); 180*5796c8dcSSimon Schubert 181*5796c8dcSSimon Schubert /* Given an expression *EXPP created by prefixifying the result of 182*5796c8dcSSimon Schubert la_parser, perform any remaining processing necessary to complete 183*5796c8dcSSimon Schubert its translation. *EXPP may change; la_post_parser is responsible 184*5796c8dcSSimon Schubert for releasing its previous contents, if necessary. If 185*5796c8dcSSimon Schubert VOID_CONTEXT_P, then no value is expected from the expression. */ 186*5796c8dcSSimon Schubert 187*5796c8dcSSimon Schubert void (*la_post_parser) (struct expression ** expp, int void_context_p); 188*5796c8dcSSimon Schubert 189*5796c8dcSSimon Schubert void (*la_printchar) (int ch, struct type *chtype, struct ui_file * stream); 190*5796c8dcSSimon Schubert 191*5796c8dcSSimon Schubert void (*la_printstr) (struct ui_file * stream, struct type *elttype, 192*5796c8dcSSimon Schubert const gdb_byte *string, unsigned int length, 193*5796c8dcSSimon Schubert int force_ellipses, 194*5796c8dcSSimon Schubert const struct value_print_options *); 195*5796c8dcSSimon Schubert 196*5796c8dcSSimon Schubert void (*la_emitchar) (int ch, struct type *chtype, 197*5796c8dcSSimon Schubert struct ui_file * stream, int quoter); 198*5796c8dcSSimon Schubert 199*5796c8dcSSimon Schubert /* Print a type using syntax appropriate for this language. */ 200*5796c8dcSSimon Schubert 201*5796c8dcSSimon Schubert void (*la_print_type) (struct type *, char *, struct ui_file *, int, 202*5796c8dcSSimon Schubert int); 203*5796c8dcSSimon Schubert 204*5796c8dcSSimon Schubert /* Print a typedef using syntax appropriate for this language. 205*5796c8dcSSimon Schubert TYPE is the underlying type. NEW_SYMBOL is the symbol naming 206*5796c8dcSSimon Schubert the type. STREAM is the output stream on which to print. */ 207*5796c8dcSSimon Schubert 208*5796c8dcSSimon Schubert void (*la_print_typedef) (struct type *type, struct symbol *new_symbol, 209*5796c8dcSSimon Schubert struct ui_file *stream); 210*5796c8dcSSimon Schubert 211*5796c8dcSSimon Schubert /* Print a value using syntax appropriate for this language. */ 212*5796c8dcSSimon Schubert 213*5796c8dcSSimon Schubert int (*la_val_print) (struct type *, const gdb_byte *, int, CORE_ADDR, 214*5796c8dcSSimon Schubert struct ui_file *, int, 215*5796c8dcSSimon Schubert const struct value_print_options *); 216*5796c8dcSSimon Schubert 217*5796c8dcSSimon Schubert /* Print a top-level value using syntax appropriate for this language. */ 218*5796c8dcSSimon Schubert 219*5796c8dcSSimon Schubert int (*la_value_print) (struct value *, struct ui_file *, 220*5796c8dcSSimon Schubert const struct value_print_options *); 221*5796c8dcSSimon Schubert 222*5796c8dcSSimon Schubert /* PC is possibly an unknown languages trampoline. 223*5796c8dcSSimon Schubert If that PC falls in a trampoline belonging to this language, 224*5796c8dcSSimon Schubert return the address of the first pc in the real function, or 0 225*5796c8dcSSimon Schubert if it isn't a language tramp for this language. */ 226*5796c8dcSSimon Schubert CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR); 227*5796c8dcSSimon Schubert 228*5796c8dcSSimon Schubert /* Now come some hooks for lookup_symbol. */ 229*5796c8dcSSimon Schubert 230*5796c8dcSSimon Schubert /* If this is non-NULL, specifies the name that of the implicit 231*5796c8dcSSimon Schubert local variable that refers to the current object instance. */ 232*5796c8dcSSimon Schubert 233*5796c8dcSSimon Schubert char *la_name_of_this; 234*5796c8dcSSimon Schubert 235*5796c8dcSSimon Schubert /* This is a function that lookup_symbol will call when it gets to 236*5796c8dcSSimon Schubert the part of symbol lookup where C looks up static and global 237*5796c8dcSSimon Schubert variables. */ 238*5796c8dcSSimon Schubert 239*5796c8dcSSimon Schubert struct symbol *(*la_lookup_symbol_nonlocal) (const char *, 240*5796c8dcSSimon Schubert const char *, 241*5796c8dcSSimon Schubert const struct block *, 242*5796c8dcSSimon Schubert const domain_enum); 243*5796c8dcSSimon Schubert 244*5796c8dcSSimon Schubert /* Find the definition of the type with the given name. */ 245*5796c8dcSSimon Schubert struct type *(*la_lookup_transparent_type) (const char *); 246*5796c8dcSSimon Schubert 247*5796c8dcSSimon Schubert /* Return demangled language symbol, or NULL. */ 248*5796c8dcSSimon Schubert char *(*la_demangle) (const char *mangled, int options); 249*5796c8dcSSimon Schubert 250*5796c8dcSSimon Schubert /* Return class name of a mangled method name or NULL. */ 251*5796c8dcSSimon Schubert char *(*la_class_name_from_physname) (const char *physname); 252*5796c8dcSSimon Schubert 253*5796c8dcSSimon Schubert /* Table for printing expressions */ 254*5796c8dcSSimon Schubert 255*5796c8dcSSimon Schubert const struct op_print *la_op_print_tab; 256*5796c8dcSSimon Schubert 257*5796c8dcSSimon Schubert /* Zero if the language has first-class arrays. True if there are no 258*5796c8dcSSimon Schubert array values, and array objects decay to pointers, as in C. */ 259*5796c8dcSSimon Schubert 260*5796c8dcSSimon Schubert char c_style_arrays; 261*5796c8dcSSimon Schubert 262*5796c8dcSSimon Schubert /* Index to use for extracting the first element of a string. */ 263*5796c8dcSSimon Schubert char string_lower_bound; 264*5796c8dcSSimon Schubert 265*5796c8dcSSimon Schubert /* The list of characters forming word boundaries. */ 266*5796c8dcSSimon Schubert char *(*la_word_break_characters) (void); 267*5796c8dcSSimon Schubert 268*5796c8dcSSimon Schubert /* Should return a NULL terminated array of all symbols which 269*5796c8dcSSimon Schubert are possible completions for TEXT. WORD is the entire command 270*5796c8dcSSimon Schubert on which the completion is being made. */ 271*5796c8dcSSimon Schubert char **(*la_make_symbol_completion_list) (char *text, char *word); 272*5796c8dcSSimon Schubert 273*5796c8dcSSimon Schubert /* The per-architecture (OS/ABI) language information. */ 274*5796c8dcSSimon Schubert void (*la_language_arch_info) (struct gdbarch *, 275*5796c8dcSSimon Schubert struct language_arch_info *); 276*5796c8dcSSimon Schubert 277*5796c8dcSSimon Schubert /* Print the index of an element of an array. */ 278*5796c8dcSSimon Schubert void (*la_print_array_index) (struct value *index_value, 279*5796c8dcSSimon Schubert struct ui_file *stream, 280*5796c8dcSSimon Schubert const struct value_print_options *options); 281*5796c8dcSSimon Schubert 282*5796c8dcSSimon Schubert /* Return non-zero if TYPE should be passed (and returned) by 283*5796c8dcSSimon Schubert reference at the language level. */ 284*5796c8dcSSimon Schubert int (*la_pass_by_reference) (struct type *type); 285*5796c8dcSSimon Schubert 286*5796c8dcSSimon Schubert /* Obtain a string from the inferior, storing it in a newly allocated 287*5796c8dcSSimon Schubert buffer in BUFFER, which should be freed by the caller. If the 288*5796c8dcSSimon Schubert in- and out-parameter *LENGTH is specified at -1, the string is 289*5796c8dcSSimon Schubert read until a null character of the appropriate width is found - 290*5796c8dcSSimon Schubert otherwise the string is read to the length of characters specified. 291*5796c8dcSSimon Schubert On completion, *LENGTH will hold the size of the string in characters. 292*5796c8dcSSimon Schubert If a *LENGTH of -1 was specified it will count only actual 293*5796c8dcSSimon Schubert characters, excluding any eventual terminating null character. 294*5796c8dcSSimon Schubert Otherwise *LENGTH will include all characters - including any nulls. 295*5796c8dcSSimon Schubert CHARSET will hold the encoding used in the string. */ 296*5796c8dcSSimon Schubert void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length, 297*5796c8dcSSimon Schubert const char **charset); 298*5796c8dcSSimon Schubert 299*5796c8dcSSimon Schubert /* Add fields above this point, so the magic number is always last. */ 300*5796c8dcSSimon Schubert /* Magic number for compat checking */ 301*5796c8dcSSimon Schubert 302*5796c8dcSSimon Schubert long la_magic; 303*5796c8dcSSimon Schubert 304*5796c8dcSSimon Schubert }; 305*5796c8dcSSimon Schubert 306*5796c8dcSSimon Schubert #define LANG_MAGIC 910823L 307*5796c8dcSSimon Schubert 308*5796c8dcSSimon Schubert /* Pointer to the language_defn for our current language. This pointer 309*5796c8dcSSimon Schubert always points to *some* valid struct; it can be used without checking 310*5796c8dcSSimon Schubert it for validity. 311*5796c8dcSSimon Schubert 312*5796c8dcSSimon Schubert The current language affects expression parsing and evaluation 313*5796c8dcSSimon Schubert (FIXME: it might be cleaner to make the evaluation-related stuff 314*5796c8dcSSimon Schubert separate exp_opcodes for each different set of semantics. We 315*5796c8dcSSimon Schubert should at least think this through more clearly with respect to 316*5796c8dcSSimon Schubert what happens if the language is changed between parsing and 317*5796c8dcSSimon Schubert evaluation) and printing of things like types and arrays. It does 318*5796c8dcSSimon Schubert *not* affect symbol-reading-- each source file in a symbol-file has 319*5796c8dcSSimon Schubert its own language and we should keep track of that regardless of the 320*5796c8dcSSimon Schubert language when symbols are read. If we want some manual setting for 321*5796c8dcSSimon Schubert the language of symbol files (e.g. detecting when ".c" files are 322*5796c8dcSSimon Schubert C++), it should be a separate setting from the current_language. */ 323*5796c8dcSSimon Schubert 324*5796c8dcSSimon Schubert extern const struct language_defn *current_language; 325*5796c8dcSSimon Schubert 326*5796c8dcSSimon Schubert /* Pointer to the language_defn expected by the user, e.g. the language 327*5796c8dcSSimon Schubert of main(), or the language we last mentioned in a message, or C. */ 328*5796c8dcSSimon Schubert 329*5796c8dcSSimon Schubert extern const struct language_defn *expected_language; 330*5796c8dcSSimon Schubert 331*5796c8dcSSimon Schubert /* language_mode == 332*5796c8dcSSimon Schubert language_mode_auto: current_language automatically set upon selection 333*5796c8dcSSimon Schubert of scope (e.g. stack frame) 334*5796c8dcSSimon Schubert language_mode_manual: current_language set only by user. */ 335*5796c8dcSSimon Schubert 336*5796c8dcSSimon Schubert extern enum language_mode 337*5796c8dcSSimon Schubert { 338*5796c8dcSSimon Schubert language_mode_auto, language_mode_manual 339*5796c8dcSSimon Schubert } 340*5796c8dcSSimon Schubert language_mode; 341*5796c8dcSSimon Schubert 342*5796c8dcSSimon Schubert struct type *language_bool_type (const struct language_defn *l, 343*5796c8dcSSimon Schubert struct gdbarch *gdbarch); 344*5796c8dcSSimon Schubert 345*5796c8dcSSimon Schubert struct type *language_string_char_type (const struct language_defn *l, 346*5796c8dcSSimon Schubert struct gdbarch *gdbarch); 347*5796c8dcSSimon Schubert 348*5796c8dcSSimon Schubert struct type *language_lookup_primitive_type_by_name (const struct language_defn *l, 349*5796c8dcSSimon Schubert struct gdbarch *gdbarch, 350*5796c8dcSSimon Schubert const char *name); 351*5796c8dcSSimon Schubert 352*5796c8dcSSimon Schubert 353*5796c8dcSSimon Schubert /* These macros define the behaviour of the expression 354*5796c8dcSSimon Schubert evaluator. */ 355*5796c8dcSSimon Schubert 356*5796c8dcSSimon Schubert /* Should we strictly type check expressions? */ 357*5796c8dcSSimon Schubert #define STRICT_TYPE (type_check != type_check_off) 358*5796c8dcSSimon Schubert 359*5796c8dcSSimon Schubert /* Should we range check values against the domain of their type? */ 360*5796c8dcSSimon Schubert #define RANGE_CHECK (range_check != range_check_off) 361*5796c8dcSSimon Schubert 362*5796c8dcSSimon Schubert /* "cast" really means conversion */ 363*5796c8dcSSimon Schubert /* FIXME -- should be a setting in language_defn */ 364*5796c8dcSSimon Schubert #define CAST_IS_CONVERSION (current_language->la_language == language_c || \ 365*5796c8dcSSimon Schubert current_language->la_language == language_cplus || \ 366*5796c8dcSSimon Schubert current_language->la_language == language_objc) 367*5796c8dcSSimon Schubert 368*5796c8dcSSimon Schubert extern void language_info (int); 369*5796c8dcSSimon Schubert 370*5796c8dcSSimon Schubert extern enum language set_language (enum language); 371*5796c8dcSSimon Schubert 372*5796c8dcSSimon Schubert 373*5796c8dcSSimon Schubert /* This page contains functions that return things that are 374*5796c8dcSSimon Schubert specific to languages. Each of these functions is based on 375*5796c8dcSSimon Schubert the current setting of working_lang, which the user sets 376*5796c8dcSSimon Schubert with the "set language" command. */ 377*5796c8dcSSimon Schubert 378*5796c8dcSSimon Schubert #define LA_PRINT_TYPE(type,varstring,stream,show,level) \ 379*5796c8dcSSimon Schubert (current_language->la_print_type(type,varstring,stream,show,level)) 380*5796c8dcSSimon Schubert 381*5796c8dcSSimon Schubert #define LA_PRINT_TYPEDEF(type,new_symbol,stream) \ 382*5796c8dcSSimon Schubert (current_language->la_print_typedef(type,new_symbol,stream)) 383*5796c8dcSSimon Schubert 384*5796c8dcSSimon Schubert #define LA_VAL_PRINT(type,valaddr,offset,addr,stream,recurse,options) \ 385*5796c8dcSSimon Schubert (current_language->la_val_print(type,valaddr,offset,addr,stream, \ 386*5796c8dcSSimon Schubert recurse,options)) 387*5796c8dcSSimon Schubert #define LA_VALUE_PRINT(val,stream,options) \ 388*5796c8dcSSimon Schubert (current_language->la_value_print(val,stream,options)) 389*5796c8dcSSimon Schubert 390*5796c8dcSSimon Schubert #define LA_PRINT_CHAR(ch, type, stream) \ 391*5796c8dcSSimon Schubert (current_language->la_printchar(ch, type, stream)) 392*5796c8dcSSimon Schubert #define LA_PRINT_STRING(stream, elttype, string, length, force_ellipses,options) \ 393*5796c8dcSSimon Schubert (current_language->la_printstr(stream, elttype, string, length, \ 394*5796c8dcSSimon Schubert force_ellipses,options)) 395*5796c8dcSSimon Schubert #define LA_EMIT_CHAR(ch, type, stream, quoter) \ 396*5796c8dcSSimon Schubert (current_language->la_emitchar(ch, type, stream, quoter)) 397*5796c8dcSSimon Schubert #define LA_GET_STRING(value, buffer, length, encoding) \ 398*5796c8dcSSimon Schubert (current_language->la_get_string(value, buffer, length, encoding)) 399*5796c8dcSSimon Schubert 400*5796c8dcSSimon Schubert #define LA_PRINT_ARRAY_INDEX(index_value, stream, optins) \ 401*5796c8dcSSimon Schubert (current_language->la_print_array_index(index_value, stream, options)) 402*5796c8dcSSimon Schubert 403*5796c8dcSSimon Schubert /* Test a character to decide whether it can be printed in literal form 404*5796c8dcSSimon Schubert or needs to be printed in another representation. For example, 405*5796c8dcSSimon Schubert in C the literal form of the character with octal value 141 is 'a' 406*5796c8dcSSimon Schubert and the "other representation" is '\141'. The "other representation" 407*5796c8dcSSimon Schubert is program language dependent. */ 408*5796c8dcSSimon Schubert 409*5796c8dcSSimon Schubert #define PRINT_LITERAL_FORM(c) \ 410*5796c8dcSSimon Schubert ((c) >= 0x20 \ 411*5796c8dcSSimon Schubert && ((c) < 0x7F || (c) >= 0xA0) \ 412*5796c8dcSSimon Schubert && (!sevenbit_strings || (c) < 0x80)) 413*5796c8dcSSimon Schubert 414*5796c8dcSSimon Schubert /* Type predicates */ 415*5796c8dcSSimon Schubert 416*5796c8dcSSimon Schubert extern int simple_type (struct type *); 417*5796c8dcSSimon Schubert 418*5796c8dcSSimon Schubert extern int ordered_type (struct type *); 419*5796c8dcSSimon Schubert 420*5796c8dcSSimon Schubert extern int same_type (struct type *, struct type *); 421*5796c8dcSSimon Schubert 422*5796c8dcSSimon Schubert extern int integral_type (struct type *); 423*5796c8dcSSimon Schubert 424*5796c8dcSSimon Schubert extern int numeric_type (struct type *); 425*5796c8dcSSimon Schubert 426*5796c8dcSSimon Schubert extern int character_type (struct type *); 427*5796c8dcSSimon Schubert 428*5796c8dcSSimon Schubert extern int boolean_type (struct type *); 429*5796c8dcSSimon Schubert 430*5796c8dcSSimon Schubert extern int float_type (struct type *); 431*5796c8dcSSimon Schubert 432*5796c8dcSSimon Schubert extern int pointer_type (struct type *); 433*5796c8dcSSimon Schubert 434*5796c8dcSSimon Schubert extern int structured_type (struct type *); 435*5796c8dcSSimon Schubert 436*5796c8dcSSimon Schubert /* Checks Binary and Unary operations for semantic type correctness */ 437*5796c8dcSSimon Schubert /* FIXME: Does not appear to be used */ 438*5796c8dcSSimon Schubert #define unop_type_check(v,o) binop_type_check((v),NULL,(o)) 439*5796c8dcSSimon Schubert 440*5796c8dcSSimon Schubert extern void binop_type_check (struct value *, struct value *, int); 441*5796c8dcSSimon Schubert 442*5796c8dcSSimon Schubert /* Error messages */ 443*5796c8dcSSimon Schubert 444*5796c8dcSSimon Schubert extern void type_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); 445*5796c8dcSSimon Schubert 446*5796c8dcSSimon Schubert extern void range_error (const char *, ...) ATTR_FORMAT (printf, 1, 2); 447*5796c8dcSSimon Schubert 448*5796c8dcSSimon Schubert /* Data: Does this value represent "truth" to the current language? */ 449*5796c8dcSSimon Schubert 450*5796c8dcSSimon Schubert extern int value_true (struct value *); 451*5796c8dcSSimon Schubert 452*5796c8dcSSimon Schubert /* Misc: The string representing a particular enum language. */ 453*5796c8dcSSimon Schubert 454*5796c8dcSSimon Schubert extern enum language language_enum (char *str); 455*5796c8dcSSimon Schubert 456*5796c8dcSSimon Schubert extern const struct language_defn *language_def (enum language); 457*5796c8dcSSimon Schubert 458*5796c8dcSSimon Schubert extern char *language_str (enum language); 459*5796c8dcSSimon Schubert 460*5796c8dcSSimon Schubert /* Add a language to the set known by GDB (at initialization time). */ 461*5796c8dcSSimon Schubert 462*5796c8dcSSimon Schubert extern void add_language (const struct language_defn *); 463*5796c8dcSSimon Schubert 464*5796c8dcSSimon Schubert extern enum language get_frame_language (void); /* In stack.c */ 465*5796c8dcSSimon Schubert 466*5796c8dcSSimon Schubert /* Check for a language-specific trampoline. */ 467*5796c8dcSSimon Schubert 468*5796c8dcSSimon Schubert extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc); 469*5796c8dcSSimon Schubert 470*5796c8dcSSimon Schubert /* Return demangled language symbol, or NULL. */ 471*5796c8dcSSimon Schubert extern char *language_demangle (const struct language_defn *current_language, 472*5796c8dcSSimon Schubert const char *mangled, int options); 473*5796c8dcSSimon Schubert 474*5796c8dcSSimon Schubert /* Return class name from physname, or NULL. */ 475*5796c8dcSSimon Schubert extern char *language_class_name_from_physname (const struct language_defn *, 476*5796c8dcSSimon Schubert const char *physname); 477*5796c8dcSSimon Schubert 478*5796c8dcSSimon Schubert /* Splitting strings into words. */ 479*5796c8dcSSimon Schubert extern char *default_word_break_characters (void); 480*5796c8dcSSimon Schubert 481*5796c8dcSSimon Schubert /* Print the index of an array element using the C99 syntax. */ 482*5796c8dcSSimon Schubert extern void default_print_array_index (struct value *index_value, 483*5796c8dcSSimon Schubert struct ui_file *stream, 484*5796c8dcSSimon Schubert const struct value_print_options *options); 485*5796c8dcSSimon Schubert 486*5796c8dcSSimon Schubert /* Return non-zero if TYPE should be passed (and returned) by 487*5796c8dcSSimon Schubert reference at the language level. */ 488*5796c8dcSSimon Schubert int language_pass_by_reference (struct type *type); 489*5796c8dcSSimon Schubert 490*5796c8dcSSimon Schubert /* Return zero; by default, types are passed by value at the language 491*5796c8dcSSimon Schubert level. The target ABI may pass or return some structs by reference 492*5796c8dcSSimon Schubert independent of this. */ 493*5796c8dcSSimon Schubert int default_pass_by_reference (struct type *type); 494*5796c8dcSSimon Schubert 495*5796c8dcSSimon Schubert /* The default implementation of la_print_typedef. */ 496*5796c8dcSSimon Schubert void default_print_typedef (struct type *type, struct symbol *new_symbol, 497*5796c8dcSSimon Schubert struct ui_file *stream); 498*5796c8dcSSimon Schubert 499*5796c8dcSSimon Schubert void default_get_string (struct value *value, gdb_byte **buffer, int *length, 500*5796c8dcSSimon Schubert const char **charset); 501*5796c8dcSSimon Schubert 502*5796c8dcSSimon Schubert void c_get_string (struct value *value, gdb_byte **buffer, int *length, 503*5796c8dcSSimon Schubert const char **charset); 504*5796c8dcSSimon Schubert 505*5796c8dcSSimon Schubert #endif /* defined (LANGUAGE_H) */ 506