X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Fgnu-v3-abi.c;h=953645e7411fca3e86ebdd6fb5f66cbef764aa78;hb=0d02e70b197c786f26175b9a73f94e01d14abdab;hp=773d3f8053cc6187e482c1657bb3f02b92fcba0e;hpb=2ad53ea10c14445d6074814bbdfe46bd787038cb;p=binutils-gdb.git diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 773d3f8053c..953645e7411 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1,7 +1,7 @@ /* Abstraction of GNU v3 abi. Contributed by Jim Blandy - Copyright (C) 2001-2021 Free Software Foundation, Inc. + Copyright (C) 2001-2022 Free Software Foundation, Inc. This file is part of GDB. @@ -195,7 +195,7 @@ vtable_address_point_offset (struct gdbarch *gdbarch) struct type *vtable_type = (struct type *) gdbarch_data (gdbarch, vtable_type_gdbarch_data); - return (TYPE_FIELD_BITPOS (vtable_type, vtable_field_virtual_functions) + return (vtable_type->field (vtable_field_virtual_functions).loc_bitpos () / TARGET_CHAR_BIT); } @@ -469,7 +469,7 @@ gnuv3_baseclass_offset (struct type *type, int index, struct dwarf2_property_baton baton; baton.property_type = lookup_pointer_type (type->field (index).type ()); - baton.locexpr = *TYPE_FIELD_DWARF_BLOCK (type, index); + baton.locexpr = *type->field (index).loc_dwarf_block (); struct dynamic_prop prop; prop.set_locexpr (&baton); @@ -483,7 +483,7 @@ gnuv3_baseclass_offset (struct type *type, int index, CORE_ADDR result; if (dwarf2_evaluate_property (&prop, nullptr, &addr_stack, &result, - true)) + {addr_stack.addr})) return (int) (result - addr_stack.addr); } @@ -623,7 +623,7 @@ gnuv3_print_method_ptr (const gdb_byte *contents, /* Check for NULL. */ if (ptr_value == 0 && vbit == 0) { - fprintf_filtered (stream, "NULL"); + gdb_printf (stream, "NULL"); return; } @@ -647,26 +647,27 @@ gnuv3_print_method_ptr (const gdb_byte *contents, gdb::unique_xmalloc_ptr demangled_name = gdb_demangle (physname, DMGL_ANSI | DMGL_PARAMS); - fprintf_filtered (stream, "&virtual "); + gdb_printf (stream, "&virtual "); if (demangled_name == NULL) - fputs_filtered (physname, stream); + gdb_puts (physname, stream); else - fputs_filtered (demangled_name.get (), stream); + gdb_puts (demangled_name.get (), stream); return; } } else if (ptr_value != 0) { /* Found a non-virtual function: print out the type. */ - fputs_filtered ("(", stream); - c_print_type (type, "", stream, -1, 0, &type_print_raw_options); - fputs_filtered (") ", stream); + gdb_puts ("(", stream); + c_print_type (type, "", stream, -1, 0, current_language->la_language, + &type_print_raw_options); + gdb_puts (") ", stream); } /* We didn't find it; print the raw data. */ if (vbit) { - fprintf_filtered (stream, "&virtual table offset "); + gdb_printf (stream, "&virtual table offset "); print_longest (stream, 'd', 1, ptr_value); } else @@ -679,7 +680,7 @@ gnuv3_print_method_ptr (const gdb_byte *contents, if (adjustment) { - fprintf_filtered (stream, ", this adjustment "); + gdb_printf (stream, ", this adjustment "); print_longest (stream, 'd', 1, adjustment); } } @@ -907,11 +908,11 @@ print_one_vtable (struct gdbarch *gdbarch, struct value *value, vt_addr = value_address (value_field (vtable, vtable_field_virtual_functions)); - printf_filtered (_("vtable for '%s' @ %s (subobject @ %s):\n"), - TYPE_SAFE_NAME (type), - paddress (gdbarch, vt_addr), - paddress (gdbarch, (value_address (value) - + value_embedded_offset (value)))); + gdb_printf (_("vtable for '%s' @ %s (subobject @ %s):\n"), + TYPE_SAFE_NAME (type), + paddress (gdbarch, vt_addr), + paddress (gdbarch, (value_address (value) + + value_embedded_offset (value)))); for (i = 0; i <= max_voffset; ++i) { @@ -920,7 +921,7 @@ print_one_vtable (struct gdbarch *gdbarch, struct value *value, int got_error = 0; struct value *vfn; - printf_filtered ("[%d]: ", i); + gdb_printf ("[%d]: ", i); vfn = value_subscript (value_field (vtable, vtable_field_virtual_functions), @@ -942,7 +943,7 @@ print_one_vtable (struct gdbarch *gdbarch, struct value *value, if (!got_error) print_function_pointer_address (opts, gdbarch, addr, gdb_stdout); - printf_filtered ("\n"); + gdb_printf ("\n"); } } @@ -983,7 +984,7 @@ gnuv3_print_vtable (struct value *value) if (!vtable) { - printf_filtered (_("This object does not have a virtual function table\n")); + gdb_printf (_("This object does not have a virtual function table\n")); return; } @@ -1002,7 +1003,7 @@ gnuv3_print_vtable (struct value *value) if (iter->max_voffset >= 0) { if (count > 0) - printf_filtered ("\n"); + gdb_printf ("\n"); print_one_vtable (gdbarch, iter->value, iter->max_voffset, &opts); ++count; } @@ -1071,7 +1072,7 @@ gnuv3_get_typeid_type (struct gdbarch *gdbarch) typeinfo_type = (struct type *) gdbarch_data (gdbarch, std_type_info_gdbarch_data); else - typeinfo_type = SYMBOL_TYPE (typeinfo); + typeinfo_type = typeinfo->type (); return typeinfo_type; } @@ -1146,7 +1147,7 @@ gnuv3_get_typeid (struct value *value) if (minsym.minsym == NULL) error (_("could not find typeinfo symbol for '%s'"), name); - result = value_at_lazy (typeinfo_type, BMSYMBOL_VALUE_ADDRESS (minsym)); + result = value_at_lazy (typeinfo_type, minsym.value_address ()); } return result; @@ -1235,7 +1236,7 @@ gnuv3_skip_trampoline (struct frame_info *frame, CORE_ADDR stop_pc) if (fn_sym.minsym == NULL) return 0; - method_stop_pc = BMSYMBOL_VALUE_ADDRESS (fn_sym); + method_stop_pc = fn_sym.value_address (); /* Some targets have minimal symbols pointing to function descriptors (powerpc 64 for example). Make sure to retrieve the address