xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/language.c (revision ccd9df534e375a4366c5b55f23782053c7a98d82)
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 
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->la_name);
102   else
103     fprintf_filtered (gdb_stdout,
104 		      _("The current source language is \"%s\".\n"),
105 		      current_language->la_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->la_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 
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 
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 
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 
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 
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->la_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)->la_name;
470 }
471 
472 
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)->la_name;
490   *language_names_p++ = "local";
491   *language_names_p++ = language_def (language_unknown)->la_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->la_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     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       }
512 
513   /* Build the "help set language" docs.  */
514   string_file doc;
515 
516   doc.printf (_("Set the current source language.\n"
517 		"The currently understood settings are:\n\nlocal or "
518 		"auto    Automatic setting based on source file"));
519 
520   for (const auto &lang : language_defn::languages)
521     {
522       /* Already dealt with these above.  */
523       if (lang->la_language == language_unknown
524 	  || lang->la_language == language_auto)
525 	continue;
526 
527       /* FIXME: i18n: for now assume that the human-readable name is
528 	 just a capitalization of the internal name.  */
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",
532 		  lang->la_name,
533 		  /* Capitalize first letter of language name.  */
534 		  toupper (lang->la_name[0]),
535 		  lang->la_name + 1);
536     }
537 
538   add_setshow_enum_cmd ("language", class_support,
539 			language_names,
540 			&language,
541 			doc.c_str (),
542 			_("Show the current source language."),
543 			NULL, set_language_command,
544 			show_language_command,
545 			&setlist, &showlist);
546 }
547 
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'.  */
552 CORE_ADDR
553 skip_language_trampoline (struct frame_info *frame, CORE_ADDR pc)
554 {
555   for (const auto &lang : language_defn::languages)
556     {
557       CORE_ADDR real_pc = lang->skip_trampoline (frame, pc);
558 
559       if (real_pc != 0)
560 	return real_pc;
561     }
562 
563   return 0;
564 }
565 
566 /* Return demangled language symbol, or NULL.
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
569    more flexible demangler for the languages that need it.
570    FIXME: Sometimes the demangler is invoked when we don't know the
571    language, so we can't use this everywhere.  */
572 char *
573 language_demangle (const struct language_defn *current_language,
574 				const char *mangled, int options)
575 {
576   if (current_language != NULL)
577     return current_language->demangle (mangled, options);
578   return NULL;
579 }
580 
581 /* Return information about whether TYPE should be passed
582    (and returned) by reference at the language level.  */
583 
584 struct language_pass_by_ref_info
585 language_pass_by_reference (struct type *type)
586 {
587   return current_language->pass_by_reference_info (type);
588 }
589 
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 
594 const char *
595 default_word_break_characters (void)
596 {
597   return " \t\n!@#$%^&*()+=|~`}{[]\"';:?/>.<,-";
598 }
599 
600 /* See language.h.  */
601 
602 void
603 language_defn::print_array_index (struct type *index_type, LONGEST index,
604 				  struct ui_file *stream,
605 				  const value_print_options *options) const
606 {
607   struct value *index_value = value_from_longest (index_type, index);
608 
609   fprintf_filtered (stream, "[");
610   LA_VALUE_PRINT (index_value, stream, options);
611   fprintf_filtered (stream, "] = ");
612 }
613 
614 /* See language.h.  */
615 
616 gdb::unique_xmalloc_ptr<char>
617 language_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 
627 /* See language.h.  */
628 
629 void
630 language_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 
636 /* See language.h.  */
637 
638 int
639 language_defn::parser (struct parser_state *ps) const
640 {
641   return c_parse (ps);
642 }
643 
644 /* See language.h.  */
645 
646 void
647 language_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 
654 /* See language.h.  */
655 
656 void
657 language_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 
663 /* See language.h.  */
664 
665 void
666 language_defn::printchar (int ch, struct type *chtype,
667 			  struct ui_file * stream) const
668 {
669   c_printchar (ch, chtype, stream);
670 }
671 
672 /* See language.h.  */
673 
674 void
675 language_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 
684 /* See language.h.  */
685 
686 void
687 language_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 
693 /* See language.h.  */
694 
695 bool
696 language_defn::is_string_type_p (struct type *type) const
697 {
698   return c_is_string_type_p (type);
699 }
700 
701 /* The default implementation of the get_symbol_name_matcher_inner method
702    from the language_defn class.  Matches with strncmp_iw.  */
703 
704 static bool
705 default_symbol_name_matcher (const char *symbol_search_name,
706 			     const lookup_name_info &lookup_name,
707 			     completion_match_result *comp_match_res)
708 {
709   gdb::string_view name = lookup_name.name ();
710   completion_match_for_lcd *match_for_lcd
711     = (comp_match_res != NULL ? &comp_match_res->match_for_lcd : NULL);
712   strncmp_iw_mode mode = (lookup_name.completion_mode ()
713 			  ? strncmp_iw_mode::NORMAL
714 			  : strncmp_iw_mode::MATCH_PARAMS);
715 
716   if (strncmp_iw_with_mode (symbol_search_name, name.data (), name.size (),
717 			    mode, language_minimal, match_for_lcd) == 0)
718     {
719       if (comp_match_res != NULL)
720 	comp_match_res->set_match (symbol_search_name);
721       return true;
722     }
723   else
724     return false;
725 }
726 
727 /* See language.h.  */
728 
729 symbol_name_matcher_ftype *
730 language_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 
745 symbol_name_matcher_ftype *
746 language_defn::get_symbol_name_matcher_inner
747 	(const lookup_name_info &lookup_name) const
748 {
749   return default_symbol_name_matcher;
750 }
751 
752 /* Return true if TYPE is a string type, otherwise return false.  This
753    default implementation only detects TYPE_CODE_STRING.  */
754 
755 static bool
756 default_is_string_type_p (struct type *type)
757 {
758   type = check_typedef (type);
759   while (type->code () == TYPE_CODE_REF)
760     {
761       type = TYPE_TARGET_TYPE (type);
762       type = check_typedef (type);
763     }
764   return (type->code ()  == TYPE_CODE_STRING);
765 }
766 
767 static const struct op_print unk_op_print_tab[] =
768 {
769   {NULL, OP_NULL, PREC_NULL, 0}
770 };
771 
772 static void
773 unknown_language_arch_info (struct gdbarch *gdbarch,
774 			    struct language_arch_info *lai)
775 {
776   lai->string_char_type = builtin_type (gdbarch)->builtin_char;
777   lai->bool_type_default = builtin_type (gdbarch)->builtin_int;
778   lai->primitive_type_vector = GDBARCH_OBSTACK_CALLOC (gdbarch, 1,
779 						       struct type *);
780 }
781 
782 /* Constant data that describes the unknown language.  */
783 
784 extern const struct language_data unknown_language_data =
785 {
786   "unknown",
787   "Unknown",
788   language_unknown,
789   range_check_off,
790   case_sensitive_on,
791   array_row_major,
792   macro_expansion_no,
793   NULL,
794   &exp_descriptor_standard,
795   "this",        	    	/* name_of_this */
796   true,				/* store_sym_names_in_linkage_form_p */
797   unk_op_print_tab,		/* expression operators for printing */
798   1,				/* c-style arrays */
799   0,				/* String lower bound */
800   &default_varobj_ops,
801   "{...}"			/* la_struct_too_deep_ellipsis */
802 };
803 
804 /* Class representing the unknown language.  */
805 
806 class unknown_language : public language_defn
807 {
808 public:
809   unknown_language ()
810     : language_defn (language_unknown, unknown_language_data)
811   { /* Nothing.  */ }
812 
813   /* See language.h.  */
814   void language_arch_info (struct gdbarch *gdbarch,
815 			   struct language_arch_info *lai) const override
816   {
817     unknown_language_arch_info (gdbarch, lai);
818   }
819 
820   /* See language.h.  */
821 
822   void print_type (struct type *type, const char *varstring,
823 		   struct ui_file *stream, int show, int level,
824 		   const struct type_print_options *flags) const override
825   {
826     error (_("unimplemented unknown_language::print_type called"));
827   }
828 
829   /* See language.h.  */
830 
831   char *demangle (const char *mangled, int options) const override
832   {
833     /* The unknown language just uses the C++ demangler.  */
834     return gdb_demangle (mangled, options);
835   }
836 
837   /* See language.h.  */
838 
839   void value_print (struct value *val, struct ui_file *stream,
840 		    const struct value_print_options *options) const override
841   {
842     error (_("unimplemented unknown_language::value_print called"));
843   }
844 
845   /* See language.h.  */
846 
847   void value_print_inner
848 	(struct value *val, struct ui_file *stream, int recurse,
849 	 const struct value_print_options *options) const override
850   {
851     error (_("unimplemented unknown_language::value_print_inner called"));
852   }
853 
854   /* See language.h.  */
855 
856   int parser (struct parser_state *ps) const override
857   {
858     /* No parsing is done, just claim success.  */
859     return 1;
860   }
861 
862   /* See language.h.  */
863 
864   void emitchar (int ch, struct type *chtype,
865 		 struct ui_file *stream, int quoter) const override
866   {
867     error (_("unimplemented unknown_language::emitchar called"));
868   }
869 
870   /* See language.h.  */
871 
872   void printchar (int ch, struct type *chtype,
873 		  struct ui_file *stream) const override
874   {
875     error (_("unimplemented unknown_language::printchar called"));
876   }
877 
878   /* See language.h.  */
879 
880   void printstr (struct ui_file *stream, struct type *elttype,
881 		 const gdb_byte *string, unsigned int length,
882 		 const char *encoding, int force_ellipses,
883 		 const struct value_print_options *options) const override
884   {
885     error (_("unimplemented unknown_language::printstr called"));
886   }
887 
888   /* See language.h.  */
889 
890   void print_typedef (struct type *type, struct symbol *new_symbol,
891 		      struct ui_file *stream) const override
892   {
893     error (_("unimplemented unknown_language::print_typedef called"));
894   }
895 
896   /* See language.h.  */
897 
898   bool is_string_type_p (struct type *type) const override
899   {
900     return default_is_string_type_p (type);
901   }
902 };
903 
904 /* Single instance of the unknown language class.  */
905 
906 static unknown_language unknown_language_defn;
907 
908 /* Constant data for the fake "auto" language.  */
909 
910 extern const struct language_data auto_language_data =
911 {
912   "auto",
913   "Auto",
914   language_auto,
915   range_check_off,
916   case_sensitive_on,
917   array_row_major,
918   macro_expansion_no,
919   NULL,
920   &exp_descriptor_standard,
921   "this",		        /* name_of_this */
922   false,			/* store_sym_names_in_linkage_form_p */
923   unk_op_print_tab,		/* expression operators for printing */
924   1,				/* c-style arrays */
925   0,				/* String lower bound */
926   &default_varobj_ops,
927   "{...}"			/* la_struct_too_deep_ellipsis */
928 };
929 
930 /* Class representing the fake "auto" language.  */
931 
932 class auto_language : public language_defn
933 {
934 public:
935   auto_language ()
936     : language_defn (language_auto, auto_language_data)
937   { /* Nothing.  */ }
938 
939   /* See language.h.  */
940   void language_arch_info (struct gdbarch *gdbarch,
941 			   struct language_arch_info *lai) const override
942   {
943     unknown_language_arch_info (gdbarch, lai);
944   }
945 
946   /* See language.h.  */
947 
948   void print_type (struct type *type, const char *varstring,
949 		   struct ui_file *stream, int show, int level,
950 		   const struct type_print_options *flags) const override
951   {
952     error (_("unimplemented auto_language::print_type called"));
953   }
954 
955   /* See language.h.  */
956 
957   char *demangle (const char *mangled, int options) const override
958   {
959     /* The auto language just uses the C++ demangler.  */
960     return gdb_demangle (mangled, options);
961   }
962 
963   /* See language.h.  */
964 
965   void value_print (struct value *val, struct ui_file *stream,
966 		    const struct value_print_options *options) const override
967   {
968     error (_("unimplemented auto_language::value_print called"));
969   }
970 
971   /* See language.h.  */
972 
973   void value_print_inner
974 	(struct value *val, struct ui_file *stream, int recurse,
975 	 const struct value_print_options *options) const override
976   {
977     error (_("unimplemented auto_language::value_print_inner called"));
978   }
979 
980   /* See language.h.  */
981 
982   int parser (struct parser_state *ps) const override
983   {
984     /* No parsing is done, just claim success.  */
985     return 1;
986   }
987 
988   /* See language.h.  */
989 
990   void emitchar (int ch, struct type *chtype,
991 		 struct ui_file *stream, int quoter) const override
992   {
993     error (_("unimplemented auto_language::emitchar called"));
994   }
995 
996   /* See language.h.  */
997 
998   void printchar (int ch, struct type *chtype,
999 		  struct ui_file *stream) const override
1000   {
1001     error (_("unimplemented auto_language::printchar called"));
1002   }
1003 
1004   /* See language.h.  */
1005 
1006   void printstr (struct ui_file *stream, struct type *elttype,
1007 		 const gdb_byte *string, unsigned int length,
1008 		 const char *encoding, int force_ellipses,
1009 		 const struct value_print_options *options) const override
1010   {
1011     error (_("unimplemented auto_language::printstr called"));
1012   }
1013 
1014   /* See language.h.  */
1015 
1016   void print_typedef (struct type *type, struct symbol *new_symbol,
1017 		      struct ui_file *stream) const override
1018   {
1019     error (_("unimplemented auto_language::print_typedef called"));
1020   }
1021 
1022   /* See language.h.  */
1023 
1024   bool is_string_type_p (struct type *type) const override
1025   {
1026     return default_is_string_type_p (type);
1027   }
1028 };
1029 
1030 /* Single instance of the fake "auto" language.  */
1031 
1032 static auto_language auto_language_defn;
1033 
1034 
1035 /* Per-architecture language information.  */
1036 
1037 static struct gdbarch_data *language_gdbarch_data;
1038 
1039 struct language_gdbarch
1040 {
1041   /* A vector of per-language per-architecture info.  Indexed by "enum
1042      language".  */
1043   struct language_arch_info arch_info[nr_languages];
1044 };
1045 
1046 static void *
1047 language_gdbarch_post_init (struct gdbarch *gdbarch)
1048 {
1049   struct language_gdbarch *l;
1050 
1051   l = GDBARCH_OBSTACK_ZALLOC (gdbarch, struct language_gdbarch);
1052   for (const auto &lang : language_defn::languages)
1053     {
1054       gdb_assert (lang != nullptr);
1055       lang->language_arch_info (gdbarch,
1056 				l->arch_info + lang->la_language);
1057     }
1058 
1059   return l;
1060 }
1061 
1062 struct type *
1063 language_string_char_type (const struct language_defn *la,
1064 			   struct gdbarch *gdbarch)
1065 {
1066   struct language_gdbarch *ld
1067     = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1068 
1069   return ld->arch_info[la->la_language].string_char_type;
1070 }
1071 
1072 struct type *
1073 language_bool_type (const struct language_defn *la,
1074 		    struct gdbarch *gdbarch)
1075 {
1076   struct language_gdbarch *ld
1077     = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1078 
1079   if (ld->arch_info[la->la_language].bool_type_symbol)
1080     {
1081       struct symbol *sym;
1082 
1083       sym = lookup_symbol (ld->arch_info[la->la_language].bool_type_symbol,
1084 			   NULL, VAR_DOMAIN, NULL).symbol;
1085       if (sym)
1086 	{
1087 	  struct type *type = SYMBOL_TYPE (sym);
1088 
1089 	  if (type && type->code () == TYPE_CODE_BOOL)
1090 	    return type;
1091 	}
1092     }
1093 
1094   return ld->arch_info[la->la_language].bool_type_default;
1095 }
1096 
1097 /* Helper function for primitive type lookup.  */
1098 
1099 static struct type **
1100 language_lookup_primitive_type_1 (const struct language_arch_info *lai,
1101 				  const char *name)
1102 {
1103   struct type **p;
1104 
1105   for (p = lai->primitive_type_vector; (*p) != NULL; p++)
1106     {
1107       if (strcmp ((*p)->name (), name) == 0)
1108 	return p;
1109     }
1110   return NULL;
1111 }
1112 
1113 /* See language.h.  */
1114 
1115 struct type *
1116 language_lookup_primitive_type (const struct language_defn *la,
1117 				struct gdbarch *gdbarch,
1118 				const char *name)
1119 {
1120   struct language_gdbarch *ld =
1121     (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1122   struct type **typep;
1123 
1124   typep = language_lookup_primitive_type_1 (&ld->arch_info[la->la_language],
1125 					    name);
1126   if (typep == NULL)
1127     return NULL;
1128   return *typep;
1129 }
1130 
1131 /* Helper function for type lookup as a symbol.
1132    Create the symbol corresponding to type TYPE in language LANG.  */
1133 
1134 static struct symbol *
1135 language_alloc_type_symbol (enum language lang, struct type *type)
1136 {
1137   struct symbol *symbol;
1138   struct gdbarch *gdbarch;
1139 
1140   gdb_assert (!TYPE_OBJFILE_OWNED (type));
1141 
1142   gdbarch = TYPE_OWNER (type).gdbarch;
1143   symbol = new (gdbarch_obstack (gdbarch)) struct symbol ();
1144 
1145   symbol->m_name = type->name ();
1146   symbol->set_language (lang, nullptr);
1147   symbol->owner.arch = gdbarch;
1148   SYMBOL_OBJFILE_OWNED (symbol) = 0;
1149   SYMBOL_SECTION (symbol) = 0;
1150   SYMBOL_TYPE (symbol) = type;
1151   SYMBOL_DOMAIN (symbol) = VAR_DOMAIN;
1152   SYMBOL_ACLASS_INDEX (symbol) = LOC_TYPEDEF;
1153 
1154   return symbol;
1155 }
1156 
1157 /* Initialize the primitive type symbols of language LD.
1158    The primitive type vector must have already been initialized.  */
1159 
1160 static void
1161 language_init_primitive_type_symbols (struct language_arch_info *lai,
1162 				      const struct language_defn *la,
1163 				      struct gdbarch *gdbarch)
1164 {
1165   int n;
1166 
1167   gdb_assert (lai->primitive_type_vector != NULL);
1168 
1169   for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
1170     continue;
1171 
1172   lai->primitive_type_symbols
1173     = GDBARCH_OBSTACK_CALLOC (gdbarch, n + 1, struct symbol *);
1174 
1175   for (n = 0; lai->primitive_type_vector[n] != NULL; ++n)
1176     {
1177       lai->primitive_type_symbols[n]
1178 	= language_alloc_type_symbol (la->la_language,
1179 				      lai->primitive_type_vector[n]);
1180     }
1181 
1182   /* Note: The result of symbol lookup is normally a symbol *and* the block
1183      it was found in.  Builtin types don't live in blocks.  We *could* give
1184      them one, but there is no current need so to keep things simple symbol
1185      lookup is extended to allow for BLOCK_FOUND to be NULL.  */
1186 }
1187 
1188 /* See language.h.  */
1189 
1190 struct symbol *
1191 language_lookup_primitive_type_as_symbol (const struct language_defn *la,
1192 					  struct gdbarch *gdbarch,
1193 					  const char *name)
1194 {
1195   struct language_gdbarch *ld
1196     = (struct language_gdbarch *) gdbarch_data (gdbarch, language_gdbarch_data);
1197   struct language_arch_info *lai = &ld->arch_info[la->la_language];
1198   struct type **typep;
1199   struct symbol *sym;
1200 
1201   if (symbol_lookup_debug)
1202     {
1203       fprintf_unfiltered (gdb_stdlog,
1204 			  "language_lookup_primitive_type_as_symbol"
1205 			  " (%s, %s, %s)",
1206 			  la->la_name, host_address_to_string (gdbarch), name);
1207     }
1208 
1209   typep = language_lookup_primitive_type_1 (lai, name);
1210   if (typep == NULL)
1211     {
1212       if (symbol_lookup_debug)
1213 	fprintf_unfiltered (gdb_stdlog, " = NULL\n");
1214       return NULL;
1215     }
1216 
1217   /* The set of symbols is lazily initialized.  */
1218   if (lai->primitive_type_symbols == NULL)
1219     language_init_primitive_type_symbols (lai, la, gdbarch);
1220 
1221   sym = lai->primitive_type_symbols[typep - lai->primitive_type_vector];
1222 
1223   if (symbol_lookup_debug)
1224     fprintf_unfiltered (gdb_stdlog, " = %s\n", host_address_to_string (sym));
1225   return sym;
1226 }
1227 
1228 /* Initialize the language routines.  */
1229 
1230 void _initialize_language ();
1231 void
1232 _initialize_language ()
1233 {
1234   static const char *const type_or_range_names[]
1235     = { "on", "off", "warn", "auto", NULL };
1236 
1237   static const char *const case_sensitive_names[]
1238     = { "on", "off", "auto", NULL };
1239 
1240   language_gdbarch_data
1241     = gdbarch_data_register_post_init (language_gdbarch_post_init);
1242 
1243   /* GDB commands for language specific stuff.  */
1244 
1245   add_basic_prefix_cmd ("check", no_class,
1246 			_("Set the status of the type/range checker."),
1247 			&setchecklist, "set check ", 0, &setlist);
1248   add_alias_cmd ("c", "check", no_class, 1, &setlist);
1249   add_alias_cmd ("ch", "check", no_class, 1, &setlist);
1250 
1251   add_show_prefix_cmd ("check", no_class,
1252 		       _("Show the status of the type/range checker."),
1253 		       &showchecklist, "show check ", 0, &showlist);
1254   add_alias_cmd ("c", "check", no_class, 1, &showlist);
1255   add_alias_cmd ("ch", "check", no_class, 1, &showlist);
1256 
1257   add_setshow_enum_cmd ("range", class_support, type_or_range_names,
1258 			&range,
1259 			_("Set range checking (on/warn/off/auto)."),
1260 			_("Show range checking (on/warn/off/auto)."),
1261 			NULL, set_range_command,
1262 			show_range_command,
1263 			&setchecklist, &showchecklist);
1264 
1265   add_setshow_enum_cmd ("case-sensitive", class_support, case_sensitive_names,
1266 			&case_sensitive, _("\
1267 Set case sensitivity in name search (on/off/auto)."), _("\
1268 Show case sensitivity in name search (on/off/auto)."), _("\
1269 For Fortran the default is off; for other languages the default is on."),
1270 			set_case_command,
1271 			show_case_command,
1272 			&setlist, &showlist);
1273 
1274   /* In order to call SET_LANGUAGE (below) we need to make sure that
1275      CURRENT_LANGUAGE is not NULL.  So first set the language to unknown,
1276      then we can change the language to 'auto'.  */
1277   current_language = language_def (language_unknown);
1278 
1279   add_set_language_command ();
1280 
1281   language = "auto";
1282   range = "auto";
1283   case_sensitive = "auto";
1284 
1285   /* Have the above take effect.  */
1286   set_language (language_auto);
1287 }
1288