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