diff options
Diffstat (limited to 'gdb/p-lang.c')
-rw-r--r-- | gdb/p-lang.c | 90 |
1 files changed, 67 insertions, 23 deletions
diff --git a/gdb/p-lang.c b/gdb/p-lang.c index aa5545e..11df309 100644 --- a/gdb/p-lang.c +++ b/gdb/p-lang.c @@ -428,33 +428,77 @@ const struct op_print pascal_op_print_tab[] = {NULL, 0, 0, 0} }; -struct type **const (pascal_builtin_types[]) = -{ - &builtin_type_int, - &builtin_type_long, - &builtin_type_short, - &builtin_type_char, - &builtin_type_float, - &builtin_type_double, - &builtin_type_void, - &builtin_type_long_long, - &builtin_type_signed_char, - &builtin_type_unsigned_char, - &builtin_type_unsigned_short, - &builtin_type_unsigned_int, - &builtin_type_unsigned_long, - &builtin_type_unsigned_long_long, - &builtin_type_long_double, - &builtin_type_complex, - &builtin_type_double_complex, - 0 +enum pascal_primitive_types { + pascal_primitive_type_int, + pascal_primitive_type_long, + pascal_primitive_type_short, + pascal_primitive_type_char, + pascal_primitive_type_float, + pascal_primitive_type_double, + pascal_primitive_type_void, + pascal_primitive_type_long_long, + pascal_primitive_type_signed_char, + pascal_primitive_type_unsigned_char, + pascal_primitive_type_unsigned_short, + pascal_primitive_type_unsigned_int, + pascal_primitive_type_unsigned_long, + pascal_primitive_type_unsigned_long_long, + pascal_primitive_type_long_double, + pascal_primitive_type_complex, + pascal_primitive_type_double_complex, + nr_pascal_primitive_types }; +static void +pascal_language_arch_info (struct gdbarch *gdbarch, + struct language_arch_info *lai) +{ + const struct builtin_type *builtin = builtin_type (gdbarch); + lai->string_char_type = builtin->builtin_char; + lai->primitive_type_vector + = GDBARCH_OBSTACK_CALLOC (gdbarch, nr_pascal_primitive_types + 1, + struct type *); + lai->primitive_type_vector [pascal_primitive_type_int] + = builtin->builtin_int; + lai->primitive_type_vector [pascal_primitive_type_long] + = builtin->builtin_long; + lai->primitive_type_vector [pascal_primitive_type_short] + = builtin->builtin_short; + lai->primitive_type_vector [pascal_primitive_type_char] + = builtin->builtin_char; + lai->primitive_type_vector [pascal_primitive_type_float] + = builtin->builtin_float; + lai->primitive_type_vector [pascal_primitive_type_double] + = builtin->builtin_double; + lai->primitive_type_vector [pascal_primitive_type_void] + = builtin->builtin_void; + lai->primitive_type_vector [pascal_primitive_type_long_long] + = builtin->builtin_long_long; + lai->primitive_type_vector [pascal_primitive_type_signed_char] + = builtin->builtin_signed_char; + lai->primitive_type_vector [pascal_primitive_type_unsigned_char] + = builtin->builtin_unsigned_char; + lai->primitive_type_vector [pascal_primitive_type_unsigned_short] + = builtin->builtin_unsigned_short; + lai->primitive_type_vector [pascal_primitive_type_unsigned_int] + = builtin->builtin_unsigned_int; + lai->primitive_type_vector [pascal_primitive_type_unsigned_long] + = builtin->builtin_unsigned_long; + lai->primitive_type_vector [pascal_primitive_type_unsigned_long_long] + = builtin->builtin_unsigned_long_long; + lai->primitive_type_vector [pascal_primitive_type_long_double] + = builtin->builtin_long_double; + lai->primitive_type_vector [pascal_primitive_type_complex] + = builtin->builtin_complex; + lai->primitive_type_vector [pascal_primitive_type_double_complex] + = builtin->builtin_double_complex; +} + const struct language_defn pascal_language_defn = { "pascal", /* Language name */ language_pascal, - pascal_builtin_types, + NULL, range_check_on, type_check_on, case_sensitive_on, @@ -479,9 +523,9 @@ const struct language_defn pascal_language_defn = pascal_op_print_tab, /* expression operators for printing */ 1, /* c-style arrays */ 0, /* String lower bound */ - &builtin_type_char, /* Type of string elements */ + NULL, default_word_break_characters, - NULL, /* FIXME: la_language_arch_info. */ + pascal_language_arch_info, default_print_array_index, LANG_MAGIC }; |