X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fp-valprint.c;h=8334ab9fe8443f1a2c7f18e69417ec5e8f0949e4;hb=e05523bd2411bac0277da73556f4d01f6c7448aa;hp=8f785b71ea43333308702fd45530736a1c3b6b91;hpb=1f8d2881175920d389078852bb1ff0799d744599;p=binutils-gdb.git diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index 8f785b71ea4..8334ab9fe84 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -1,6 +1,6 @@ /* Support for printing Pascal values for GDB, the GNU debugger. - Copyright (C) 2000-2020 Free Software Foundation, Inc. + Copyright (C) 2000-2022 Free Software Foundation, Inc. This file is part of GDB. @@ -20,7 +20,7 @@ /* This file is derived from c-valprint.c */ #include "defs.h" -#include "gdb_obstack.h" +#include "gdbsupport/gdb_obstack.h" #include "symtab.h" #include "gdbtypes.h" #include "expression.h" @@ -64,13 +64,13 @@ static const struct generic_val_print_decorations p_decorations = /* See p-lang.h. */ void -pascal_value_print_inner (struct value *val, struct ui_file *stream, - int recurse, - const struct value_print_options *options) +pascal_language::value_print_inner (struct value *val, + struct ui_file *stream, int recurse, + const struct value_print_options *options) const { struct type *type = check_typedef (value_type (val)); - struct gdbarch *gdbarch = get_type_arch (type); + struct gdbarch *gdbarch = type->arch (); enum bfd_endian byte_order = type_byte_order (type); unsigned int i = 0; /* Number of characters printed */ unsigned len; @@ -80,7 +80,7 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, struct type *char_type; CORE_ADDR addr; int want_space = 0; - const gdb_byte *valaddr = value_contents_for_printing (val); + const gdb_byte *valaddr = value_contents_for_printing (val).data (); switch (type->code ()) { @@ -116,8 +116,8 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, len = temp_len; } - LA_PRINT_STRING (stream, TYPE_TARGET_TYPE (type), - valaddr, len, NULL, 0, options); + printstr (stream, TYPE_TARGET_TYPE (type), valaddr, len, + NULL, 0, options); i = len; } else @@ -200,8 +200,8 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, as GDB does not recognize stabs pascal strings Pascal strings are mapped to records with lowercase names PM. */ - if (is_pascal_string_type (elttype, &length_pos, &length_size, - &string_pos, &char_type, NULL) + if (pascal_is_string_type (elttype, &length_pos, &length_size, + &string_pos, &char_type, NULL) > 0 && addr != 0) { ULONGEST string_length; @@ -255,7 +255,7 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, if (wsym) { - wtype = SYMBOL_TYPE (wsym); + wtype = wsym->type (); } else { @@ -306,20 +306,20 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, print_address_demangle (options, gdbarch, extract_unsigned_integer - (valaddr + TYPE_FIELD_BITPOS (type, VTBL_FNADDR_OFFSET) / 8, + (valaddr + type->field (VTBL_FNADDR_OFFSET).loc_bitpos () / 8, TYPE_LENGTH (type->field (VTBL_FNADDR_OFFSET).type ()), byte_order), stream, demangle); } else { - if (is_pascal_string_type (type, &length_pos, &length_size, - &string_pos, &char_type, NULL)) + if (pascal_is_string_type (type, &length_pos, &length_size, + &string_pos, &char_type, NULL) > 0) { len = extract_unsigned_integer (valaddr + length_pos, length_size, byte_order); - LA_PRINT_STRING (stream, char_type, valaddr + string_pos, - len, NULL, 0, options); + printstr (stream, char_type, valaddr + string_pos, len, + NULL, 0, options); } else pascal_object_print_value_fields (val, stream, recurse, @@ -402,8 +402,8 @@ pascal_value_print_inner (struct value *val, struct ui_file *stream, void -pascal_value_print (struct value *val, struct ui_file *stream, - const struct value_print_options *options) +pascal_language::value_print (struct value *val, struct ui_file *stream, + const struct value_print_options *options) const { struct type *type = value_type (val); struct value_print_options opts = *options; @@ -499,9 +499,7 @@ pascal_object_is_vtbl_member (struct type *type) return 0; } -/* Mutually recursive subroutines of pascal_object_print_value and - pascal_value_print to print out a structure's fields: - pascal_object_print_value_fields and pascal_object_print_value. +/* Helper function for print pascal objects. VAL, STREAM, RECURSE, and OPTIONS have the same meanings as in pascal_object_print_value and c_value_print. @@ -538,7 +536,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream, { struct obstack tmp_obstack = dont_print_statmem_obstack; int fields_seen = 0; - const gdb_byte *valaddr = value_contents_for_printing (val); + const gdb_byte *valaddr = value_contents_for_printing (val).data (); if (dont_print_statmem == 0) { @@ -576,7 +574,7 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream, } else { - wrap_here (n_spaces (2 + 2 * recurse)); + stream->wrap_here (2 + 2 * recurse); } annotate_field_begin (type->field (i).type ()); @@ -585,12 +583,12 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream, { fputs_filtered ("static ", stream); fprintf_symbol_filtered (stream, - TYPE_FIELD_NAME (type, i), + type->field (i).name (), current_language->la_language, DMGL_PARAMS | DMGL_ANSI); } else - fputs_styled (TYPE_FIELD_NAME (type, i), + fputs_styled (type->field (i).name (), variable_name_style.style (), stream); annotate_field_name_end (); fputs_filtered (" = ", stream); @@ -608,11 +606,9 @@ pascal_object_print_value_fields (struct value *val, struct ui_file *stream, fputs_styled ("", metadata_style.style (), stream); } - else if (value_bits_synthetic_pointer (val, - TYPE_FIELD_BITPOS (type, - i), - TYPE_FIELD_BITSIZE (type, - i))) + else if (value_bits_synthetic_pointer + (val, type->field (i).loc_bitpos (), + TYPE_FIELD_BITSIZE (type, i))) { fputs_styled (_(""), metadata_style.style (), stream);