gdb: Convert la_name_of_this to a method
[deliverable/binutils-gdb.git] / gdb / language.c
CommitLineData
c906108c 1/* Multiple source language support for GDB.
1bac305b 2
b811d2c2 3 Copyright (C) 1991-2020 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/* This file contains functions that return things that are specific
24 to languages. Each function should examine current_language if necessary,
1777feb0 25 and return the appropriate result. */
c906108c
SS
26
27/* FIXME: Most of these would be better organized as macros which
28 return data out of a "language-specific" struct pointer that is set
29 whenever the working language changes. That would be a lot faster. */
30
31#include "defs.h"
32#include <ctype.h>
c906108c
SS
33#include "symtab.h"
34#include "gdbtypes.h"
35#include "value.h"
36#include "gdbcmd.h"
c906108c
SS
37#include "expression.h"
38#include "language.h"
a53b64ea 39#include "varobj.h"
c906108c
SS
40#include "target.h"
41#include "parser-defs.h"
9a3d7dfd 42#include "demangle.h"
8b60591b 43#include "symfile.h"
8de20a37 44#include "cp-support.h"
06096720 45#include "frame.h"
43cc5389 46#include "c-lang.h"
47e77640 47#include <algorithm>
0d12e84c 48#include "gdbarch.h"
c906108c 49
a451cb65 50static void set_range_case (void);
c906108c 51
c906108c 52/* The current (default at startup) state of type and range checking.
c5aa993b
JM
53 (If the modes are set to "auto", though, these are changed based
54 on the default language at startup, and then again based on the
55 language of the first source file. */
c906108c
SS
56
57enum range_mode range_mode = range_mode_auto;
58enum range_check range_check = range_check_off;
63872f9d
JG
59enum case_mode case_mode = case_mode_auto;
60enum case_sensitivity case_sensitivity = case_sensitive_on;
c906108c 61
1777feb0 62/* The current language and language_mode (see language.h). */
c906108c 63
0874fd07 64const struct language_defn *current_language = nullptr;
c906108c
SS
65enum language_mode language_mode = language_mode_auto;
66
67/* The language that the user expects to be typing in (the language
68 of main(), or the last language we notified them about, or C). */
69
70const struct language_defn *expected_language;
71
0874fd07
AB
72/* Define the array containing all languages. */
73
74const struct language_defn *language_defn::languages[nr_languages];
c906108c 75
814fa4f6 76/* The current values of the "set language/range/case-sensitive" enum
b84aa90a
PA
77 commands. */
78static const char *language;
b84aa90a
PA
79static const char *range;
80static const char *case_sensitive;
c906108c 81
34916edc
CB
82/* See language.h. */
83const char lang_frame_mismatch_warn[] =
84N_("Warning: the current language does not match this frame.");
c906108c
SS
85\f
86/* This page contains the functions corresponding to GDB commands
1777feb0 87 and their helpers. */
c906108c
SS
88
89/* Show command. Display a warning if the language set
1777feb0 90 does not match the frame. */
c906108c 91static void
4d28ad1e
AC
92show_language_command (struct ui_file *file, int from_tty,
93 struct cmd_list_element *c, const char *value)
c906108c 94{
7ff38b1c 95 enum language flang; /* The language of the frame. */
c906108c 96
b84aa90a
PA
97 if (language_mode == language_mode_auto)
98 fprintf_filtered (gdb_stdout,
99 _("The current source language is "
100 "\"auto; currently %s\".\n"),
101 current_language->la_name);
102 else
3e43a32a
MS
103 fprintf_filtered (gdb_stdout,
104 _("The current source language is \"%s\".\n"),
b84aa90a
PA
105 current_language->la_name);
106
7ff38b1c
AB
107 if (has_stack_frames ())
108 {
109 struct frame_info *frame;
110
111 frame = get_selected_frame (NULL);
112 flang = get_frame_language (frame);
113 if (flang != language_unknown
114 && language_mode == language_mode_manual
115 && current_language->la_language != flang)
34916edc 116 printf_filtered ("%s\n", _(lang_frame_mismatch_warn));
7ff38b1c 117 }
c906108c
SS
118}
119
1777feb0 120/* Set command. Change the current working language. */
c906108c 121static void
eb4c3f4a
TT
122set_language_command (const char *ignore,
123 int from_tty, struct cmd_list_element *c)
c906108c 124{
7ff38b1c 125 enum language flang = language_unknown;
c906108c 126
47e77640
PA
127 /* "local" is a synonym of "auto". */
128 if (strcmp (language, "local") == 0)
129 language = "auto";
130
c906108c 131 /* Search the list of languages for a match. */
0874fd07 132 for (const auto &lang : language_defn::languages)
c5aa993b 133 {
47e77640 134 if (strcmp (lang->la_name, language) == 0)
c5aa993b
JM
135 {
136 /* Found it! Go into manual mode, and use this language. */
47e77640 137 if (lang->la_language == language_auto)
c5aa993b 138 {
8b60591b
JB
139 /* Enter auto mode. Set to the current frame's language, if
140 known, or fallback to the initial language. */
c5aa993b 141 language_mode = language_mode_auto;
a70b8144 142 try
7ff38b1c
AB
143 {
144 struct frame_info *frame;
145
146 frame = get_selected_frame (NULL);
147 flang = get_frame_language (frame);
148 }
230d2906 149 catch (const gdb_exception_error &ex)
7ff38b1c
AB
150 {
151 flang = language_unknown;
152 }
7ff38b1c 153
c5aa993b
JM
154 if (flang != language_unknown)
155 set_language (flang);
8b60591b
JB
156 else
157 set_initial_language ();
c5aa993b
JM
158 expected_language = current_language;
159 return;
160 }
161 else
162 {
163 /* Enter manual mode. Set the specified language. */
164 language_mode = language_mode_manual;
47e77640 165 current_language = lang;
a451cb65 166 set_range_case ();
c5aa993b
JM
167 expected_language = current_language;
168 return;
169 }
170 }
c906108c 171 }
c906108c 172
b84aa90a
PA
173 internal_error (__FILE__, __LINE__,
174 "Couldn't find language `%s' in known languages list.",
175 language);
c906108c
SS
176}
177
c906108c 178/* Show command. Display a warning if the range setting does
1777feb0 179 not match the current language. */
c906108c 180static void
4d28ad1e
AC
181show_range_command (struct ui_file *file, int from_tty,
182 struct cmd_list_element *c, const char *value)
c906108c 183{
b84aa90a
PA
184 if (range_mode == range_mode_auto)
185 {
a121b7c1 186 const char *tmp;
b84aa90a
PA
187
188 switch (range_check)
189 {
190 case range_check_on:
191 tmp = "on";
192 break;
193 case range_check_off:
194 tmp = "off";
195 break;
196 case range_check_warn:
197 tmp = "warn";
198 break;
199 default:
200 internal_error (__FILE__, __LINE__,
201 "Unrecognized range check setting.");
202 }
203
204 fprintf_filtered (gdb_stdout,
205 _("Range checking is \"auto; currently %s\".\n"),
206 tmp);
207 }
208 else
209 fprintf_filtered (gdb_stdout, _("Range checking is \"%s\".\n"),
210 value);
211
c5aa993b 212 if (range_check != current_language->la_range_check)
b84aa90a
PA
213 warning (_("the current range check setting "
214 "does not match the language.\n"));
c906108c
SS
215}
216
1777feb0 217/* Set command. Change the setting for range checking. */
c906108c 218static void
eb4c3f4a
TT
219set_range_command (const char *ignore,
220 int from_tty, struct cmd_list_element *c)
c906108c 221{
6314a349 222 if (strcmp (range, "on") == 0)
c5aa993b 223 {
c906108c
SS
224 range_check = range_check_on;
225 range_mode = range_mode_manual;
c5aa993b 226 }
6314a349 227 else if (strcmp (range, "warn") == 0)
c5aa993b 228 {
c906108c
SS
229 range_check = range_check_warn;
230 range_mode = range_mode_manual;
c5aa993b 231 }
6314a349 232 else if (strcmp (range, "off") == 0)
c5aa993b 233 {
c906108c
SS
234 range_check = range_check_off;
235 range_mode = range_mode_manual;
c5aa993b 236 }
6314a349 237 else if (strcmp (range, "auto") == 0)
c5aa993b 238 {
c906108c 239 range_mode = range_mode_auto;
a451cb65 240 set_range_case ();
c906108c 241 return;
c5aa993b 242 }
c4093a6a
JM
243 else
244 {
b84aa90a
PA
245 internal_error (__FILE__, __LINE__,
246 _("Unrecognized range check setting: \"%s\""), range);
c4093a6a 247 }
b84aa90a
PA
248 if (range_check != current_language->la_range_check)
249 warning (_("the current range check setting "
250 "does not match the language.\n"));
c906108c
SS
251}
252
63872f9d 253/* Show command. Display a warning if the case sensitivity setting does
1777feb0 254 not match the current language. */
63872f9d 255static void
4d28ad1e
AC
256show_case_command (struct ui_file *file, int from_tty,
257 struct cmd_list_element *c, const char *value)
63872f9d 258{
b84aa90a
PA
259 if (case_mode == case_mode_auto)
260 {
a121b7c1 261 const char *tmp = NULL;
b84aa90a
PA
262
263 switch (case_sensitivity)
264 {
265 case case_sensitive_on:
266 tmp = "on";
267 break;
268 case case_sensitive_off:
269 tmp = "off";
270 break;
271 default:
272 internal_error (__FILE__, __LINE__,
273 "Unrecognized case-sensitive setting.");
274 }
275
276 fprintf_filtered (gdb_stdout,
277 _("Case sensitivity in "
278 "name search is \"auto; currently %s\".\n"),
279 tmp);
280 }
281 else
3e43a32a
MS
282 fprintf_filtered (gdb_stdout,
283 _("Case sensitivity in name search is \"%s\".\n"),
b84aa90a
PA
284 value);
285
4d28ad1e 286 if (case_sensitivity != current_language->la_case_sensitivity)
b84aa90a
PA
287 warning (_("the current case sensitivity setting does not match "
288 "the language.\n"));
63872f9d
JG
289}
290
591e78ff
MK
291/* Set command. Change the setting for case sensitivity. */
292
63872f9d 293static void
eb4c3f4a 294set_case_command (const char *ignore, int from_tty, struct cmd_list_element *c)
63872f9d 295{
591e78ff
MK
296 if (strcmp (case_sensitive, "on") == 0)
297 {
298 case_sensitivity = case_sensitive_on;
299 case_mode = case_mode_manual;
300 }
301 else if (strcmp (case_sensitive, "off") == 0)
302 {
303 case_sensitivity = case_sensitive_off;
304 case_mode = case_mode_manual;
305 }
306 else if (strcmp (case_sensitive, "auto") == 0)
307 {
308 case_mode = case_mode_auto;
a451cb65 309 set_range_case ();
591e78ff
MK
310 return;
311 }
63872f9d 312 else
591e78ff 313 {
b84aa90a
PA
314 internal_error (__FILE__, __LINE__,
315 "Unrecognized case-sensitive setting: \"%s\"",
316 case_sensitive);
591e78ff 317 }
b84aa90a
PA
318
319 if (case_sensitivity != current_language->la_case_sensitivity)
320 warning (_("the current case sensitivity setting does not match "
321 "the language.\n"));
63872f9d
JG
322}
323
324/* Set the status of range and type checking and case sensitivity based on
c906108c
SS
325 the current modes and the current language.
326 If SHOW is non-zero, then print out the current language,
1777feb0 327 type and range checking status. */
c906108c 328static void
a451cb65 329set_range_case (void)
c906108c 330{
c906108c
SS
331 if (range_mode == range_mode_auto)
332 range_check = current_language->la_range_check;
333
63872f9d
JG
334 if (case_mode == case_mode_auto)
335 case_sensitivity = current_language->la_case_sensitivity;
c906108c
SS
336}
337
1777feb0
MS
338/* Set current language to (enum language) LANG. Returns previous
339 language. */
c906108c
SS
340
341enum language
fba45db2 342set_language (enum language lang)
c906108c 343{
c906108c
SS
344 enum language prev_language;
345
346 prev_language = current_language->la_language;
0874fd07 347 current_language = language_def (lang);
47e77640 348 set_range_case ();
c906108c
SS
349 return prev_language;
350}
351\f
c906108c
SS
352
353/* Print out the current language settings: language, range and
354 type checking. If QUIETLY, print only what has changed. */
355
356void
fba45db2 357language_info (int quietly)
c906108c
SS
358{
359 if (quietly && expected_language == current_language)
360 return;
361
362 expected_language = current_language;
a3f17187 363 printf_unfiltered (_("Current language: %s\n"), language);
4d28ad1e 364 show_language_command (NULL, 1, NULL, NULL);
c906108c
SS
365
366 if (!quietly)
367 {
a3f17187 368 printf_unfiltered (_("Range checking: %s\n"), range);
4d28ad1e 369 show_range_command (NULL, 1, NULL, NULL);
a3f17187 370 printf_unfiltered (_("Case sensitivity: %s\n"), case_sensitive);
4d28ad1e 371 show_case_command (NULL, 1, NULL, NULL);
c906108c
SS
372 }
373}
374\f
c906108c 375
1777feb0 376/* Returns non-zero if the value is a pointer type. */
c906108c 377int
fba45db2 378pointer_type (struct type *type)
c906108c 379{
78134374 380 return type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type);
c906108c
SS
381}
382
c906108c 383\f
c906108c 384/* This page contains functions that return info about
1777feb0 385 (struct value) values used in GDB. */
c906108c 386
1777feb0 387/* Returns non-zero if the value VAL represents a true value. */
c906108c 388int
3d6d86c6 389value_true (struct value *val)
c906108c
SS
390{
391 /* It is possible that we should have some sort of error if a non-boolean
392 value is used in this context. Possibly dependent on some kind of
393 "boolean-checking" option like range checking. But it should probably
394 not depend on the language except insofar as is necessary to identify
395 a "boolean" value (i.e. in C using a float, pointer, etc., as a boolean
396 should be an error, probably). */
397 return !value_logical_not (val);
398}
399\f
c906108c
SS
400/* This page contains functions for the printing out of
401 error messages that occur during type- and range-
1777feb0 402 checking. */
c906108c 403
a451cb65 404/* This is called when a language fails a range-check. The
ddfe3c15 405 first argument should be a printf()-style format string, and the
a451cb65
KS
406 rest of the arguments should be its arguments. If range_check is
407 range_check_on, an error is printed; if range_check_warn, a warning;
408 otherwise just the message. */
c906108c
SS
409
410void
ddfe3c15 411range_error (const char *string,...)
c906108c 412{
c5aa993b 413 va_list args;
c906108c 414
e0881a8e 415 va_start (args, string);
ddfe3c15
AC
416 switch (range_check)
417 {
418 case range_check_warn:
419 vwarning (string, args);
420 break;
421 case range_check_on:
422 verror (string, args);
423 break;
424 case range_check_off:
425 /* FIXME: cagney/2002-01-30: Should this function print anything
426 when range error is off? */
427 vfprintf_filtered (gdb_stderr, string, args);
428 fprintf_filtered (gdb_stderr, "\n");
429 break;
430 default:
e2e0b3e5 431 internal_error (__FILE__, __LINE__, _("bad switch"));
ddfe3c15 432 }
c5aa993b 433 va_end (args);
c906108c 434}
c906108c 435\f
c5aa993b 436
1777feb0 437/* This page contains miscellaneous functions. */
c906108c 438
1777feb0 439/* Return the language enum for a given language string. */
c906108c
SS
440
441enum language
2039bd9f 442language_enum (const char *str)
c906108c 443{
0874fd07 444 for (const auto &lang : language_defn::languages)
47e77640
PA
445 if (strcmp (lang->la_name, str) == 0)
446 return lang->la_language;
c906108c 447
47e77640
PA
448 if (strcmp (str, "local") == 0)
449 return language_auto;
c906108c
SS
450
451 return language_unknown;
452}
453
1777feb0 454/* Return the language struct for a given language enum. */
c906108c
SS
455
456const struct language_defn *
fba45db2 457language_def (enum language lang)
c906108c 458{
0874fd07
AB
459 const struct language_defn *l = language_defn::languages[lang];
460 gdb_assert (l != nullptr);
461 return l;
c906108c
SS
462}
463
1777feb0 464/* Return the language as a string. */
47e77640 465
27cd387b 466const char *
fba45db2 467language_str (enum language lang)
c906108c 468{
0874fd07 469 return language_def (lang)->la_name;
c906108c
SS
470}
471
c906108c 472\f
c906108c 473
47e77640 474/* Build and install the "set language LANG" command. */
b84aa90a 475
47e77640
PA
476static void
477add_set_language_command ()
478{
479 static const char **language_names;
c906108c 480
47e77640
PA
481 /* Build the language names array, to be used as enumeration in the
482 "set language" enum command. +1 for "local" and +1 for NULL
483 termination. */
0874fd07 484 language_names = new const char *[ARRAY_SIZE (language_defn::languages) + 2];
47e77640
PA
485
486 /* Display "auto", "local" and "unknown" first, and then the rest,
487 alpha sorted. */
488 const char **language_names_p = language_names;
0874fd07 489 *language_names_p++ = language_def (language_auto)->la_name;
47e77640 490 *language_names_p++ = "local";
0874fd07 491 *language_names_p++ = language_def (language_unknown)->la_name;
47e77640 492 const char **sort_begin = language_names_p;
0874fd07 493 for (const auto &lang : language_defn::languages)
c906108c 494 {
47e77640
PA
495 /* Already handled above. */
496 if (lang->la_language == language_auto
497 || lang->la_language == language_unknown)
498 continue;
499 *language_names_p++ = lang->la_name;
c906108c 500 }
47e77640
PA
501 *language_names_p = NULL;
502 std::sort (sort_begin, language_names_p, compare_cstrings);
b84aa90a 503
56618e20 504 /* Add the filename extensions. */
0874fd07 505 for (const auto &lang : language_defn::languages)
47e77640
PA
506 if (lang->la_filename_extensions != NULL)
507 {
508 for (size_t i = 0; lang->la_filename_extensions[i] != NULL; ++i)
509 add_filename_language (lang->la_filename_extensions[i],
510 lang->la_language);
511 }
56618e20 512
b84aa90a 513 /* Build the "help set language" docs. */
d7e74731 514 string_file doc;
b84aa90a 515
d7e74731
PA
516 doc.printf (_("Set the current source language.\n"
517 "The currently understood settings are:\n\nlocal or "
89549d7f 518 "auto Automatic setting based on source file"));
b84aa90a 519
0874fd07 520 for (const auto &lang : language_defn::languages)
b84aa90a
PA
521 {
522 /* Already dealt with these above. */
47e77640
PA
523 if (lang->la_language == language_unknown
524 || lang->la_language == language_auto)
b84aa90a
PA
525 continue;
526
d7e74731
PA
527 /* FIXME: i18n: for now assume that the human-readable name is
528 just a capitalization of the internal name. */
89549d7f
TT
529 /* Note that we add the newline at the front, so we don't wind
530 up with a trailing newline. */
531 doc.printf ("\n%-16s Use the %c%s language",
47e77640 532 lang->la_name,
d7e74731 533 /* Capitalize first letter of language name. */
47e77640
PA
534 toupper (lang->la_name[0]),
535 lang->la_name + 1);
b84aa90a
PA
536 }
537
b84aa90a 538 add_setshow_enum_cmd ("language", class_support,
47e77640 539 language_names,
b84aa90a 540 &language,
d7e74731 541 doc.c_str (),
3e43a32a
MS
542 _("Show the current source language."),
543 NULL, set_language_command,
b84aa90a
PA
544 show_language_command,
545 &setlist, &showlist);
c906108c
SS
546}
547
f636b87d
AF
548/* Iterate through all registered languages looking for and calling
549 any non-NULL struct language_defn.skip_trampoline() functions.
550 Return the result from the first that returns non-zero, or 0 if all
551 `fail'. */
552CORE_ADDR
52f729a7 553skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc)
f636b87d 554{
0874fd07 555 for (const auto &lang : language_defn::languages)
f636b87d 556 {
f6eee2d0 557 CORE_ADDR real_pc = lang->skip_trampoline (frame, pc);
e0881a8e 558
f6eee2d0
AB
559 if (real_pc != 0)
560 return real_pc;
f636b87d
AF
561 }
562
563 return 0;
564}
565
1777feb0 566/* Return demangled language symbol, or NULL.
9a3d7dfd
AF
567 FIXME: Options are only useful for certain languages and ignored
568 by others, so it would be better to remove them here and have a
1777feb0 569 more flexible demangler for the languages that need it.
9a3d7dfd
AF
570 FIXME: Sometimes the demangler is invoked when we don't know the
571 language, so we can't use this everywhere. */
572char *
573language_demangle (const struct language_defn *current_language,
574 const char *mangled, int options)
575{
0a50df5d
AB
576 if (current_language != NULL)
577 return current_language->demangle (mangled, options);
9a3d7dfd
AF
578 return NULL;
579}
580
9d084466
TBA
581/* Return information about whether TYPE should be passed
582 (and returned) by reference at the language level. */
583
584struct language_pass_by_ref_info
41f1b697
DJ
585language_pass_by_reference (struct type *type)
586{
48448202 587 return current_language->pass_by_reference_info (type);
41f1b697
DJ
588}
589
9f0a5303
JB
590/* Return the default string containing the list of characters
591 delimiting words. This is a reasonable default value that
592 most languages should be able to use. */
593
67cb5b2d 594const char *
9f0a5303
JB
595default_word_break_characters (void)
596{
597 return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
598}
f636b87d 599
5bd40f2a 600/* See language.h. */
e79af960
JB
601
602void
5bd40f2a
AB
603language_defn::print_array_index (struct type *index_type, LONGEST index,
604 struct ui_file *stream,
605 const value_print_options *options) const
e79af960 606{
53a47a3e
TT
607 struct value *index_value = value_from_longest (index_type, index);
608
e79af960 609 fprintf_filtered (stream, "[");
79a45b7d 610 LA_VALUE_PRINT (index_value, stream, options);
e79af960
JB
611 fprintf_filtered (stream, "] = ");
612}
613
f16a9f57
AB
614/* See language.h. */
615
616gdb::unique_xmalloc_ptr<char>
617language_defn::watch_location_expression (struct type *type,
618 CORE_ADDR addr) const
619{
620 /* Generates an expression that assumes a C like syntax is valid. */
621 type = check_typedef (TYPE_TARGET_TYPE (check_typedef (type)));
622 std::string name = type_to_string (type);
623 return gdb::unique_xmalloc_ptr<char>
624 (xstrprintf ("* (%s *) %s", name.c_str (), core_addr_to_string (addr)));
625}
626
a1d1fa3e
AB
627/* See language.h. */
628
629void
630language_defn::value_print (struct value *val, struct ui_file *stream,
631 const struct value_print_options *options) const
632{
633 return c_value_print (val, stream, options);
634}
635
ebe2334e
AB
636/* See language.h. */
637
87afa652
AB
638int
639language_defn::parser (struct parser_state *ps) const
640{
641 return c_parse (ps);
642}
643
644/* See language.h. */
645
ebe2334e
AB
646void
647language_defn::value_print_inner
648 (struct value *val, struct ui_file *stream, int recurse,
649 const struct value_print_options *options) const
650{
651 return c_value_print_inner (val, stream, recurse, options);
652}
653
ec8cec5b
AB
654/* See language.h. */
655
656void
657language_defn::emitchar (int ch, struct type *chtype,
658 struct ui_file * stream, int quoter) const
659{
660 c_emit_char (ch, chtype, stream, quoter);
661}
662
52b50f2c
AB
663/* See language.h. */
664
665void
666language_defn::printchar (int ch, struct type *chtype,
667 struct ui_file * stream) const
668{
669 c_printchar (ch, chtype, stream);
670}
671
d711ee67
AB
672/* See language.h. */
673
674void
675language_defn::printstr (struct ui_file *stream, struct type *elttype,
676 const gdb_byte *string, unsigned int length,
677 const char *encoding, int force_ellipses,
678 const struct value_print_options *options) const
679{
680 c_printstr (stream, elttype, string, length, encoding, force_ellipses,
681 options);
682}
683
4ffc13fb
AB
684/* See language.h. */
685
686void
687language_defn::print_typedef (struct type *type, struct symbol *new_symbol,
688 struct ui_file *stream) const
689{
690 c_print_typedef (type, new_symbol, stream);
691}
692
39e7ecca
AB
693/* See language.h. */
694
695bool
696language_defn::is_string_type_p (struct type *type) const
697{
698 return c_is_string_type_p (type);
699}
700
c9debfb9
AB
701/* The default implementation of the get_symbol_name_matcher_inner method
702 from the language_defn class. Matches with strncmp_iw. */
b5ec771e 703
c9debfb9 704static bool
b5ec771e
PA
705default_symbol_name_matcher (const char *symbol_search_name,
706 const lookup_name_info &lookup_name,
a207cff2 707 completion_match_result *comp_match_res)
b5ec771e 708{
e0802d59 709 gdb::string_view name = lookup_name.name ();
bd69330d
PA
710 completion_match_for_lcd *match_for_lcd
711 = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
b5ec771e
PA
712 strncmp_iw_mode mode = (lookup_name.completion_mode ()
713 ? strncmp_iw_mode::NORMAL
714 : strncmp_iw_mode::MATCH_PARAMS);
715
e0802d59 716 if (strncmp_iw_with_mode (symbol_search_name, name.data (), name.size (),
bd69330d 717 mode, language_minimal, match_for_lcd) == 0)
b5ec771e 718 {
a207cff2
PA
719 if (comp_match_res != NULL)
720 comp_match_res->set_match (symbol_search_name);
b5ec771e
PA
721 return true;
722 }
723 else
724 return false;
725}
726
727/* See language.h. */
728
c9debfb9
AB
729symbol_name_matcher_ftype *
730language_defn::get_symbol_name_matcher
731 (const lookup_name_info &lookup_name) const
732{
733 /* If currently in Ada mode, and the lookup name is wrapped in
734 '<...>', hijack all symbol name comparisons using the Ada
735 matcher, which handles the verbatim matching. */
736 if (current_language->la_language == language_ada
737 && lookup_name.ada ().verbatim_p ())
738 return current_language->get_symbol_name_matcher_inner (lookup_name);
739
740 return this->get_symbol_name_matcher_inner (lookup_name);
741}
742
743/* See language.h. */
744
745symbol_name_matcher_ftype *
746language_defn::get_symbol_name_matcher_inner
747 (const lookup_name_info &lookup_name) const
748{
749 return default_symbol_name_matcher;
750}
751
39e7ecca
AB
752/* Return true if TYPE is a string type, otherwise return false. This
753 default implementation only detects TYPE_CODE_STRING. */
c9debfb9 754
39e7ecca 755static bool
4be290b2
AB
756default_is_string_type_p (struct type *type)
757{
758 type = check_typedef (type);
78134374 759 while (type->code () == TYPE_CODE_REF)
4be290b2
AB
760 {
761 type = TYPE_TARGET_TYPE (type);
762 type = check_typedef (type);
763 }
78134374 764 return (type->code () == TYPE_CODE_STRING);
4be290b2
AB
765}
766
c5aa993b
JM
767static const struct op_print unk_op_print_tab[] =
768{
769 {NULL, OP_NULL, PREC_NULL, 0}
c906108c
SS
770};
771
f290d38e
AC
772static void
773unknown_language_arch_info (struct gdbarch *gdbarch,
774 struct language_arch_info *lai)
775{
776 lai->string_char_type = builtin_type (gdbarch)->builtin_char;
fbb06eb1 777 lai->bool_type_default = builtin_type (gdbarch)->builtin_int;
5a44ea29 778 lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, 1,
f290d38e
AC
779 struct type *);
780}
781
0874fd07
AB
782/* Constant data that describes the unknown language. */
783
784extern const struct language_data unknown_language_data =
c5aa993b 785{
c906108c 786 "unknown",
6abde28f 787 "Unknown",
c906108c 788 language_unknown,
c906108c 789 range_check_off,
63872f9d 790 case_sensitive_on,
9a044a89
TT
791 array_row_major,
792 macro_expansion_no,
56618e20 793 NULL,
5f9769d1 794 &exp_descriptor_standard,
59cc4834 795 true, /* store_sym_names_in_linkage_form_p */
c906108c
SS
796 unk_op_print_tab, /* expression operators for printing */
797 1, /* c-style arrays */
798 0, /* String lower bound */
a53b64ea 799 &default_varobj_ops,
c906108c
SS
800};
801
0874fd07
AB
802/* Class representing the unknown language. */
803
804class unknown_language : public language_defn
805{
806public:
807 unknown_language ()
808 : language_defn (language_unknown, unknown_language_data)
809 { /* Nothing. */ }
1fb314aa
AB
810
811 /* See language.h. */
812 void language_arch_info (struct gdbarch *gdbarch,
813 struct language_arch_info *lai) const override
814 {
815 unknown_language_arch_info (gdbarch, lai);
816 }
fbfb0a46
AB
817
818 /* See language.h. */
819
820 void print_type (struct type *type, const char *varstring,
821 struct ui_file *stream, int show, int level,
822 const struct type_print_options *flags) const override
823 {
824 error (_("unimplemented unknown_language::print_type called"));
825 }
0a50df5d
AB
826
827 /* See language.h. */
828
829 char *demangle (const char *mangled, int options) const override
830 {
831 /* The unknown language just uses the C++ demangler. */
832 return gdb_demangle (mangled, options);
833 }
a1d1fa3e
AB
834
835 /* See language.h. */
836
837 void value_print (struct value *val, struct ui_file *stream,
838 const struct value_print_options *options) const override
839 {
840 error (_("unimplemented unknown_language::value_print called"));
841 }
ebe2334e
AB
842
843 /* See language.h. */
844
845 void value_print_inner
846 (struct value *val, struct ui_file *stream, int recurse,
847 const struct value_print_options *options) const override
848 {
849 error (_("unimplemented unknown_language::value_print_inner called"));
850 }
87afa652
AB
851
852 /* See language.h. */
853
854 int parser (struct parser_state *ps) const override
855 {
856 /* No parsing is done, just claim success. */
857 return 1;
858 }
ec8cec5b
AB
859
860 /* See language.h. */
861
862 void emitchar (int ch, struct type *chtype,
863 struct ui_file *stream, int quoter) const override
864 {
865 error (_("unimplemented unknown_language::emitchar called"));
866 }
52b50f2c
AB
867
868 /* See language.h. */
869
870 void printchar (int ch, struct type *chtype,
871 struct ui_file *stream) const override
872 {
873 error (_("unimplemented unknown_language::printchar called"));
874 }
d711ee67
AB
875
876 /* See language.h. */
877
878 void printstr (struct ui_file *stream, struct type *elttype,
879 const gdb_byte *string, unsigned int length,
880 const char *encoding, int force_ellipses,
881 const struct value_print_options *options) const override
882 {
883 error (_("unimplemented unknown_language::printstr called"));
884 }
4ffc13fb
AB
885
886 /* See language.h. */
887
888 void print_typedef (struct type *type, struct symbol *new_symbol,
889 struct ui_file *stream) const override
890 {
891 error (_("unimplemented unknown_language::print_typedef called"));
892 }
39e7ecca
AB
893
894 /* See language.h. */
895
896 bool is_string_type_p (struct type *type) const override
897 {
898 return default_is_string_type_p (type);
899 }
5bae7c4e
AB
900
901 /* See language.h. */
902
903 const char *name_of_this () const override
904 { return "this"; }
0874fd07
AB
905};
906
907/* Single instance of the unknown language class. */
908
909static unknown_language unknown_language_defn;
910
911/* Constant data for the fake "auto" language. */
912
913extern const struct language_data auto_language_data =
c5aa993b 914{
c906108c 915 "auto",
6abde28f 916 "Auto",
c906108c 917 language_auto,
c906108c 918 range_check_off,
63872f9d 919 case_sensitive_on,
9a044a89
TT
920 array_row_major,
921 macro_expansion_no,
56618e20 922 NULL,
5f9769d1 923 &exp_descriptor_standard,
59cc4834 924 false, /* store_sym_names_in_linkage_form_p */
c906108c
SS
925 unk_op_print_tab, /* expression operators for printing */
926 1, /* c-style arrays */
927 0, /* String lower bound */
a53b64ea 928 &default_varobj_ops,
c906108c
SS
929};
930
0874fd07
AB
931/* Class representing the fake "auto" language. */
932
933class auto_language : public language_defn
934{
935public:
936 auto_language ()
937 : language_defn (language_auto, auto_language_data)
938 { /* Nothing. */ }
1fb314aa
AB
939
940 /* See language.h. */
941 void language_arch_info (struct gdbarch *gdbarch,
942 struct language_arch_info *lai) const override
943 {
944 unknown_language_arch_info (gdbarch, lai);
945 }
fbfb0a46
AB
946
947 /* See language.h. */
948
949 void print_type (struct type *type, const char *varstring,
950 struct ui_file *stream, int show, int level,
951 const struct type_print_options *flags) const override
952 {
953 error (_("unimplemented auto_language::print_type called"));
954 }
0a50df5d
AB
955
956 /* See language.h. */
957
958 char *demangle (const char *mangled, int options) const override
959 {
960 /* The auto language just uses the C++ demangler. */
961 return gdb_demangle (mangled, options);
962 }
a1d1fa3e
AB
963
964 /* See language.h. */
965
966 void value_print (struct value *val, struct ui_file *stream,
967 const struct value_print_options *options) const override
968 {
969 error (_("unimplemented auto_language::value_print called"));
970 }
ebe2334e
AB
971
972 /* See language.h. */
973
974 void value_print_inner
975 (struct value *val, struct ui_file *stream, int recurse,
976 const struct value_print_options *options) const override
977 {
978 error (_("unimplemented auto_language::value_print_inner called"));
979 }
87afa652
AB
980
981 /* See language.h. */
982
983 int parser (struct parser_state *ps) const override
984 {
985 /* No parsing is done, just claim success. */
986 return 1;
987 }
ec8cec5b
AB
988
989 /* See language.h. */
990
991 void emitchar (int ch, struct type *chtype,
992 struct ui_file *stream, int quoter) const override
993 {
994 error (_("unimplemented auto_language::emitchar called"));
995 }
52b50f2c
AB
996
997 /* See language.h. */
998
999 void printchar (int ch, struct type *chtype,
1000 struct ui_file *stream) const override
1001 {
1002 error (_("unimplemented auto_language::printchar called"));
1003 }
d711ee67
AB
1004
1005 /* See language.h. */
1006
1007 void printstr (struct ui_file *stream, struct type *elttype,
1008 const gdb_byte *string, unsigned int length,
1009 const char *encoding, int force_ellipses,
1010 const struct value_print_options *options) const override
1011 {
1012 error (_("unimplemented auto_language::printstr called"));
1013 }
4ffc13fb
AB
1014
1015 /* See language.h. */
1016
1017 void print_typedef (struct type *type, struct symbol *new_symbol,
1018 struct ui_file *stream) const override
1019 {
1020 error (_("unimplemented auto_language::print_typedef called"));
1021 }
39e7ecca
AB
1022
1023 /* See language.h. */
1024
1025 bool is_string_type_p (struct type *type) const override
1026 {
1027 return default_is_string_type_p (type);
1028 }
5bae7c4e
AB
1029
1030 /* See language.h. */
1031
1032 const char *name_of_this () const override
1033 { return "this"; }
0874fd07
AB
1034};
1035
1036/* Single instance of the fake "auto" language. */
1037
1038static auto_language auto_language_defn;
1039
c906108c 1040\f
f290d38e
AC
1041/* Per-architecture language information. */
1042
1043static struct gdbarch_data *language_gdbarch_data;
1044
1045struct language_gdbarch
1046{
1047 /* A vector of per-language per-architecture info. Indexed by "enum
1048 language". */
1049 struct language_arch_info arch_info[nr_languages];
1050};
1051
1052static void *
1053language_gdbarch_post_init (struct gdbarch *gdbarch)
1054{
1055 struct language_gdbarch *l;
f290d38e
AC
1056
1057 l = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct language_gdbarch);
0874fd07 1058 for (const auto &lang : language_defn::languages)
1fb314aa
AB
1059 {
1060 gdb_assert (lang != nullptr);
1061 lang->language_arch_info (gdbarch,
1062 l->arch_info + lang->la_language);
1063 }
47e77640 1064
f290d38e
AC
1065 return l;
1066}
1067
1068struct type *
1069language_string_char_type (const struct language_defn *la,
1070 struct gdbarch *gdbarch)
1071{
9a3c8263
SM
1072 struct language_gdbarch *ld
1073 = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
e0881a8e 1074
aba2dd37 1075 return ld->arch_info[la->la_language].string_char_type;
f290d38e
AC
1076}
1077
fbb06eb1
UW
1078struct type *
1079language_bool_type (const struct language_defn *la,
1080 struct gdbarch *gdbarch)
1081{
9a3c8263
SM
1082 struct language_gdbarch *ld
1083 = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
fbb06eb1
UW
1084
1085 if (ld->arch_info[la->la_language].bool_type_symbol)
1086 {
1087 struct symbol *sym;
e0881a8e 1088
fbb06eb1 1089 sym = lookup_symbol (ld->arch_info[la->la_language].bool_type_symbol,
d12307c1 1090 NULL, VAR_DOMAIN, NULL).symbol;
fbb06eb1
UW
1091 if (sym)
1092 {
1093 struct type *type = SYMBOL_TYPE (sym);
e0881a8e 1094
78134374 1095 if (type && type->code () == TYPE_CODE_BOOL)
fbb06eb1
UW
1096 return type;
1097 }
1098 }
1099
1100 return ld->arch_info[la->la_language].bool_type_default;
1101}
1102
1994afbf
DE
1103/* Helper function for primitive type lookup. */
1104
1105static struct type **
1106language_lookup_primitive_type_1 (const struct language_arch_info *lai,
1107 const char *name)
1108{
1109 struct type **p;
1110
1111 for (p = lai->primitive_type_vector; (*p) != NULL; p++)
1112 {
7d93a1e0 1113 if (strcmp ((*p)->name (), name) == 0)
1994afbf
DE
1114 return p;
1115 }
1116 return NULL;
1117}
1118
1119/* See language.h. */
1120
f290d38e 1121struct type *
46b0da17
DE
1122language_lookup_primitive_type (const struct language_defn *la,
1123 struct gdbarch *gdbarch,
1124 const char *name)
f290d38e 1125{
9a3c8263
SM
1126 struct language_gdbarch *ld =
1127 (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1994afbf
DE
1128 struct type **typep;
1129
1130 typep = language_lookup_primitive_type_1 (&ld->arch_info[la->la_language],
1131 name);
1132 if (typep == NULL)
1133 return NULL;
1134 return *typep;
1135}
1136
1137/* Helper function for type lookup as a symbol.
1138 Create the symbol corresponding to type TYPE in language LANG. */
1139
1140static struct symbol *
1141language_alloc_type_symbol (enum language lang, struct type *type)
1142{
1143 struct symbol *symbol;
1144 struct gdbarch *gdbarch;
1145
1146 gdb_assert (!TYPE_OBJFILE_OWNED (type));
1147
1148 gdbarch = TYPE_OWNER (type).gdbarch;
468c0cbb 1149 symbol = new (gdbarch_obstack (gdbarch)) struct symbol ();
1994afbf 1150
7d93a1e0 1151 symbol->m_name = type->name ();
d3ecddab 1152 symbol->set_language (lang, nullptr);
1994afbf
DE
1153 symbol->owner.arch = gdbarch;
1154 SYMBOL_OBJFILE_OWNED (symbol) = 0;
8c14c3a3 1155 SYMBOL_SECTION (symbol) = 0;
1994afbf
DE
1156 SYMBOL_TYPE (symbol) = type;
1157 SYMBOL_DOMAIN (symbol) = VAR_DOMAIN;
1158 SYMBOL_ACLASS_INDEX (symbol) = LOC_TYPEDEF;
1159
1160 return symbol;
1161}
1162
1163/* Initialize the primitive type symbols of language LD.
1164 The primitive type vector must have already been initialized. */
1165
1166static void
1167language_init_primitive_type_symbols (struct language_arch_info *lai,
1168 const struct language_defn *la,
1169 struct gdbarch *gdbarch)
1170{
1171 int n;
1994afbf
DE
1172
1173 gdb_assert (lai->primitive_type_vector != NULL);
1174
1175 for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
1176 continue;
1177
1178 lai->primitive_type_symbols
1179 = GDBARCH_OBSTACK_CALLOC (gdbarch, n + 1, struct symbol *);
1180
1181 for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
1182 {
1183 lai->primitive_type_symbols[n]
1184 = language_alloc_type_symbol (la->la_language,
1185 lai->primitive_type_vector[n]);
1186 }
1187
1188 /* Note: The result of symbol lookup is normally a symbol *and* the block
d12307c1
PMR
1189 it was found in. Builtin types don't live in blocks. We *could* give
1190 them one, but there is no current need so to keep things simple symbol
1191 lookup is extended to allow for BLOCK_FOUND to be NULL. */
1994afbf
DE
1192}
1193
1194/* See language.h. */
1195
1196struct symbol *
1197language_lookup_primitive_type_as_symbol (const struct language_defn *la,
1198 struct gdbarch *gdbarch,
1199 const char *name)
1200{
9a3c8263
SM
1201 struct language_gdbarch *ld
1202 = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1994afbf
DE
1203 struct language_arch_info *lai = &ld->arch_info[la->la_language];
1204 struct type **typep;
1205 struct symbol *sym;
e0881a8e 1206
cc485e62
DE
1207 if (symbol_lookup_debug)
1208 {
1209 fprintf_unfiltered (gdb_stdlog,
1994afbf
DE
1210 "language_lookup_primitive_type_as_symbol"
1211 " (%s, %s, %s)",
cc485e62
DE
1212 la->la_name, host_address_to_string (gdbarch), name);
1213 }
1214
1994afbf
DE
1215 typep = language_lookup_primitive_type_1 (lai, name);
1216 if (typep == NULL)
f290d38e 1217 {
1994afbf
DE
1218 if (symbol_lookup_debug)
1219 fprintf_unfiltered (gdb_stdlog, " = NULL\n");
1220 return NULL;
f290d38e 1221 }
cc485e62 1222
1994afbf
DE
1223 /* The set of symbols is lazily initialized. */
1224 if (lai->primitive_type_symbols == NULL)
1225 language_init_primitive_type_symbols (lai, la, gdbarch);
1226
1227 sym = lai->primitive_type_symbols[typep - lai->primitive_type_vector];
1228
cc485e62 1229 if (symbol_lookup_debug)
1994afbf
DE
1230 fprintf_unfiltered (gdb_stdlog, " = %s\n", host_address_to_string (sym));
1231 return sym;
f290d38e
AC
1232}
1233
1777feb0 1234/* Initialize the language routines. */
c906108c 1235
6c265988 1236void _initialize_language ();
c906108c 1237void
6c265988 1238_initialize_language ()
c906108c 1239{
40478521 1240 static const char *const type_or_range_names[]
b84aa90a
PA
1241 = { "on", "off", "warn", "auto", NULL };
1242
40478521 1243 static const char *const case_sensitive_names[]
b84aa90a 1244 = { "on", "off", "auto", NULL };
c5aa993b 1245
f290d38e
AC
1246 language_gdbarch_data
1247 = gdbarch_data_register_post_init (language_gdbarch_post_init);
1248
1777feb0 1249 /* GDB commands for language specific stuff. */
c5aa993b 1250
0743fc83
TT
1251 add_basic_prefix_cmd ("check", no_class,
1252 _("Set the status of the type/range checker."),
1253 &setchecklist, "set check ", 0, &setlist);
c5aa993b
JM
1254 add_alias_cmd ("c", "check", no_class, 1, &setlist);
1255 add_alias_cmd ("ch", "check", no_class, 1, &setlist);
1256
0743fc83
TT
1257 add_show_prefix_cmd ("check", no_class,
1258 _("Show the status of the type/range checker."),
1259 &showchecklist, "show check ", 0, &showlist);
c5aa993b
JM
1260 add_alias_cmd ("c", "check", no_class, 1, &showlist);
1261 add_alias_cmd ("ch", "check", no_class, 1, &showlist);
1262
b84aa90a 1263 add_setshow_enum_cmd ("range", class_support, type_or_range_names,
3e43a32a 1264 &range,
590042fc
PW
1265 _("Set range checking (on/warn/off/auto)."),
1266 _("Show range checking (on/warn/off/auto)."),
3e43a32a 1267 NULL, set_range_command,
b84aa90a
PA
1268 show_range_command,
1269 &setchecklist, &showchecklist);
1270
1271 add_setshow_enum_cmd ("case-sensitive", class_support, case_sensitive_names,
1272 &case_sensitive, _("\
590042fc
PW
1273Set case sensitivity in name search (on/off/auto)."), _("\
1274Show case sensitivity in name search (on/off/auto)."), _("\
4d28ad1e 1275For Fortran the default is off; for other languages the default is on."),
b84aa90a
PA
1276 set_case_command,
1277 show_case_command,
1278 &setlist, &showlist);
63872f9d 1279
0874fd07
AB
1280 /* In order to call SET_LANGUAGE (below) we need to make sure that
1281 CURRENT_LANGUAGE is not NULL. So first set the language to unknown,
1282 then we can change the language to 'auto'. */
1283 current_language = language_def (language_unknown);
1284
47e77640 1285 add_set_language_command ();
c5aa993b 1286
4a811000
PW
1287 language = "auto";
1288 range = "auto";
1289 case_sensitive = "auto";
63872f9d 1290
1777feb0 1291 /* Have the above take effect. */
63872f9d 1292 set_language (language_auto);
c906108c 1293}
This page took 2.243482 seconds and 4 git commands to generate.