X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fp-lang.c;h=cfe2a8887229d6d9b4b5262deb397d433f2ca583;hb=3960cb7a1bf14016b6b16d35205cdcb9dfc43c27;hp=07006cd079c7dbcabab1c514ee08746a84fe3e25;hpb=e93a877490b468a2894732ef1d36eba9019a6bb7;p=external%2Fbinutils.git diff --git a/gdb/p-lang.c b/gdb/p-lang.c index 07006cd..cfe2a88 100644 --- a/gdb/p-lang.c +++ b/gdb/p-lang.c @@ -1,6 +1,6 @@ /* Pascal language support routines for GDB, the GNU debugger. - Copyright (C) 2000-2013 Free Software Foundation, Inc. + Copyright (C) 2000-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -20,19 +20,18 @@ /* This file is derived from c-lang.c */ #include "defs.h" -#include "gdb_string.h" #include "symtab.h" #include "gdbtypes.h" #include "expression.h" #include "parser-defs.h" #include "language.h" +#include "varobj.h" #include "p-lang.h" #include "valprint.h" #include "value.h" #include - -extern void _initialize_pascal_language (void); - +#include "c-lang.h" +#include "gdbarch.h" /* All GPC versions until now (2007-09-27) also define a symbol called '_p_initialize'. Check for the presence of this symbol first. */ @@ -58,23 +57,23 @@ static const char GPC_MAIN_PROGRAM_NAME_2[] = "pascal_main_program"; const char * pascal_main_name (void) { - struct minimal_symbol *msym; + struct bound_minimal_symbol msym; msym = lookup_minimal_symbol (GPC_P_INITIALIZE, NULL, NULL); /* If '_p_initialize' was not found, the main program is likely not written in Pascal. */ - if (msym == NULL) + if (msym.minsym == NULL) return NULL; msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_1, NULL, NULL); - if (msym != NULL) + if (msym.minsym != NULL) { return GPC_MAIN_PROGRAM_NAME_1; } msym = lookup_minimal_symbol (GPC_MAIN_PROGRAM_NAME_2, NULL, NULL); - if (msym != NULL) + if (msym.minsym != NULL) { return GPC_MAIN_PROGRAM_NAME_2; } @@ -152,6 +151,16 @@ is_pascal_string_type (struct type *type,int *length_pos, return 0; } +/* This is a wrapper around IS_PASCAL_STRING_TYPE that returns true if TYPE + is a string. */ + +static bool +pascal_is_string_type_p (struct type *type) +{ + return is_pascal_string_type (type, nullptr, nullptr, nullptr, + nullptr, nullptr) > 0; +} + static void pascal_one_char (int, struct ui_file *, int *); /* Print the character C on STREAM as part of the contents of a literal @@ -339,7 +348,7 @@ const struct op_print pascal_op_print_tab[] = {"^", UNOP_IND, PREC_SUFFIX, 1}, {"@", UNOP_ADDR, PREC_PREFIX, 0}, {"sizeof", UNOP_SIZEOF, PREC_PREFIX, 0}, - {NULL, 0, 0, 0} + {NULL, OP_NULL, PREC_PREFIX, 0} }; enum pascal_primitive_types { @@ -412,17 +421,23 @@ pascal_language_arch_info (struct gdbarch *gdbarch, lai->bool_type_default = builtin->builtin_bool; } -const struct language_defn pascal_language_defn = +static const char *p_extensions[] = +{ + ".pas", ".p", ".pp", NULL +}; + +extern const struct language_defn pascal_language_defn = { "pascal", /* Language name */ + "Pascal", language_pascal, range_check_on, case_sensitive_on, array_row_major, macro_expansion_no, + p_extensions, &exp_descriptor_standard, pascal_parse, - pascal_error, null_post_parser, pascal_printchar, /* Print a character constant */ pascal_printstr, /* Function to print string constant */ @@ -434,26 +449,28 @@ const struct language_defn pascal_language_defn = default_read_var_value, /* la_read_var_value */ NULL, /* Language specific skip_trampoline */ "this", /* name_of_this */ + false, /* la_store_sym_names_in_linkage_form_p */ basic_lookup_symbol_nonlocal, /* lookup_symbol_nonlocal */ basic_lookup_transparent_type,/* lookup_transparent_type */ NULL, /* Language specific symbol demangler */ + NULL, NULL, /* Language specific class_name_from_physname */ pascal_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ default_word_break_characters, - default_make_symbol_completion_list, + default_collect_symbol_completion_matches, pascal_language_arch_info, default_print_array_index, default_pass_by_reference, default_get_string, - NULL, /* la_get_symbol_name_cmp */ + c_watch_location_expression, + NULL, /* la_compare_symbol_for_completion */ iterate_over_symbols, - LANG_MAGIC + default_search_name_hash, + &default_varobj_ops, + NULL, + NULL, + pascal_is_string_type_p, + "{...}" /* la_struct_too_deep_ellipsis */ }; - -void -_initialize_pascal_language (void) -{ - add_language (&pascal_language_defn); -}