]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/language.h
add s390_gcc_target_options
[thirdparty/binutils-gdb.git] / gdb / language.h
CommitLineData
c906108c 1/* Source-language-related definitions for GDB.
1bac305b 2
ecd75fc8 3 Copyright (C) 1991-2014 Free Software Foundation, Inc.
1bac305b 4
c906108c
SS
5 Contributed by the Department of Computer Science at the State University
6 of New York at Buffalo.
7
c5aa993b 8 This file is part of GDB.
c906108c 9
c5aa993b
JM
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
a9762ec7 12 the Free Software Foundation; either version 3 of the License, or
c5aa993b 13 (at your option) any later version.
c906108c 14
c5aa993b
JM
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.
c906108c 19
c5aa993b 20 You should have received a copy of the GNU General Public License
a9762ec7 21 along with this program. If not, see <http://www.gnu.org/licenses/>. */
c906108c
SS
22
23#if !defined (LANGUAGE_H)
24#define LANGUAGE_H 1
25
671afef6
JB
26#include "symtab.h"
27
1777feb0 28/* Forward decls for prototypes. */
c906108c
SS
29struct value;
30struct objfile;
52f729a7 31struct frame_info;
c906108c 32struct expression;
da3331ec 33struct ui_file;
79a45b7d 34struct value_print_options;
79d43c61 35struct type_print_options;
a53b64ea 36struct lang_varobj_ops;
410a0ff2 37struct parser_state;
62dfaa9c 38
1777feb0 39#define MAX_FORTRAN_DIMS 7 /* Maximum number of F77 array dims. */
c906108c
SS
40
41/* range_mode ==
42 range_mode_auto: range_check set automatically to default of language.
43 range_mode_manual: range_check set manually by user. */
44
c5aa993b
JM
45extern enum range_mode
46 {
47 range_mode_auto, range_mode_manual
48 }
49range_mode;
c906108c
SS
50
51/* range_check ==
52 range_check_on: Ranges are checked in GDB expressions, producing errors.
53 range_check_warn: Ranges are checked, producing warnings.
54 range_check_off: Ranges are not checked in GDB expressions. */
55
56extern enum range_check
c5aa993b
JM
57 {
58 range_check_off, range_check_warn, range_check_on
59 }
60range_check;
c906108c 61
63872f9d 62/* case_mode ==
1777feb0 63 case_mode_auto: case_sensitivity set upon selection of scope.
63872f9d
JG
64 case_mode_manual: case_sensitivity set only by user. */
65
66extern enum case_mode
67 {
68 case_mode_auto, case_mode_manual
69 }
70case_mode;
71
7ca2d3a3 72/* array_ordering ==
1777feb0
MS
73 array_row_major: Arrays are in row major order.
74 array_column_major: Arrays are in column major order. */
7ca2d3a3
DL
75
76extern enum array_ordering
77 {
78 array_row_major, array_column_major
79 }
80array_ordering;
81
82
63872f9d 83/* case_sensitivity ==
1777feb0
MS
84 case_sensitive_on: Case sensitivity in name matching is used.
85 case_sensitive_off: Case sensitivity in name matching is not used. */
63872f9d
JG
86
87extern enum case_sensitivity
88 {
89 case_sensitive_on, case_sensitive_off
90 }
91case_sensitivity;
9a044a89
TT
92
93
94/* macro_expansion ==
1777feb0
MS
95 macro_expansion_no: No macro expansion is available.
96 macro_expansion_c: C-like macro expansion is available. */
9a044a89
TT
97
98enum macro_expansion
99 {
100 macro_expansion_no, macro_expansion_c
101 };
102
c906108c 103\f
f290d38e
AC
104/* Per architecture (OS/ABI) language information. */
105
106struct language_arch_info
107{
5a44ea29 108 /* Its primitive types. This is a vector ended by a NULL pointer.
f290d38e
AC
109 These types can be specified by name in parsing types in
110 expressions, regardless of whether the program being debugged
111 actually defines such a type. */
5a44ea29 112 struct type **primitive_type_vector;
1777feb0 113 /* Type of elements of strings. */
f290d38e 114 struct type *string_char_type;
fbb06eb1
UW
115
116 /* Symbol name of type to use as boolean type, if defined. */
117 const char *bool_type_symbol;
118 /* Otherwise, this is the default boolean builtin type. */
119 struct type *bool_type_default;
f290d38e
AC
120};
121
74ccd7f5
JB
122/* A pointer to a function expected to return nonzero if
123 SYMBOL_SEARCH_NAME matches the given LOOKUP_NAME.
124
125 SYMBOL_SEARCH_NAME should be a symbol's "search" name.
126 LOOKUP_NAME should be the name of an entity after it has been
127 transformed for lookup. */
128
1a119f36 129typedef int (*symbol_name_cmp_ftype) (const char *symbol_search_name,
74ccd7f5
JB
130 const char *lookup_name);
131
c906108c
SS
132/* Structure tying together assorted information about a language. */
133
134struct language_defn
c5aa993b 135 {
1777feb0 136 /* Name of the language. */
c906108c 137
27cd387b 138 const char *la_name;
c906108c 139
6abde28f
YQ
140 /* Natural or official name of the language. */
141
142 const char *la_natural_name;
143
1777feb0 144 /* its symtab language-enum (defs.h). */
c906108c 145
c5aa993b 146 enum language la_language;
c906108c 147
1777feb0 148 /* Default range checking. */
c906108c 149
c5aa993b 150 enum range_check la_range_check;
c906108c 151
1777feb0 152 /* Default case sensitivity. */
63872f9d
JG
153 enum case_sensitivity la_case_sensitivity;
154
1777feb0 155 /* Multi-dimensional array ordering. */
7ca2d3a3
DL
156 enum array_ordering la_array_ordering;
157
9a044a89
TT
158 /* Style of macro expansion, if any, supported by this language. */
159 enum macro_expansion la_macro_expansion;
160
5f9769d1 161 /* Definitions related to expression printing, prefixifying, and
1777feb0 162 dumping. */
5f9769d1
PH
163
164 const struct exp_descriptor *la_exp_desc;
165
1777feb0 166 /* Parser function. */
c906108c 167
410a0ff2 168 int (*la_parser) (struct parser_state *);
c906108c 169
1777feb0 170 /* Parser error function. */
c906108c 171
507f3c78 172 void (*la_error) (char *);
c906108c 173
e85c3284
PH
174 /* Given an expression *EXPP created by prefixifying the result of
175 la_parser, perform any remaining processing necessary to complete
176 its translation. *EXPP may change; la_post_parser is responsible
177 for releasing its previous contents, if necessary. If
178 VOID_CONTEXT_P, then no value is expected from the expression. */
179
180 void (*la_post_parser) (struct expression ** expp, int void_context_p);
181
3e43a32a
MS
182 void (*la_printchar) (int ch, struct type *chtype,
183 struct ui_file * stream);
c906108c 184
6c7a06a3
TT
185 void (*la_printstr) (struct ui_file * stream, struct type *elttype,
186 const gdb_byte *string, unsigned int length,
be759fcf 187 const char *encoding, int force_ellipses,
79a45b7d 188 const struct value_print_options *);
c906108c 189
6c7a06a3
TT
190 void (*la_emitchar) (int ch, struct type *chtype,
191 struct ui_file * stream, int quoter);
c906108c 192
1777feb0 193 /* Print a type using syntax appropriate for this language. */
c906108c 194
25b524e8 195 void (*la_print_type) (struct type *, const char *, struct ui_file *, int,
79d43c61 196 int, const struct type_print_options *);
c906108c 197
5c6ce71d
TT
198 /* Print a typedef using syntax appropriate for this language.
199 TYPE is the underlying type. NEW_SYMBOL is the symbol naming
200 the type. STREAM is the output stream on which to print. */
201
202 void (*la_print_typedef) (struct type *type, struct symbol *new_symbol,
203 struct ui_file *stream);
204
edf3d5f3
TT
205 /* Print a value using syntax appropriate for this language.
206
207 TYPE is the type of the sub-object to be printed.
c906108c 208
edf3d5f3
TT
209 CONTENTS holds the bits of the value. This holds the entire
210 enclosing object.
211
212 EMBEDDED_OFFSET is the offset into the outermost object of the
213 sub-object represented by TYPE. This is the object which this
214 call should print. Note that the enclosing type is not
215 available.
216
217 ADDRESS is the address in the inferior of the enclosing object.
218
219 STREAM is the stream on which the value is to be printed.
220
221 RECURSE is the recursion depth. It is zero-based.
222
223 OPTIONS are the formatting options to be used when
224 printing. */
225
d3eab38a
TT
226 void (*la_val_print) (struct type *type,
227 const gdb_byte *contents,
228 int embedded_offset, CORE_ADDR address,
229 struct ui_file *stream, int recurse,
230 const struct value *val,
231 const struct value_print_options *options);
c906108c 232
1777feb0 233 /* Print a top-level value using syntax appropriate for this language. */
c906108c 234
8e069a98
TT
235 void (*la_value_print) (struct value *, struct ui_file *,
236 const struct value_print_options *);
c906108c 237
a5ee536b
JB
238 /* Given a symbol VAR, and a stack frame id FRAME, read the value
239 of the variable an return (pointer to a) struct value containing
240 the value.
241
242 Throw an error if the variable cannot be found. */
243
244 struct value *(*la_read_var_value) (struct symbol *var,
245 struct frame_info *frame);
246
f636b87d
AF
247 /* PC is possibly an unknown languages trampoline.
248 If that PC falls in a trampoline belonging to this language,
249 return the address of the first pc in the real function, or 0
250 if it isn't a language tramp for this language. */
52f729a7 251 CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
f636b87d 252
5f9a71c3
DC
253 /* Now come some hooks for lookup_symbol. */
254
2b2d9e11
VP
255 /* If this is non-NULL, specifies the name that of the implicit
256 local variable that refers to the current object instance. */
5f9a71c3 257
2b2d9e11 258 char *la_name_of_this;
5f9a71c3
DC
259
260 /* This is a function that lookup_symbol will call when it gets to
261 the part of symbol lookup where C looks up static and global
262 variables. */
263
264 struct symbol *(*la_lookup_symbol_nonlocal) (const char *,
5f9a71c3 265 const struct block *,
21b556f4 266 const domain_enum);
5f9a71c3 267
b368761e
DC
268 /* Find the definition of the type with the given name. */
269 struct type *(*la_lookup_transparent_type) (const char *);
270
9a3d7dfd
AF
271 /* Return demangled language symbol, or NULL. */
272 char *(*la_demangle) (const char *mangled, int options);
273
31c27f77
JJ
274 /* Return class name of a mangled method name or NULL. */
275 char *(*la_class_name_from_physname) (const char *physname);
276
1777feb0 277 /* Table for printing expressions. */
c906108c 278
c5aa993b 279 const struct op_print *la_op_print_tab;
c906108c 280
c5aa993b 281 /* Zero if the language has first-class arrays. True if there are no
1777feb0 282 array values, and array objects decay to pointers, as in C. */
c906108c 283
c5aa993b 284 char c_style_arrays;
c906108c 285
1777feb0 286 /* Index to use for extracting the first element of a string. */
c5aa993b 287 char string_lower_bound;
c906108c 288
6084f43a
JB
289 /* The list of characters forming word boundaries. */
290 char *(*la_word_break_characters) (void);
291
49c4e619
TT
292 /* Should return a vector of all symbols which are possible
293 completions for TEXT. WORD is the entire command on which the
2f68a895
TT
294 completion is being made. If CODE is TYPE_CODE_UNDEF, then all
295 symbols should be examined; otherwise, only STRUCT_DOMAIN
296 symbols whose type has a code of CODE should be matched. */
6f937416
PA
297 VEC (char_ptr) *(*la_make_symbol_completion_list) (const char *text,
298 const char *word,
2f68a895 299 enum type_code code);
41d27058 300
f290d38e
AC
301 /* The per-architecture (OS/ABI) language information. */
302 void (*la_language_arch_info) (struct gdbarch *,
303 struct language_arch_info *);
304
e79af960
JB
305 /* Print the index of an element of an array. */
306 void (*la_print_array_index) (struct value *index_value,
307 struct ui_file *stream,
79a45b7d 308 const struct value_print_options *options);
e79af960 309
41f1b697
DJ
310 /* Return non-zero if TYPE should be passed (and returned) by
311 reference at the language level. */
312 int (*la_pass_by_reference) (struct type *type);
313
ae6a3a4c 314 /* Obtain a string from the inferior, storing it in a newly allocated
fbb8f299
PM
315 buffer in BUFFER, which should be freed by the caller. If the
316 in- and out-parameter *LENGTH is specified at -1, the string is
317 read until a null character of the appropriate width is found -
318 otherwise the string is read to the length of characters specified.
319 On completion, *LENGTH will hold the size of the string in characters.
320 If a *LENGTH of -1 was specified it will count only actual
321 characters, excluding any eventual terminating null character.
322 Otherwise *LENGTH will include all characters - including any nulls.
323 CHARSET will hold the encoding used in the string. */
ae6a3a4c 324 void (*la_get_string) (struct value *value, gdb_byte **buffer, int *length,
96c07c5b 325 struct type **chartype, const char **charset);
ae6a3a4c 326
74ccd7f5
JB
327 /* Return a pointer to the function that should be used to match
328 a symbol name against LOOKUP_NAME. This is mostly for languages
329 such as Ada where the matching algorithm depends on LOOKUP_NAME.
f8eba3c6 330
74ccd7f5
JB
331 This field may be NULL, in which case strcmp_iw will be used
332 to perform the matching. */
1a119f36 333 symbol_name_cmp_ftype (*la_get_symbol_name_cmp) (const char *lookup_name);
f8eba3c6
TT
334
335 /* Find all symbols in the current program space matching NAME in
336 DOMAIN, according to this language's rules.
337
4eeaa230
DE
338 The search is done in BLOCK only.
339 The caller is responsible for iterating up through superblocks
340 if desired.
f8eba3c6
TT
341
342 For each one, call CALLBACK with the symbol and the DATA
343 argument. If CALLBACK returns zero, the iteration ends at that
344 point.
345
72e1143f
TT
346 This field may not be NULL. If the language does not need any
347 special processing here, 'iterate_over_symbols' should be
348 used as the definition. */
f8eba3c6
TT
349 void (*la_iterate_over_symbols) (const struct block *block,
350 const char *name,
351 domain_enum domain,
8e704927 352 symbol_found_callback_ftype *callback,
f8eba3c6
TT
353 void *data);
354
a53b64ea
YQ
355 /* Various operations on varobj. */
356 const struct lang_varobj_ops *la_varobj_ops;
357
1777feb0
MS
358 /* Add fields above this point, so the magic number is always last. */
359 /* Magic number for compat checking. */
c5aa993b
JM
360
361 long la_magic;
362
363 };
c906108c
SS
364
365#define LANG_MAGIC 910823L
366
367/* Pointer to the language_defn for our current language. This pointer
368 always points to *some* valid struct; it can be used without checking
369 it for validity.
370
371 The current language affects expression parsing and evaluation
372 (FIXME: it might be cleaner to make the evaluation-related stuff
373 separate exp_opcodes for each different set of semantics. We
374 should at least think this through more clearly with respect to
375 what happens if the language is changed between parsing and
376 evaluation) and printing of things like types and arrays. It does
377 *not* affect symbol-reading-- each source file in a symbol-file has
378 its own language and we should keep track of that regardless of the
379 language when symbols are read. If we want some manual setting for
380 the language of symbol files (e.g. detecting when ".c" files are
7e73cedf 381 C++), it should be a separate setting from the current_language. */
c906108c
SS
382
383extern const struct language_defn *current_language;
384
385/* Pointer to the language_defn expected by the user, e.g. the language
386 of main(), or the language we last mentioned in a message, or C. */
387
388extern const struct language_defn *expected_language;
389
390/* language_mode ==
391 language_mode_auto: current_language automatically set upon selection
c5aa993b 392 of scope (e.g. stack frame)
c906108c
SS
393 language_mode_manual: current_language set only by user. */
394
395extern enum language_mode
c5aa993b
JM
396 {
397 language_mode_auto, language_mode_manual
398 }
399language_mode;
b62f3443 400
fbb06eb1
UW
401struct type *language_bool_type (const struct language_defn *l,
402 struct gdbarch *gdbarch);
403
b62f3443
JB
404struct type *language_string_char_type (const struct language_defn *l,
405 struct gdbarch *gdbarch);
406
407struct type *language_lookup_primitive_type_by_name (const struct language_defn *l,
408 struct gdbarch *gdbarch,
409 const char *name);
410
c906108c
SS
411\f
412/* These macros define the behaviour of the expression
413 evaluator. */
414
1777feb0 415/* Should we range check values against the domain of their type? */
c906108c
SS
416#define RANGE_CHECK (range_check != range_check_off)
417
1777feb0
MS
418/* "cast" really means conversion. */
419/* FIXME -- should be a setting in language_defn. */
cc73bb8c
TT
420#define CAST_IS_CONVERSION(LANG) ((LANG)->la_language == language_c || \
421 (LANG)->la_language == language_cplus || \
422 (LANG)->la_language == language_objc)
c906108c 423
a14ed312 424extern void language_info (int);
c906108c 425
a14ed312 426extern enum language set_language (enum language);
c906108c 427\f
c5aa993b 428
c906108c
SS
429/* This page contains functions that return things that are
430 specific to languages. Each of these functions is based on
431 the current setting of working_lang, which the user sets
1777feb0 432 with the "set language" command. */
c906108c 433
79d43c61
TT
434#define LA_PRINT_TYPE(type,varstring,stream,show,level,flags) \
435 (current_language->la_print_type(type,varstring,stream,show,level,flags))
c906108c 436
5c6ce71d
TT
437#define LA_PRINT_TYPEDEF(type,new_symbol,stream) \
438 (current_language->la_print_typedef(type,new_symbol,stream))
439
0e03807e 440#define LA_VAL_PRINT(type,valaddr,offset,addr,stream,val,recurse,options) \
79a45b7d 441 (current_language->la_val_print(type,valaddr,offset,addr,stream, \
0e03807e 442 val,recurse,options))
79a45b7d
TT
443#define LA_VALUE_PRINT(val,stream,options) \
444 (current_language->la_value_print(val,stream,options))
c906108c 445
6c7a06a3
TT
446#define LA_PRINT_CHAR(ch, type, stream) \
447 (current_language->la_printchar(ch, type, stream))
3e43a32a 448#define LA_PRINT_STRING(stream, elttype, string, length, encoding, force_ellipses, options) \
6c7a06a3 449 (current_language->la_printstr(stream, elttype, string, length, \
be759fcf 450 encoding, force_ellipses,options))
6c7a06a3
TT
451#define LA_EMIT_CHAR(ch, type, stream, quoter) \
452 (current_language->la_emitchar(ch, type, stream, quoter))
96c07c5b
TT
453#define LA_GET_STRING(value, buffer, length, chartype, encoding) \
454 (current_language->la_get_string(value, buffer, length, chartype, encoding))
c906108c 455
577ce03a 456#define LA_PRINT_ARRAY_INDEX(index_value, stream, options) \
79a45b7d 457 (current_language->la_print_array_index(index_value, stream, options))
e79af960 458
f8eba3c6
TT
459#define LA_ITERATE_OVER_SYMBOLS(BLOCK, NAME, DOMAIN, CALLBACK, DATA) \
460 (current_language->la_iterate_over_symbols (BLOCK, NAME, DOMAIN, CALLBACK, \
461 DATA))
462
c906108c
SS
463/* Test a character to decide whether it can be printed in literal form
464 or needs to be printed in another representation. For example,
465 in C the literal form of the character with octal value 141 is 'a'
466 and the "other representation" is '\141'. The "other representation"
1777feb0 467 is program language dependent. */
c906108c
SS
468
469#define PRINT_LITERAL_FORM(c) \
470 ((c) >= 0x20 \
471 && ((c) < 0x7F || (c) >= 0xA0) \
472 && (!sevenbit_strings || (c) < 0x80))
473
c906108c
SS
474/* Type predicates */
475
a14ed312 476extern int pointer_type (struct type *);
c906108c 477
c906108c
SS
478/* Error messages */
479
a0b31db1 480extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
c906108c
SS
481
482/* Data: Does this value represent "truth" to the current language? */
483
a14ed312 484extern int value_true (struct value *);
c906108c 485
c906108c
SS
486/* Misc: The string representing a particular enum language. */
487
a14ed312 488extern enum language language_enum (char *str);
c906108c 489
a14ed312 490extern const struct language_defn *language_def (enum language);
7a292a7a 491
27cd387b 492extern const char *language_str (enum language);
c906108c
SS
493
494/* Add a language to the set known by GDB (at initialization time). */
495
a14ed312 496extern void add_language (const struct language_defn *);
c906108c 497
a14ed312 498extern enum language get_frame_language (void); /* In stack.c */
c906108c 499
1777feb0 500/* Check for a language-specific trampoline. */
f636b87d 501
52f729a7 502extern CORE_ADDR skip_language_trampoline (struct frame_info *, CORE_ADDR pc);
f636b87d 503
9a3d7dfd
AF
504/* Return demangled language symbol, or NULL. */
505extern char *language_demangle (const struct language_defn *current_language,
506 const char *mangled, int options);
507
31c27f77
JJ
508/* Return class name from physname, or NULL. */
509extern char *language_class_name_from_physname (const struct language_defn *,
510 const char *physname);
511
9f0a5303
JB
512/* Splitting strings into words. */
513extern char *default_word_break_characters (void);
514
e79af960
JB
515/* Print the index of an array element using the C99 syntax. */
516extern void default_print_array_index (struct value *index_value,
517 struct ui_file *stream,
79a45b7d 518 const struct value_print_options *options);
e79af960 519
41f1b697
DJ
520/* Return non-zero if TYPE should be passed (and returned) by
521 reference at the language level. */
522int language_pass_by_reference (struct type *type);
523
524/* Return zero; by default, types are passed by value at the language
525 level. The target ABI may pass or return some structs by reference
526 independent of this. */
527int default_pass_by_reference (struct type *type);
528
5c6ce71d
TT
529/* The default implementation of la_print_typedef. */
530void default_print_typedef (struct type *type, struct symbol *new_symbol,
531 struct ui_file *stream);
532
ae6a3a4c 533void default_get_string (struct value *value, gdb_byte **buffer, int *length,
96c07c5b 534 struct type **char_type, const char **charset);
ae6a3a4c
TJB
535
536void c_get_string (struct value *value, gdb_byte **buffer, int *length,
96c07c5b 537 struct type **char_type, const char **charset);
ae6a3a4c 538
c5aa993b 539#endif /* defined (LANGUAGE_H) */