/* Pascal language support routines for GDB, the GNU debugger.
- Copyright (C) 2000, 2002-2005, 2007-2012 Free Software Foundation,
- Inc.
+ Copyright (C) 2000-2016 Free Software Foundation, Inc.
This file is part of GDB.
/* 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"
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;
}
is_pascal_string_type (struct type *type,int *length_pos,
int *length_size, int *string_pos,
struct type **char_type,
- char **arrayname)
+ const char **arrayname)
{
if (type != NULL && TYPE_CODE (type) == TYPE_CODE_STRUCT)
{
{
if (in_quotes)
{
- if (options->inspect_it)
- fputs_filtered ("\\', ", stream);
- else
- fputs_filtered ("', ", stream);
+ fputs_filtered ("', ", stream);
in_quotes = 0;
}
pascal_printchar (current_char, type, stream);
{
if ((!in_quotes) && (PRINT_LITERAL_FORM (current_char)))
{
- if (options->inspect_it)
- fputs_filtered ("\\'", stream);
- else
- fputs_filtered ("'", stream);
+ fputs_filtered ("'", stream);
in_quotes = 1;
}
pascal_one_char (current_char, stream, &in_quotes);
/* Terminate the quotes if necessary. */
if (in_quotes)
- {
- if (options->inspect_it)
- fputs_filtered ("\\'", stream);
- else
- fputs_filtered ("'", stream);
- }
+ fputs_filtered ("'", stream);
if (force_ellipses || i < length)
fputs_filtered ("...", stream);
{"^", 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}
};
\f
enum pascal_primitive_types {
lai->bool_type_default = builtin->builtin_bool;
}
+static const char *p_extensions[] =
+{
+ ".pas", ".p", ".pp", NULL
+};
+
const struct language_defn pascal_language_defn =
{
"pascal", /* Language name */
+ "Pascal",
language_pascal,
range_check_on,
- type_check_on,
case_sensitive_on,
array_row_major,
macro_expansion_no,
+ p_extensions,
&exp_descriptor_standard,
pascal_parse,
- pascal_error,
+ pascal_yyerror,
null_post_parser,
pascal_printchar, /* Print a character constant */
pascal_printstr, /* Function to print string constant */
pascal_print_typedef, /* Print a typedef using appropriate syntax */
pascal_val_print, /* Print a value using appropriate syntax */
pascal_value_print, /* Print a top-level value */
+ default_read_var_value, /* la_read_var_value */
NULL, /* Language specific skip_trampoline */
"this", /* name_of_this */
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 */
default_print_array_index,
default_pass_by_reference,
default_get_string,
- strcmp_iw_ordered,
+ NULL, /* la_get_symbol_name_cmp */
iterate_over_symbols,
+ &default_varobj_ops,
+ NULL,
+ NULL,
LANG_MAGIC
};