GDB (xrefs)

/tmp/gdb-8.1/gdb/p-lang.c
Go to the documentation of this file.
1 /* Pascal language support routines for GDB, the GNU debugger.
2
3 Copyright (C) 2000-2018 Free Software Foundation, Inc.
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* This file is derived from c-lang.c */
21
22 #include "defs.h"
23 #include "symtab.h"
24 #include "gdbtypes.h"
25 #include "expression.h"
26 #include "parser-defs.h"
27 #include "language.h"
28 #include "varobj.h"
29 #include "p-lang.h"
30 #include "valprint.h"
31 #include "value.h"
32 #include <ctype.h>
33 #include "c-lang.h"
34
35 /* All GPC versions until now (2007-09-27) also define a symbol called
36 '_p_initialize'. Check for the presence of this symbol first. */
37 static const char GPC_P_INITIALIZE[] = "_p_initialize";
38
39 /* The name of the symbol that GPC uses as the name of the main
40 procedure (since version 20050212). */
41 static const char GPC_MAIN_PROGRAM_NAME_1[] = "_p__M0_main_program";
42
43 /* Older versions of GPC (versions older than 20050212) were using
44 a different name for the main procedure. */
45 static const char GPC_MAIN_PROGRAM_NAME_2[] = "pascal_main_program";
46
47 /* Function returning the special symbol name used
48 by GPC for the main procedure in the main program
49 if it is found in minimal symbol list.
50 This function tries to find minimal symbols generated by GPC
51 so that it finds the even if the program was compiled
52 without debugging information.
53 According to information supplied by Waldeck Hebisch,
54 this should work for all versions posterior to June 2000. */
55
56 const char *
57 pascal_main_name (void)
58 {
59 struct bound_minimal_symbol msym;
60
61 msym = lookup_minimal_symbol (GPC_P_INITIALIZE, NULL, NULL);
62
63 /* If '_p_initialize' was not found, the main program is likely not
64 written in Pascal. */
65 if (msym.minsym == NULL)
66 return NULL;
67
68 msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_1, NULL, NULL);
69 if (msym.minsym != NULL)
70 {
71 return GPC_MAIN_PROGRAM_NAME_1;
72 }
73
74 msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_2, NULL, NULL);
75 if (msym.minsym != NULL)
76 {
77 return GPC_MAIN_PROGRAM_NAME_2;
78 }
79
80 /* No known entry procedure found, the main program is probably
81 not compiled with GPC. */
82 return NULL;
83 }
84
85 /* Determines if type TYPE is a pascal string type.
86 Returns a positive value if the type is a known pascal string type.
87 This function is used by p-valprint.c code to allow better string display.
88 If it is a pascal string type, then it also sets info needed
89 to get the length and the data of the string
90 length_pos, length_size and string_pos are given in bytes.
91 char_size gives the element size in bytes.
92 FIXME: if the position or the size of these fields
93 are not multiple of TARGET_CHAR_BIT then the results are wrong
94 but this does not happen for Free Pascal nor for GPC. */
95 int
96 is_pascal_string_type (struct type *type,int *length_pos,
97 int *length_size, int *string_pos,
98 struct type **char_type,
99 const char **arrayname)
100 {
101 if (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT)
102 {
103 /* Old Borland type pascal strings from Free Pascal Compiler. */
104 /* Two fields: length and st. */
105 if (TYPE_NFIELDS (type) == 2
106 && TYPE_FIELD_NAME (type, 0)
107 && strcmp (TYPE_FIELD_NAME (type, 0), "length") == 0
108 && TYPE_FIELD_NAME (type, 1)
109 && strcmp (TYPE_FIELD_NAME (type, 1), "st") == 0)
110 {
111 if (length_pos)
112 *length_pos = TYPE_FIELD_BITPOS (type, 0) / TARGET_CHAR_BIT;
113 if (length_size)
114 *length_size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, 0));
115 if (string_pos)
116 *string_pos = TYPE_FIELD_BITPOS (type, 1) / TARGET_CHAR_BIT;
117 if (char_type)
118 *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 1));
119 if (arrayname)
120 *arrayname = TYPE_FIELD_NAME (type, 1);
121 return 2;
122 };
123 /* GNU pascal strings. */
124 /* Three fields: Capacity, length and schema$ or _p_schema. */
125 if (TYPE_NFIELDS (type) == 3
126 && TYPE_FIELD_NAME (type, 0)
127 && strcmp (TYPE_FIELD_NAME (type, 0), "Capacity") == 0
128 && TYPE_FIELD_NAME (type, 1)
129 && strcmp (TYPE_FIELD_NAME (type, 1), "length") == 0)
130 {
131 if (length_pos)
132 *length_pos = TYPE_FIELD_BITPOS (type, 1) / TARGET_CHAR_BIT;
133 if (length_size)
134 *length_size = TYPE_LENGTH (TYPE_FIELD_TYPE (type, 1));
135 if (string_pos)
136 *string_pos = TYPE_FIELD_BITPOS (type, 2) / TARGET_CHAR_BIT;
137 /* FIXME: how can I detect wide chars in GPC ?? */
138 if (char_type)
139 {
140 *char_type = TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (type, 2));
141
142 if (TYPE_CODE (*char_type) == TYPE_CODE_ARRAY)
143 *char_type = TYPE_TARGET_TYPE (*char_type);
144 }
145 if (arrayname)
146 *arrayname = TYPE_FIELD_NAME (type, 2);
147 return 3;
148 };
149 }
150 return 0;
151 }
152
153 static void pascal_one_char (int, struct ui_file *, int *);
154
155 /* Print the character C on STREAM as part of the contents of a literal
156 string.
157 In_quotes is reset to 0 if a char is written with #4 notation. */
158
159 static void
160 pascal_one_char (int c, struct ui_file *stream, int *in_quotes)
161 {
162 if (c == '\'' || ((unsigned int) c <= 0xff && (PRINT_LITERAL_FORM (c))))
163 {
164 if (!(*in_quotes))
165 fputs_filtered ("'", stream);
166 *in_quotes = 1;
167 if (c == '\'')
168 {
169 fputs_filtered ("''", stream);
170 }
171 else
172 fprintf_filtered (stream, "%c", c);
173 }
174 else
175 {
176 if (*in_quotes)
177 fputs_filtered ("'", stream);
178 *in_quotes = 0;
179 fprintf_filtered (stream, "#%d", (unsigned int) c);
180 }
181 }
182
183 static void pascal_emit_char (int c, struct type *type,
184 struct ui_file *stream, int quoter);
185
186 /* Print the character C on STREAM as part of the contents of a literal
187 string whose delimiter is QUOTER. Note that that format for printing
188 characters and strings is language specific. */
189
190 static void
191 pascal_emit_char (int c, struct type *type, struct ui_file *stream, int quoter)
192 {
193 int in_quotes = 0;
194
195 pascal_one_char (c, stream, &in_quotes);
196 if (in_quotes)
197 fputs_filtered ("'", stream);
198 }
199
200 void
201 pascal_printchar (int c, struct type *type, struct ui_file *stream)
202 {
203 int in_quotes = 0;
204
205 pascal_one_char (c, stream, &in_quotes);
206 if (in_quotes)
207 fputs_filtered ("'", stream);
208 }
209
210 /* Print the character string STRING, printing at most LENGTH characters.
211 Printing stops early if the number hits print_max; repeat counts
212 are printed as appropriate. Print ellipses at the end if we
213 had to stop before printing LENGTH characters, or if FORCE_ELLIPSES. */
214
215 void
216 pascal_printstr (struct ui_file *stream, struct type *type,
217 const gdb_byte *string, unsigned int length,
218 const char *encoding, int force_ellipses,
219 const struct value_print_options *options)
220 {
221 enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
222 unsigned int i;
223 unsigned int things_printed = 0;
224 int in_quotes = 0;
225 int need_comma = 0;
226 int width;
227
228 /* Preserve TYPE's original type, just set its LENGTH. */
229 check_typedef (type);
230 width = TYPE_LENGTH (type);
231
232 /* If the string was not truncated due to `set print elements', and
233 the last byte of it is a null, we don't print that, in traditional C
234 style. */
235 if ((!force_ellipses) && length > 0
236 && extract_unsigned_integer (string + (length - 1) * width, width,
237 byte_order) == 0)
238 length--;
239
240 if (length == 0)
241 {
242 fputs_filtered ("''", stream);
243 return;
244 }
245
246 for (i = 0; i < length && things_printed < options->print_max; ++i)
247 {
248 /* Position of the character we are examining
249 to see whether it is repeated. */
250 unsigned int rep1;
251 /* Number of repetitions we have detected so far. */
252 unsigned int reps;
253 unsigned long int current_char;
254
255 QUIT;
256
257 if (need_comma)
258 {
259 fputs_filtered (", ", stream);
260 need_comma = 0;
261 }
262
263 current_char = extract_unsigned_integer (string + i * width, width,
264 byte_order);
265
266 rep1 = i + 1;
267 reps = 1;
268 while (rep1 < length
269 && extract_unsigned_integer (string + rep1 * width, width,
270 byte_order) == current_char)
271 {
272 ++rep1;
273 ++reps;
274 }
275
276 if (reps > options->repeat_count_threshold)
277 {
278 if (in_quotes)
279 {
280 fputs_filtered ("', ", stream);
281 in_quotes = 0;
282 }
283 pascal_printchar (current_char, type, stream);
284 fprintf_filtered (stream, " <repeats %u times>", reps);
285 i = rep1 - 1;
286 things_printed += options->repeat_count_threshold;
287 need_comma = 1;
288 }
289 else
290 {
291 if ((!in_quotes) && (PRINT_LITERAL_FORM (current_char)))
292 {
293 fputs_filtered ("'", stream);
294 in_quotes = 1;
295 }
296 pascal_one_char (current_char, stream, &in_quotes);
297 ++things_printed;
298 }
299 }
300
301 /* Terminate the quotes if necessary. */
302 if (in_quotes)
303 fputs_filtered ("'", stream);
304
305 if (force_ellipses || i < length)
306 fputs_filtered ("...", stream);
307 }
308
309
310 /* Table mapping opcodes into strings for printing operators
311 and precedences of the operators. */
312
313 const struct op_print pascal_op_print_tab[] =
314 {
315 {",", BINOP_COMMA, PREC_COMMA, 0},
316 {":=", BINOP_ASSIGN, PREC_ASSIGN, 1},
317 {"or", BINOP_BITWISE_IOR, PREC_BITWISE_IOR, 0},
318 {"xor", BINOP_BITWISE_XOR, PREC_BITWISE_XOR, 0},
319 {"and", BINOP_BITWISE_AND, PREC_BITWISE_AND, 0},
320 {"=", BINOP_EQUAL, PREC_EQUAL, 0},
321 {"<>", BINOP_NOTEQUAL, PREC_EQUAL, 0},
322 {"<=", BINOP_LEQ, PREC_ORDER, 0},
323 {">=", BINOP_GEQ, PREC_ORDER, 0},
324 {">", BINOP_GTR, PREC_ORDER, 0},
325 {"<", BINOP_LESS, PREC_ORDER, 0},
326 {"shr", BINOP_RSH, PREC_SHIFT, 0},
327 {"shl", BINOP_LSH, PREC_SHIFT, 0},
328 {"+", BINOP_ADD, PREC_ADD, 0},
329 {"-", BINOP_SUB, PREC_ADD, 0},
330 {"*", BINOP_MUL, PREC_MUL, 0},
331 {"/", BINOP_DIV, PREC_MUL, 0},
332 {"div", BINOP_INTDIV, PREC_MUL, 0},
333 {"mod", BINOP_REM, PREC_MUL, 0},
334 {"@", BINOP_REPEAT, PREC_REPEAT, 0},
335 {"-", UNOP_NEG, PREC_PREFIX, 0},
336 {"not", UNOP_LOGICAL_NOT, PREC_PREFIX, 0},
337 {"^", UNOP_IND, PREC_SUFFIX, 1},
338 {"@", UNOP_ADDR, PREC_PREFIX, 0},
339 {"sizeof", UNOP_SIZEOF, PREC_PREFIX, 0},
340 {NULL, OP_NULL, PREC_PREFIX, 0}
341 };
342
343 enum pascal_primitive_types {
344 pascal_primitive_type_int,
345 pascal_primitive_type_long,
346 pascal_primitive_type_short,
347 pascal_primitive_type_char,
348 pascal_primitive_type_float,
349 pascal_primitive_type_double,
350 pascal_primitive_type_void,
351 pascal_primitive_type_long_long,
352 pascal_primitive_type_signed_char,
353 pascal_primitive_type_unsigned_char,
354 pascal_primitive_type_unsigned_short,
355 pascal_primitive_type_unsigned_int,
356 pascal_primitive_type_unsigned_long,
357 pascal_primitive_type_unsigned_long_long,
358 pascal_primitive_type_long_double,
359 pascal_primitive_type_complex,
360 pascal_primitive_type_double_complex,
361 nr_pascal_primitive_types
362 };
363
364 static void
365 pascal_language_arch_info (struct gdbarch *gdbarch,
366 struct language_arch_info *lai)
367 {
368 const struct builtin_type *builtin = builtin_type (gdbarch);
369
370 lai->string_char_type = builtin->builtin_char;
371 lai->primitive_type_vector
372 = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1,
373 struct type *);
374 lai->primitive_type_vector [pascal_primitive_type_int]
375 = builtin->builtin_int;
376 lai->primitive_type_vector [pascal_primitive_type_long]
377 = builtin->builtin_long;
378 lai->primitive_type_vector [pascal_primitive_type_short]
379 = builtin->builtin_short;
380 lai->primitive_type_vector [pascal_primitive_type_char]
381 = builtin->builtin_char;
382 lai->primitive_type_vector [pascal_primitive_type_float]
383 = builtin->builtin_float;
384 lai->primitive_type_vector [pascal_primitive_type_double]
385 = builtin->builtin_double;
386 lai->primitive_type_vector [pascal_primitive_type_void]
387 = builtin->builtin_void;
388 lai->primitive_type_vector [pascal_primitive_type_long_long]
389 = builtin->builtin_long_long;
390 lai->primitive_type_vector [pascal_primitive_type_signed_char]
391 = builtin->builtin_signed_char;
392 lai->primitive_type_vector [pascal_primitive_type_unsigned_char]
393 = builtin->builtin_unsigned_char;
394 lai->primitive_type_vector [pascal_primitive_type_unsigned_short]
395 = builtin->builtin_unsigned_short;
396 lai->primitive_type_vector [pascal_primitive_type_unsigned_int]
397 = builtin->builtin_unsigned_int;
398 lai->primitive_type_vector [pascal_primitive_type_unsigned_long]
399 = builtin->builtin_unsigned_long;
400 lai->primitive_type_vector [pascal_primitive_type_unsigned_long_long]
401 = builtin->builtin_unsigned_long_long;
402 lai->primitive_type_vector [pascal_primitive_type_long_double]
403 = builtin->builtin_long_double;
404 lai->primitive_type_vector [pascal_primitive_type_complex]
405 = builtin->builtin_complex;
406 lai->primitive_type_vector [pascal_primitive_type_double_complex]
407 = builtin->builtin_double_complex;
408
409 lai->bool_type_symbol = "boolean";
410 lai->bool_type_default = builtin->builtin_bool;
411 }
412
413 static const char *p_extensions[] =
414 {
415 ".pas", ".p", ".pp", NULL
416 };
417
418 extern const struct language_defn pascal_language_defn =
419 {
420 "pascal", /* Language name */
421 "Pascal",
422 language_pascal,
423 range_check_on,
424 case_sensitive_on,
425 array_row_major,
426 macro_expansion_no,
427 p_extensions,
428 &exp_descriptor_standard,
429 pascal_parse,
430 pascal_yyerror,
431 null_post_parser,
432 pascal_printchar, /* Print a character constant */
433 pascal_printstr, /* Function to print string constant */
434 pascal_emit_char, /* Print a single char */
435 pascal_print_type, /* Print a type using appropriate syntax */
436 pascal_print_typedef, /* Print a typedef using appropriate syntax */
437 pascal_val_print, /* Print a value using appropriate syntax */
438 pascal_value_print, /* Print a top-level value */
439 default_read_var_value, /* la_read_var_value */
440 NULL, /* Language specific skip_trampoline */
441 "this", /* name_of_this */
442 basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */
443 basic_lookup_transparent_type,/* lookup_transparent_type */
444 NULL, /* Language specific symbol demangler */
445 NULL,
446 NULL, /* Language specific class_name_from_physname */
447 pascal_op_print_tab, /* expression operators for printing */
448 1, /* c-style arrays */
449 0, /* String lower bound */
450 default_word_break_characters,
451 default_collect_symbol_completion_matches,
452 pascal_language_arch_info,
453 default_print_array_index,
454 default_pass_by_reference,
455 default_get_string,
456 c_watch_location_expression,
457 NULL, /* la_compare_symbol_for_completion */
458 iterate_over_symbols,
459 default_search_name_hash,
460 &default_varobj_ops,
461 NULL,
462 NULL,
463 LANG_MAGIC
464 };
gdbarch
Definition: gdbarch.c:127
pascal_primitive_type_unsigned_int
Definition: p-lang.c:355
pascal_primitive_type_signed_char
Definition: p-lang.c:352
range_check_on
Definition: language.h:61
pascal_primitive_type_unsigned_long
Definition: p-lang.c:356
PREC_ADD
Definition: parser-defs.h:298
TYPE_CODE_ARRAY
Definition: gdbtypes.h:104
value_print_options::repeat_count_threshold
unsigned int repeat_count_threshold
Definition: valprint.h:57
builtin_type::builtin_long_double
struct type * builtin_long_double
Definition: gdbtypes.h:1512
PREC_PREFIX
Definition: parser-defs.h:299
PREC_EQUAL
Definition: parser-defs.h:298
TYPE_FIELD_NAME
#define TYPE_FIELD_NAME(thistype, n)
Definition: gdbtypes.h:1372
builtin_type::builtin_unsigned_int
struct type * builtin_unsigned_int
Definition: gdbtypes.h:1508
default_search_name_hash
unsigned int default_search_name_hash(const char *string0)
Definition: dictionary.c:769
builtin_type::builtin_double_complex
struct type * builtin_double_complex
Definition: gdbtypes.h:1514
GDBARCH_OBSTACK_CALLOC
#define GDBARCH_OBSTACK_CALLOC(GDBARCH, NR, TYPE)
Definition: gdbarch.h:1708
default_word_break_characters
const char * default_word_break_characters(void)
Definition: language.c:679
PREC_ORDER
Definition: parser-defs.h:298
GPC_MAIN_PROGRAM_NAME_1
static const char GPC_MAIN_PROGRAM_NAME_1[]
Definition: p-lang.c:41
builtin_type
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
Definition: gdbtypes.c:5217
PREC_BITWISE_XOR
Definition: parser-defs.h:297
varobj.h
default_read_var_value
struct value * default_read_var_value(struct symbol *var, const struct block *var_block, struct frame_info *frame)
Definition: findvar.c:587
pascal_val_print
void pascal_val_print(struct type *, int, CORE_ADDR, struct ui_file *, int, struct value *, const struct value_print_options *)
Definition: p-valprint.c:62
GPC_P_INITIALIZE
static const char GPC_P_INITIALIZE[]
Definition: p-lang.c:37
ui_file
Definition: ui-file.h:26
language_arch_info::string_char_type
struct type * string_char_type
Definition: language.h:122
builtin_type::builtin_complex
struct type * builtin_complex
Definition: gdbtypes.h:1513
is_pascal_string_type
int is_pascal_string_type(struct type *type, int *length_pos, int *length_size, int *string_pos, struct type **char_type, const char **arrayname)
Definition: p-lang.c:96
defs.h
builtin_type
Definition: gdbtypes.h:1495
pascal_main_name
const char * pascal_main_name(void)
Definition: p-lang.c:57
TYPE_FIELD_TYPE
#define TYPE_FIELD_TYPE(thistype, n)
Definition: gdbtypes.h:1371
pascal_primitive_type_unsigned_char
Definition: p-lang.c:353
builtin_type::builtin_short
struct type * builtin_short
Definition: gdbtypes.h:1502
case_sensitive_on
Definition: language.h:92
op_print
Definition: parser-defs.h:305
pascal_op_print_tab
const struct op_print pascal_op_print_tab[]
Definition: p-lang.c:313
language_defn
Definition: language.h:132
pascal_yyerror
void pascal_yyerror(const char *)
parser-defs.h
pascal_primitive_type_void
Definition: p-lang.c:350
symtab.h
array_row_major
Definition: language.h:81
pascal_parse
int pascal_parse(struct parser_state *par_state)
Definition: p-exp.c:3349
pascal_primitive_type_double
Definition: p-lang.c:349
pascal_primitive_type_unsigned_long_long
Definition: p-lang.c:357
check_typedef
struct type * check_typedef(struct type *type)
Definition: gdbtypes.c:2421
pascal_primitive_type_int
Definition: p-lang.c:344
builtin_type::builtin_unsigned_long
struct type * builtin_unsigned_long
Definition: gdbtypes.h:1509
value_print_options
Definition: valprint.h:25
basic_lookup_symbol_nonlocal
struct block_symbol basic_lookup_symbol_nonlocal(const struct language_defn *langdef, const char *name, const struct block *block, const domain_enum domain)
Definition: symtab.c:2417
language_arch_info::bool_type_default
struct type * bool_type_default
Definition: language.h:127
PRINT_LITERAL_FORM
#define PRINT_LITERAL_FORM(c)
Definition: language.h:549
pascal_one_char
static void pascal_one_char(int, struct ui_file *, int *)
Definition: p-lang.c:160
PREC_MUL
Definition: parser-defs.h:298
fprintf_filtered
void fprintf_filtered(struct ui_file *stream, const char *format,...)
Definition: utils.c:2008
pascal_primitive_type_char
Definition: p-lang.c:347
extract_unsigned_integer
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
Definition: defs.h:577
bound_minimal_symbol
Definition: minsyms.h:29
fputs_filtered
void fputs_filtered(const char *linebuffer, struct ui_file *stream)
Definition: utils.c:1811
expression.h
language_arch_info::bool_type_symbol
const char * bool_type_symbol
Definition: language.h:125
default_pass_by_reference
int default_pass_by_reference(struct type *type)
Definition: language.c:669
gdbarch_byte_order
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
Definition: gdbarch.c:1509
pascal_primitive_types
pascal_primitive_types
Definition: p-lang.c:343
basic_lookup_transparent_type
struct type * basic_lookup_transparent_type(const char *name)
Definition: symtab.c:2792
pascal_language_arch_info
static void pascal_language_arch_info(struct gdbarch *gdbarch, struct language_arch_info *lai)
Definition: p-lang.c:365
TARGET_CHAR_BIT
#define TARGET_CHAR_BIT
Definition: host-defs.h:29
type
Definition: gdbtypes.h:749
language.h
get_type_arch
struct gdbarch * get_type_arch(const struct type *type)
Definition: gdbtypes.c:234
null_post_parser
void null_post_parser(expression_up *exp, int void_context_p)
Definition: parse.c:1319
builtin_type::builtin_long
struct type * builtin_long
Definition: gdbtypes.h:1504
pascal_value_print
void pascal_value_print(struct value *, struct ui_file *, const struct value_print_options *)
Definition: p-valprint.c:423
pascal_printstr
void pascal_printstr(struct ui_file *stream, struct type *type, const gdb_byte *string, unsigned int length, const char *encoding, int force_ellipses, const struct value_print_options *options)
Definition: p-lang.c:216
default_print_array_index
void default_print_array_index(struct value *index_value, struct ui_file *stream, const struct value_print_options *options)
Definition: language.c:687
builtin_type::builtin_unsigned_char
struct type * builtin_unsigned_char
Definition: gdbtypes.h:1506
TYPE_CODE_STRUCT
Definition: gdbtypes.h:106
builtin_type::builtin_bool
struct type * builtin_bool
Definition: gdbtypes.h:1516
builtin_type::builtin_unsigned_long_long
struct type * builtin_unsigned_long_long
Definition: gdbtypes.h:1518
builtin_type::builtin_signed_char
struct type * builtin_signed_char
Definition: gdbtypes.h:1505
pascal_primitive_type_long
Definition: p-lang.c:345
TYPE_FIELD_BITPOS
#define TYPE_FIELD_BITPOS(thistype, n)
Definition: gdbtypes.h:1374
pascal_primitive_type_unsigned_short
Definition: p-lang.c:354
builtin_type::builtin_unsigned_short
struct type * builtin_unsigned_short
Definition: gdbtypes.h:1507
pascal_primitive_type_float
Definition: p-lang.c:348
pascal_printchar
void pascal_printchar(int c, struct type *type, struct ui_file *stream)
Definition: p-lang.c:201
default_collect_symbol_completion_matches
void default_collect_symbol_completion_matches(completion_tracker &tracker, complete_symbol_mode mode, symbol_name_match_type name_match_type, const char *text, const char *word, enum type_code code)
Definition: symtab.c:5190
language_pascal
Definition: defs.h:215
gdb_byte
bfd_byte gdb_byte
Definition: common-types.h:38
c_watch_location_expression
gdb::unique_xmalloc_ptr< char > c_watch_location_expression(struct type *type, CORE_ADDR addr)
Definition: c-lang.c:712
builtin_type::builtin_char
struct type * builtin_char
Definition: gdbtypes.h:1501
TYPE_TARGET_TYPE
#define TYPE_TARGET_TYPE(thistype)
Definition: gdbtypes.h:1226
macro_expansion_no
Definition: language.h:103
builtin_type::builtin_double
struct type * builtin_double
Definition: gdbtypes.h:1511
default_get_string
void default_get_string(struct value *value, gdb_byte **buffer, int *length, struct type **char_type, const char **charset)
Definition: language.c:696
pascal_primitive_type_long_double
Definition: p-lang.c:358
TYPE_CODE
#define TYPE_CODE(thistype)
Definition: gdbtypes.h:1238
default_varobj_ops
#define default_varobj_ops
Definition: varobj.h:236
c-lang.h
pascal_primitive_type_short
Definition: p-lang.c:346
PREC_BITWISE_IOR
Definition: parser-defs.h:297
pascal_print_type
void pascal_print_type(struct type *, const char *, struct ui_file *, int, int, const struct type_print_options *)
Definition: p-typeprint.c:48
exp_descriptor_standard
const struct exp_descriptor exp_descriptor_standard
Definition: parse.c:58
pascal_primitive_type_complex
Definition: p-lang.c:359
PREC_BITWISE_AND
Definition: parser-defs.h:297
TYPE_NFIELDS
#define TYPE_NFIELDS(thistype)
Definition: gdbtypes.h:1239
pascal_primitive_type_double_complex
Definition: p-lang.c:360
value.h
PREC_ASSIGN
Definition: parser-defs.h:296
gdbtypes.h
builtin_type::builtin_long_long
struct type * builtin_long_long
Definition: gdbtypes.h:1517
pascal_print_typedef
void pascal_print_typedef(struct type *, struct symbol *, struct ui_file *)
Definition: p-typeprint.c:96
GPC_MAIN_PROGRAM_NAME_2
static const char GPC_MAIN_PROGRAM_NAME_2[]
Definition: p-lang.c:45
PREC_SUFFIX
Definition: parser-defs.h:299
value_print_options::print_max
unsigned int print_max
Definition: valprint.h:53
p-lang.h
language_arch_info
Definition: language.h:109
PREC_REPEAT
Definition: parser-defs.h:298
nr_pascal_primitive_types
Definition: p-lang.c:361
TYPE_LENGTH
#define TYPE_LENGTH(thistype)
Definition: gdbtypes.h:1235
iterate_over_symbols
void iterate_over_symbols(const struct block *block, const lookup_name_info &name, const domain_enum domain, gdb::function_view< symbol_found_callback_ftype > callback)
Definition: symtab.c:2849
PREC_SHIFT
Definition: parser-defs.h:298
p_extensions
static const char * p_extensions[]
Definition: p-lang.c:413
LANG_MAGIC
#define LANG_MAGIC
Definition: language.h:438
QUIT
#define QUIT
Definition: defs.h:179
PREC_COMMA
Definition: parser-defs.h:296
valprint.h
language_arch_info::primitive_type_vector
struct type ** primitive_type_vector
Definition: language.h:115
lookup_minimal_symbol
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
Definition: minsyms.c:311
builtin_type::builtin_void
struct type * builtin_void
Definition: gdbtypes.h:1500
pascal_primitive_type_long_long
Definition: p-lang.c:351
pascal_language_defn
const struct language_defn pascal_language_defn
pascal_emit_char
static void pascal_emit_char(int c, struct type *type, struct ui_file *stream, int quoter)
Definition: p-lang.c:191
builtin_type::builtin_float
struct type * builtin_float
Definition: gdbtypes.h:1510
builtin_type::builtin_int
struct type * builtin_int
Definition: gdbtypes.h:1503