GDB (xrefs)
/tmp/gdb-8.1/gdb/language.h
Go to the documentation of this file.
1 /* Source-language-related definitions for GDB.
2 
3  Copyright (C) 1991-2018 Free Software Foundation, Inc.
4 
5  Contributed by the Department of Computer Science at the State University
6  of New York at Buffalo.
7 
8  This file is part of GDB.
9 
10  This program is free software; you can redistribute it and/or modify
11  it under the terms of the GNU General Public License as published by
12  the Free Software Foundation; either version 3 of the License, or
13  (at your option) any later version.
14 
15  This program is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU General Public License for more details.
19 
20  You should have received a copy of the GNU General Public License
21  along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 
23 #if !defined (LANGUAGE_H)
24 #define LANGUAGE_H 1
25 
26 #include "symtab.h"
27 #include "common/function-view.h"
28 #include "expression.h"
29 
30 /* Forward decls for prototypes. */
31 struct value;
32 struct objfile;
33 struct frame_info;
34 struct ui_file;
35 struct value_print_options;
36 struct type_print_options;
37 struct lang_varobj_ops;
38 struct parser_state;
39 struct compile_instance;
41 
42 #define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */
43 
44 /* range_mode ==
45  range_mode_auto: range_check set automatically to default of language.
46  range_mode_manual: range_check set manually by user. */
47 
48 extern enum range_mode
49  {
51  }
53 
54 /* range_check ==
55  range_check_on: Ranges are checked in GDB expressions, producing errors.
56  range_check_warn: Ranges are checked, producing warnings.
57  range_check_off: Ranges are not checked in GDB expressions. */
58 
59 extern enum range_check
60  {
62  }
64 
65 /* case_mode ==
66  case_mode_auto: case_sensitivity set upon selection of scope.
67  case_mode_manual: case_sensitivity set only by user. */
68 
69 extern enum case_mode
70  {
72  }
73 case_mode;
74 
75 /* array_ordering ==
76  array_row_major: Arrays are in row major order.
77  array_column_major: Arrays are in column major order. */
78 
79 extern enum array_ordering
80  {
82  }
84 
85 
86 /* case_sensitivity ==
87  case_sensitive_on: Case sensitivity in name matching is used.
88  case_sensitive_off: Case sensitivity in name matching is not used. */
89 
90 extern enum case_sensitivity
91  {
93  }
95 
96 
97 /* macro_expansion ==
98  macro_expansion_no: No macro expansion is available.
99  macro_expansion_c: C-like macro expansion is available. */
100 
102  {
104  };
105 
106 
107 /* Per architecture (OS/ABI) language information. */
108 
110 {
111  /* Its primitive types. This is a vector ended by a NULL pointer.
112  These types can be specified by name in parsing types in
113  expressions, regardless of whether the program being debugged
114  actually defines such a type. */
116 
117  /* Symbol wrappers around primitive_type_vector, so that the symbol lookup
118  machinery can return them. */
120 
121  /* Type of elements of strings. */
123 
124  /* Symbol name of type to use as boolean type, if defined. */
125  const char *bool_type_symbol;
126  /* Otherwise, this is the default boolean builtin type. */
128 };
129 
130 /* Structure tying together assorted information about a language. */
131 
133  {
134  /* Name of the language. */
135 
136  const char *la_name;
137 
138  /* Natural or official name of the language. */
139 
140  const char *la_natural_name;
141 
142  /* its symtab language-enum (defs.h). */
143 
145 
146  /* Default range checking. */
147 
149 
150  /* Default case sensitivity. */
152 
153  /* Multi-dimensional array ordering. */
155 
156  /* Style of macro expansion, if any, supported by this language. */
158 
159  /* A NULL-terminated array of file extensions for this language.
160  The extension must include the ".", like ".c". If this
161  language doesn't need to provide any filename extensions, this
162  may be NULL. */
163 
164  const char *const *la_filename_extensions;
165 
166  /* Definitions related to expression printing, prefixifying, and
167  dumping. */
168 
170 
171  /* Parser function. */
172 
173  int (*la_parser) (struct parser_state *);
174 
175  /* Parser error function. */
176 
177  void (*la_error) (const char *);
178 
179  /* Given an expression *EXPP created by prefixifying the result of
180  la_parser, perform any remaining processing necessary to complete
181  its translation. *EXPP may change; la_post_parser is responsible
182  for releasing its previous contents, if necessary. If
183  VOID_CONTEXT_P, then no value is expected from the expression. */
184 
185  void (*la_post_parser) (expression_up *expp, int void_context_p);
186 
187  void (*la_printchar) (int ch, struct type *chtype,
188  struct ui_file * stream);
189 
190  void (*la_printstr) (struct ui_file * stream, struct type *elttype,
191  const gdb_byte *string, unsigned int length,
192  const char *encoding, int force_ellipses,
193  const struct value_print_options *);
194 
195  void (*la_emitchar) (int ch, struct type *chtype,
196  struct ui_file * stream, int quoter);
197 
198  /* Print a type using syntax appropriate for this language. */
199 
200  void (*la_print_type) (struct type *, const char *, struct ui_file *, int,
201  int, const struct type_print_options *);
202 
203  /* Print a typedef using syntax appropriate for this language.
204  TYPE is the underlying type. NEW_SYMBOL is the symbol naming
205  the type. STREAM is the output stream on which to print. */
206 
207  void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
208  struct ui_file *stream);
209 
210  /* Print a value using syntax appropriate for this language.
211 
212  TYPE is the type of the sub-object to be printed.
213 
214  EMBEDDED_OFFSET is the offset into the outermost object of the
215  sub-object represented by TYPE. This is the object which this
216  call should print. Note that the enclosing type is not
217  available.
218 
219  ADDRESS is the address in the inferior of the enclosing object.
220 
221  STREAM is the stream on which the value is to be printed.
222 
223  RECURSE is the recursion depth. It is zero-based.
224 
225  OPTIONS are the formatting options to be used when
226  printing. */
227 
228  void (*la_val_print) (struct type *type,
229  int embedded_offset, CORE_ADDR address,
230  struct ui_file *stream, int recurse,
231  struct value *val,
232  const struct value_print_options *options);
233 
234  /* Print a top-level value using syntax appropriate for this language. */
235 
236  void (*la_value_print) (struct value *, struct ui_file *,
237  const struct value_print_options *);
238 
239  /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a
240  stack frame id FRAME, read the value of the variable and return (pointer
241  to a) struct value containing the value.
242 
243  VAR_BLOCK is needed if there's a possibility for VAR to be outside
244  FRAME. This is what happens if FRAME correspond to a nested function
245  and VAR is defined in the outer function. If callers know that VAR is
246  located in FRAME or is global/static, NULL can be passed as VAR_BLOCK.
247 
248  Throw an error if the variable cannot be found. */
249 
250  struct value *(*la_read_var_value) (struct symbol *var,
251  const struct block *var_block,
252  struct frame_info *frame);
253 
254  /* PC is possibly an unknown languages trampoline.
255  If that PC falls in a trampoline belonging to this language,
256  return the address of the first pc in the real function, or 0
257  if it isn't a language tramp for this language. */
259 
260  /* Now come some hooks for lookup_symbol. */
261 
262  /* If this is non-NULL, specifies the name that of the implicit
263  local variable that refers to the current object instance. */
264 
265  const char *la_name_of_this;
266 
267  /* This is a function that lookup_symbol will call when it gets to
268  the part of symbol lookup where C looks up static and global
269  variables. */
270 
272  (const struct language_defn *,
273  const char *,
274  const struct block *,
275  const domain_enum);
276 
277  /* Find the definition of the type with the given name. */
278  struct type *(*la_lookup_transparent_type) (const char *);
279 
280  /* Return demangled language symbol, or NULL. */
281  char *(*la_demangle) (const char *mangled, int options);
282 
283  /* Demangle a symbol according to this language's rules. Unlike
284  la_demangle, this does not take any options.
285 
286  *DEMANGLED will be set by this function.
287 
288  If this function returns 0, then *DEMANGLED must always be set
289  to NULL.
290 
291  If this function returns 1, the implementation may set this to
292  a xmalloc'd string holding the demangled form. However, it is
293  not required to. The string, if any, is owned by the caller.
294 
295  The resulting string should be of the form that will be
296  installed into a symbol. */
297  int (*la_sniff_from_mangled_name) (const char *mangled, char **demangled);
298 
299  /* Return class name of a mangled method name or NULL. */
300  char *(*la_class_name_from_physname) (const char *physname);
301 
302  /* Table for printing expressions. */
303 
304  const struct op_print *la_op_print_tab;
305 
306  /* Zero if the language has first-class arrays. True if there are no
307  array values, and array objects decay to pointers, as in C. */
308 
310 
311  /* Index to use for extracting the first element of a string. */
313 
314  /* The list of characters forming word boundaries. */
315  const char *(*la_word_break_characters) (void);
316 
317  /* Add to the completion tracker all symbols which are possible
318  completions for TEXT. WORD is the entire command on which the
319  completion is being made. If CODE is TYPE_CODE_UNDEF, then all
320  symbols should be examined; otherwise, only STRUCT_DOMAIN
321  symbols whose type has a code of CODE should be matched. */
325  symbol_name_match_type match_type,
326  const char *text,
327  const char *word,
328  enum type_code code);
329 
330  /* The per-architecture (OS/ABI) language information. */
331  void (*la_language_arch_info) (struct gdbarch *,
332  struct language_arch_info *);
333 
334  /* Print the index of an element of an array. */
335  void (*la_print_array_index) (struct value *index_value,
336  struct ui_file *stream,
337  const struct value_print_options *options);
338 
339  /* Return non-zero if TYPE should be passed (and returned) by
340  reference at the language level. */
341  int (*la_pass_by_reference) (struct type *type);
342 
343  /* Obtain a string from the inferior, storing it in a newly allocated
344  buffer in BUFFER, which should be freed by the caller. If the
345  in- and out-parameter *LENGTH is specified at -1, the string is
346  read until a null character of the appropriate width is found -
347  otherwise the string is read to the length of characters specified.
348  On completion, *LENGTH will hold the size of the string in characters.
349  If a *LENGTH of -1 was specified it will count only actual
350  characters, excluding any eventual terminating null character.
351  Otherwise *LENGTH will include all characters - including any nulls.
352  CHARSET will hold the encoding used in the string. */
353  void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
354  struct type **chartype, const char **charset);
355 
356  /* Return an expression that can be used for a location
357  watchpoint. TYPE is a pointer type that points to the memory
358  to watch, and ADDR is the address of the watched memory. */
359  gdb::unique_xmalloc_ptr<char> (*la_watch_location_expression)
360  (struct type *type, CORE_ADDR addr);
361 
362  /* Return a pointer to the function that should be used to match a
363  symbol name against LOOKUP_NAME, according to this language's
364  rules. The matching algorithm depends on LOOKUP_NAME. For
365  example, on Ada, the matching algorithm depends on the symbol
366  name (wild/full/verbatim matching), and on whether we're doing
367  a normal lookup or a completion match lookup.
368 
369  This field may be NULL, in which case
370  default_symbol_name_matcher is used to perform the
371  matching. */
372  symbol_name_matcher_ftype *(*la_get_symbol_name_matcher)
373  (const lookup_name_info &);
374 
375  /* Find all symbols in the current program space matching NAME in
376  DOMAIN, according to this language's rules.
377 
378  The search is done in BLOCK only.
379  The caller is responsible for iterating up through superblocks
380  if desired.
381 
382  For each one, call CALLBACK with the symbol. If CALLBACK
383  returns false, the iteration ends at that point.
384 
385  This field may not be NULL. If the language does not need any
386  special processing here, 'iterate_over_symbols' should be
387  used as the definition. */
389  (const struct block *block, const lookup_name_info &name,
390  domain_enum domain,
392 
393  /* Hash the given symbol search name. Use
394  default_search_name_hash if no special treatment is
395  required. */
396  unsigned int (*la_search_name_hash) (const char *name);
397 
398  /* Various operations on varobj. */
400 
401  /* If this language allows compilation from the gdb command line,
402  this method should be non-NULL. When called it should return
403  an instance of struct gcc_context appropriate to the language.
404  When defined this method must never return NULL; instead it
405  should throw an exception on failure. The returned compiler
406  instance is owned by its caller and must be deallocated by
407  calling its 'destroy' method. */
408 
409  struct compile_instance *(*la_get_compile_instance) (void);
410 
411  /* This method must be defined if 'la_get_gcc_context' is defined.
412  If 'la_get_gcc_context' is not defined, then this method is
413  ignored.
414 
415  This takes the user-supplied text and returns a new bit of code
416  to compile.
417 
418  INST is the compiler instance being used.
419  INPUT is the user's input text.
420  GDBARCH is the architecture to use.
421  EXPR_BLOCK is the block in which the expression is being
422  parsed.
423  EXPR_PC is the PC at which the expression is being parsed. */
424 
426  const char *input,
427  struct gdbarch *gdbarch,
428  const struct block *expr_block,
429  CORE_ADDR expr_pc);
430 
431  /* Add fields above this point, so the magic number is always last. */
432  /* Magic number for compat checking. */
433 
434  long la_magic;
435 
436  };
437 
438 #define LANG_MAGIC 910823L
439 
440 /* Pointer to the language_defn for our current language. This pointer
441  always points to *some* valid struct; it can be used without checking
442  it for validity.
443 
444  The current language affects expression parsing and evaluation
445  (FIXME: it might be cleaner to make the evaluation-related stuff
446  separate exp_opcodes for each different set of semantics. We
447  should at least think this through more clearly with respect to
448  what happens if the language is changed between parsing and
449  evaluation) and printing of things like types and arrays. It does
450  *not* affect symbol-reading-- each source file in a symbol-file has
451  its own language and we should keep track of that regardless of the
452  language when symbols are read. If we want some manual setting for
453  the language of symbol files (e.g. detecting when ".c" files are
454  C++), it should be a separate setting from the current_language. */
455 
456 extern const struct language_defn *current_language;
457 
458 /* Pointer to the language_defn expected by the user, e.g. the language
459  of main(), or the language we last mentioned in a message, or C. */
460 
461 extern const struct language_defn *expected_language;
462 
463 /* language_mode ==
464  language_mode_auto: current_language automatically set upon selection
465  of scope (e.g. stack frame)
466  language_mode_manual: current_language set only by user. */
467 
468 extern enum language_mode
469  {
471  }
473 
474 struct type *language_bool_type (const struct language_defn *l,
475  struct gdbarch *gdbarch);
476 
477 struct type *language_string_char_type (const struct language_defn *l,
478  struct gdbarch *gdbarch);
479 
480 /* Look up type NAME in language L, and return its definition for architecture
481  GDBARCH. Returns NULL if not found. */
482 
483 struct type *language_lookup_primitive_type (const struct language_defn *l,
484  struct gdbarch *gdbarch,
485  const char *name);
486 
487 /* Wrapper around language_lookup_primitive_type to return the
488  corresponding symbol. */
489 
490 struct symbol *
492  struct gdbarch *gdbarch,
493  const char *name);
494 
495 
496 /* These macros define the behaviour of the expression
497  evaluator. */
498 
499 /* Should we range check values against the domain of their type? */
500 #define RANGE_CHECK (range_check != range_check_off)
501 
502 /* "cast" really means conversion. */
503 /* FIXME -- should be a setting in language_defn. */
504 #define CAST_IS_CONVERSION(LANG) ((LANG)->la_language == language_c || \
505  (LANG)->la_language == language_cplus || \
506  (LANG)->la_language == language_objc)
507 
508 extern void language_info (int);
509 
510 extern enum language set_language (enum language);
511 
512 
513 /* This page contains functions that return things that are
514  specific to languages. Each of these functions is based on
515  the current setting of working_lang, which the user sets
516  with the "set language" command. */
517 
518 #define LA_PRINT_TYPE(type,varstring,stream,show,level,flags) \
519  (current_language->la_print_type(type,varstring,stream,show,level,flags))
520 
521 #define LA_PRINT_TYPEDEF(type,new_symbol,stream) \
522  (current_language->la_print_typedef(type,new_symbol,stream))
523 
524 #define LA_VALUE_PRINT(val,stream,options) \
525  (current_language->la_value_print(val,stream,options))
526 
527 #define LA_PRINT_CHAR(ch, type, stream) \
528  (current_language->la_printchar(ch, type, stream))
529 #define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses, options) \
530  (current_language->la_printstr(stream, elttype, string, length, \
531  encoding, force_ellipses,options))
532 #define LA_EMIT_CHAR(ch, type, stream, quoter) \
533  (current_language->la_emitchar(ch, type, stream, quoter))
534 #define LA_GET_STRING(value, buffer, length, chartype, encoding) \
535  (current_language->la_get_string(value, buffer, length, chartype, encoding))
536 
537 #define LA_PRINT_ARRAY_INDEX(index_value, stream, options) \
538  (current_language->la_print_array_index(index_value, stream, options))
539 
540 #define LA_ITERATE_OVER_SYMBOLS(BLOCK, NAME, DOMAIN, CALLBACK) \
541  (current_language->la_iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK))
542 
543 /* Test a character to decide whether it can be printed in literal form
544  or needs to be printed in another representation. For example,
545  in C the literal form of the character with octal value 141 is 'a'
546  and the "other representation" is '\141'. The "other representation"
547  is program language dependent. */
548 
549 #define PRINT_LITERAL_FORM(c) \
550  ((c) >= 0x20 \
551  && ((c) < 0x7F || (c) >= 0xA0) \
552  && (!sevenbit_strings || (c) < 0x80))
553 
554 /* Type predicates */
555 
556 extern int pointer_type (struct type *);
557 
558 /* Error messages */
559 
560 extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
561 
562 /* Data: Does this value represent "truth" to the current language? */
563 
564 extern int value_true (struct value *);
565 
566 /* Misc: The string representing a particular enum language. */
567 
568 extern enum language language_enum (const char *str);
569 
570 extern const struct language_defn *language_def (enum language);
571 
572 extern const char *language_str (enum language);
573 
574 /* Check for a language-specific trampoline. */
575 
577 
578 /* Return demangled language symbol, or NULL. */
579 extern char *language_demangle (const struct language_defn *current_language,
580  const char *mangled, int options);
581 
582 /* A wrapper for la_sniff_from_mangled_name. The arguments and result
583  are as for the method. */
584 
585 extern int language_sniff_from_mangled_name (const struct language_defn *lang,
586  const char *mangled,
587  char **demangled);
588 
589 /* Return class name from physname, or NULL. */
590 extern char *language_class_name_from_physname (const struct language_defn *,
591  const char *physname);
592 
593 /* Splitting strings into words. */
594 extern const char *default_word_break_characters (void);
595 
596 /* Print the index of an array element using the C99 syntax. */
597 extern void default_print_array_index (struct value *index_value,
598  struct ui_file *stream,
599  const struct value_print_options *options);
600 
601 /* Return non-zero if TYPE should be passed (and returned) by
602  reference at the language level. */
603 int language_pass_by_reference (struct type *type);
604 
605 /* Return zero; by default, types are passed by value at the language
606  level. The target ABI may pass or return some structs by reference
607  independent of this. */
608 int default_pass_by_reference (struct type *type);
609 
610 /* The default implementation of la_print_typedef. */
611 void default_print_typedef (struct type *type, struct symbol *new_symbol,
612  struct ui_file *stream);
613 
614 void default_get_string (struct value *value, gdb_byte **buffer, int *length,
615  struct type **char_type, const char **charset);
616 
617 /* Default name hashing function. */
618 
619 /* Produce an unsigned hash value from SEARCH_NAME that is consistent
620  with strcmp_iw, strcmp, and, at least on Ada symbols, wild_match.
621  That is, two identifiers equivalent according to any of those three
622  comparison operators hash to the same value. */
623 extern unsigned int default_search_name_hash (const char *search_name);
624 
625 void c_get_string (struct value *value, gdb_byte **buffer, int *length,
626  struct type **char_type, const char **charset);
627 
628 /* The default implementation of la_symbol_name_matcher. Matches with
629  strncmp_iw. */
630 extern bool default_symbol_name_matcher
631  (const char *symbol_search_name,
632  const lookup_name_info &lookup_name,
633  completion_match_result *comp_match_res);
634 
635 /* Get LANG's symbol_name_matcher method for LOOKUP_NAME. Returns
636  default_symbol_name_matcher if not set. LANG is used as a hint;
637  the function may ignore it depending on the current language and
638  LOOKUP_NAME. Specifically, if the current language is Ada, this
639  may return an Ada matcher regardless of LANG. */
641  (const language_defn *lang, const lookup_name_info &lookup_name);
642 
643 /* The languages supported by GDB. */
644 
645 extern const struct language_defn auto_language_defn;
646 extern const struct language_defn unknown_language_defn;
647 extern const struct language_defn minimal_language_defn;
648 
649 extern const struct language_defn ada_language_defn;
650 extern const struct language_defn asm_language_defn;
651 extern const struct language_defn c_language_defn;
652 extern const struct language_defn cplus_language_defn;
653 extern const struct language_defn d_language_defn;
654 extern const struct language_defn f_language_defn;
655 extern const struct language_defn go_language_defn;
656 extern const struct language_defn m2_language_defn;
657 extern const struct language_defn objc_language_defn;
658 extern const struct language_defn opencl_language_defn;
659 extern const struct language_defn pascal_language_defn;
660 extern const struct language_defn rust_language_defn;
661 
662 /* Save the current language and restore it upon destruction. */
663 
665 {
666 public:
667 
669  : m_lang (current_language->la_language)
670  {
671  }
672 
674  {
675  set_language (m_lang);
676  }
677 
679  = delete;
681  (const scoped_restore_current_language &) = delete;
682 
683 private:
684 
685  enum language m_lang;
686 };
687 
688 #endif /* defined (LANGUAGE_H) */
unsigned int length
Definition: gdbtypes.h:803
const char * string
Definition: signals.c:50
const struct language_defn rust_language_defn
type_code
Definition: gdbtypes.h:80
struct symbol * language_lookup_primitive_type_as_symbol(const struct language_defn *l, struct gdbarch *gdbarch, const char *name)
Definition: language.c:1099
char string_lower_bound
Definition: language.h:312
CORE_ADDR(* skip_trampoline)(struct frame_info *, CORE_ADDR)
Definition: language.h:258
int default_pass_by_reference(struct type *type)
Definition: language.c:669
long la_magic
Definition: language.h:434
void(* la_print_typedef)(struct type *type, struct symbol *new_symbol, struct ui_file *stream)
Definition: language.h:207
bfd_vma CORE_ADDR
Definition: common-types.h:41
const struct language_defn * current_language
Definition: language.c:81
range_mode
Definition: language.h:48
gdb::unique_xmalloc_ptr< expression > expression_up
Definition: expression.h:87
int(* la_pass_by_reference)(struct type *type)
Definition: language.h:341
const struct language_defn cplus_language_defn
const char * language_str(enum language)
Definition: language.c:502
void(* la_printstr)(struct ui_file *stream, struct type *elttype, const gdb_byte *string, unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *)
Definition: language.h:190
void default_get_string(struct value *value, gdb_byte **buffer, int *length, struct type **char_type, const char **charset)
Definition: language.c:696
enum case_sensitivity la_case_sensitivity
Definition: language.h:151
const struct language_defn d_language_defn
const char * symbol_search_name(const struct general_symbol_info *gsymbol)
Definition: symtab.c:943
void(* la_emitchar)(int ch, struct type *chtype, struct ui_file *stream, int quoter)
Definition: language.h:195
void int value_true(struct value *)
Definition: language.c:426
void(* la_error)(const char *)
Definition: language.h:177
struct type * language_string_char_type(const struct language_defn *l, struct gdbarch *gdbarch)
Definition: language.c:972
complete_symbol_mode
Definition: symtab.h:1826
enum domain_enum_tag domain_enum
bool() symbol_name_matcher_ftype(const char *symbol_search_name, const lookup_name_info &lookup_name, completion_match_result *comp_match_res)
Definition: symtab.h:324
const struct language_defn pascal_language_defn
enum language la_language
Definition: language.h:144
const struct language_defn minimal_language_defn
void default_print_typedef(struct type *type, struct symbol *new_symbol, struct ui_file *stream)
Definition: typeprint.c:344
struct type * string_char_type
Definition: language.h:122
int language_sniff_from_mangled_name(const struct language_defn *lang, const char *mangled, char **demangled)
Definition: language.c:633
void(* la_language_arch_info)(struct gdbarch *, struct language_arch_info *)
Definition: language.h:331
const struct language_defn c_language_defn
char * language_demangle(const struct language_defn *current_language, const char *mangled, int options)
Definition: language.c:622
const struct language_defn opencl_language_defn
range_check
Definition: language.h:59
const char * la_name_of_this
Definition: language.h:265
const struct language_defn ada_language_defn
char * language_class_name_from_physname(const struct language_defn *, const char *physname)
Definition: language.c:649
case_mode
Definition: language.h:69
const struct language_defn f_language_defn
const char *const name
Definition: aarch64-tdep.c:76
const struct exp_descriptor * la_exp_desc
Definition: language.h:169
CORE_ADDR skip_language_trampoline(struct frame_info *, CORE_ADDR pc)
Definition: language.c:599
void(* la_collect_symbol_completion_matches)(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type match_type, const char *text, const char *word, enum type_code code)
Definition: language.h:323
struct type * language_bool_type(const struct language_defn *l, struct gdbarch *gdbarch)
Definition: language.c:982
enum array_ordering la_array_ordering
Definition: language.h:154
struct symbol ** primitive_type_symbols
Definition: language.h:119
struct type * bool_type_default
Definition: language.h:127
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
void(* la_val_print)(struct type *type, int embedded_offset, CORE_ADDR address, struct ui_file *stream, int recurse, struct value *val, const struct value_print_options *options)
Definition: language.h:228
const struct lang_varobj_ops * la_varobj_ops
Definition: language.h:399
const char *const * la_filename_extensions
Definition: language.h:164
const char * bool_type_symbol
Definition: language.h:125
void range_error(const char *,...) ATTRIBUTE_PRINTF(1
struct block_symbol(* la_lookup_symbol_nonlocal)(const struct language_defn *, const char *, const struct block *, const domain_enum)
Definition: language.h:272
#define ATTRIBUTE_PRINTF
Definition: common-defs.h:70
Definition: gdbtypes.h:749
void(* la_iterate_over_symbols)(const struct block *block, const lookup_name_info &name, domain_enum domain, gdb::function_view< symbol_found_callback_ftype > callback)
Definition: language.h:389
static const char * type
Definition: language.c:113
bool default_symbol_name_matcher(const char *symbol_search_name, const lookup_name_info &lookup_name, completion_match_result *comp_match_res)
Definition: language.c:705
const char * default_word_break_characters(void)
Definition: language.c:679
int(* la_parser)(struct parser_state *)
Definition: language.h:173
static struct symbol * new_symbol(struct die_info *, struct type *, struct dwarf2_cu *)
Definition: dwarf2read.c:21568
language_mode
Definition: language.h:468
void(* la_printchar)(int ch, struct type *chtype, struct ui_file *stream)
Definition: language.h:187
char c_style_arrays
Definition: language.h:309
const struct language_defn * language_def(enum language)
Definition: language.c:494
void(* la_print_type)(struct type *, const char *, struct ui_file *, int, int, const struct type_print_options *)
Definition: language.h:200
Definition: block.h:60
enum language language_enum(const char *str)
Definition: language.c:479
Definition: value.c:169
unsigned int default_search_name_hash(const char *search_name)
Definition: dictionary.c:769
void language_info(int)
Definition: language.c:394
void c_get_string(struct value *value, gdb_byte **buffer, int *length, struct type **char_type, const char **charset)
Definition: c-lang.c:236
const char * la_natural_name
Definition: language.h:140
struct type * language_lookup_primitive_type(const struct language_defn *l, struct gdbarch *gdbarch, const char *name)
Definition: language.c:1025
bfd_byte gdb_byte
Definition: common-types.h:38
enum language set_language(enum language)
Definition: language.c:379
enum range_check la_range_check
Definition: language.h:148
const struct op_print * la_op_print_tab
Definition: language.h:304
symbol_name_matcher_ftype * get_symbol_name_matcher(const language_defn *lang, const lookup_name_info &lookup_name)
Definition: language.c:730
int language_pass_by_reference(struct type *type)
Definition: language.c:660
const struct language_defn m2_language_defn
int code
Definition: ser-unix.c:239
Definition: buffer.h:23
const struct language_defn unknown_language_defn
const struct language_defn go_language_defn
void default_print_array_index(struct value *index_value, struct ui_file *stream, const struct value_print_options *options)
Definition: language.c:687
macro_expansion
Definition: language.h:101
const struct language_defn asm_language_defn
language
Definition: defs.h:203
int pointer_type(struct type *)
Definition: language.c:415
enum macro_expansion la_macro_expansion
Definition: language.h:157
const struct language_defn objc_language_defn
array_ordering
Definition: language.h:79
unsigned int(* la_search_name_hash)(const char *name)
Definition: language.h:396
void(* la_get_string)(struct value *value, gdb_byte **buffer, int *length, struct type **chartype, const char **charset)
Definition: language.h:353
struct type ** primitive_type_vector
Definition: language.h:115
int(* la_sniff_from_mangled_name)(const char *mangled, char **demangled)
Definition: language.h:297
const char * la_name
Definition: language.h:136
void(* la_value_print)(struct value *, struct ui_file *, const struct value_print_options *)
Definition: language.h:236
void(* la_print_array_index)(struct value *index_value, struct ui_file *stream, const struct value_print_options *options)
Definition: language.h:335
case_sensitivity
Definition: language.h:90
std::string(* la_compute_program)(struct compile_instance *inst, const char *input, struct gdbarch *gdbarch, const struct block *expr_block, CORE_ADDR expr_pc)
Definition: language.h:425
const struct language_defn auto_language_defn
Definition: language.c:894
void(* la_post_parser)(expression_up *expp, int void_context_p)
Definition: language.h:185
const struct language_defn * expected_language
Definition: language.c:87
symbol_name_match_type
Definition: symtab.h:52