/* Support for printing Pascal values for GDB, the GNU debugger.
- Copyright (C) 2000-2021 Free Software Foundation, Inc.
+ Copyright (C) 2000-2022 Free Software Foundation, Inc.
This file is part of GDB.
/* 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"
{
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;
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 ())
{
}
else
{
- fprintf_filtered (stream, "{");
+ gdb_printf (stream, "{");
/* If this is a virtual function table, print the 0th
entry specially, and the rest of the members normally. */
if (pascal_object_is_vtbl_ptr_type (elttype))
{
i = 1;
- fprintf_filtered (stream, "%d vtable entries", len - 1);
+ gdb_printf (stream, "%d vtable entries", len - 1);
}
else
{
i = 0;
}
value_print_array_elements (val, stream, recurse, options, i);
- fprintf_filtered (stream, "}");
+ gdb_printf (stream, "}");
}
break;
}
if (options->addressprint && options->format != 's')
{
- fputs_filtered (paddress (gdbarch, addr), stream);
+ gdb_puts (paddress (gdbarch, addr), stream);
want_space = 1;
}
&& addr != 0)
{
if (want_space)
- fputs_filtered (" ", stream);
+ gdb_puts (" ", stream);
/* No wide string yet. */
i = val_print_string (elttype, NULL, addr, -1, stream, options);
}
gdb_byte *buffer;
if (want_space)
- fputs_filtered (" ", stream);
+ gdb_puts (" ", stream);
buffer = (gdb_byte *) xmalloc (length_size);
read_memory (addr + length_pos, buffer, length_size);
string_length = extract_unsigned_integer (buffer, length_size,
/* If 'symbol_print' is set, we did the work above. */
if (!options->symbol_print
&& (msymbol.minsym != NULL)
- && (vt_address == BMSYMBOL_VALUE_ADDRESS (msymbol)))
+ && (vt_address == msymbol.value_address ()))
{
if (want_space)
- fputs_filtered (" ", stream);
- fputs_filtered ("<", stream);
- fputs_filtered (msymbol.minsym->print_name (), stream);
- fputs_filtered (">", stream);
+ gdb_puts (" ", stream);
+ gdb_puts ("<", stream);
+ gdb_puts (msymbol.minsym->print_name (), stream);
+ gdb_puts (">", stream);
want_space = 1;
}
if (vt_address && options->vtblprint)
struct type *wtype;
if (want_space)
- fputs_filtered (" ", stream);
+ gdb_puts (" ", stream);
if (msymbol.minsym != NULL)
{
if (wsym)
{
- wtype = SYMBOL_TYPE (wsym);
+ wtype = wsym->type ();
}
else
{
current_language);
if (options->prettyformat)
{
- fprintf_filtered (stream, "\n");
- print_spaces_filtered (2 + 2 * recurse, stream);
+ gdb_printf (stream, "\n");
+ print_spaces (2 + 2 * recurse, stream);
}
}
}
case TYPE_CODE_UNION:
if (recurse && !options->unionprint)
{
- fprintf_filtered (stream, "{...}");
+ gdb_printf (stream, "{...}");
break;
}
/* Fall through. */
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 (pascal_is_string_type (type, &length_pos, &length_size,
+ if (pascal_is_string_type (type, &length_pos, &length_size,
&string_pos, &char_type, NULL) > 0)
{
len = extract_unsigned_integer (valaddr + length_pos,
LONGEST low_bound, high_bound;
int need_comma = 0;
- fputs_filtered ("[", stream);
+ gdb_puts ("[", stream);
int bound_info = (get_discrete_bounds (range, &low_bound, &high_bound)
? 0 : -1);
if (element)
{
if (need_comma)
- fputs_filtered (", ", stream);
+ gdb_puts (", ", stream);
print_type_scalar (range, i, stream);
need_comma = 1;
{
int j = i;
- fputs_filtered ("..", stream);
+ gdb_puts ("..", stream);
while (i + 1 <= high_bound
&& value_bit_index (type, valaddr, ++i))
j = i;
}
}
done:
- fputs_filtered ("]", stream);
+ gdb_puts ("]", stream);
}
break;
}
else
{
- fprintf_filtered (stream, "(");
+ gdb_printf (stream, "(");
type_print (type, "", stream, -1);
- fprintf_filtered (stream, ") ");
+ gdb_printf (stream, ") ");
}
}
common_val_print (val, stream, 0, &opts, current_language);
show_pascal_static_field_print (struct ui_file *file, int from_tty,
struct cmd_list_element *c, const char *value)
{
- fprintf_filtered (file, _("Printing of pascal static members is %s.\n"),
- value);
+ gdb_printf (file, _("Printing of pascal static members is %s.\n"),
+ value);
}
static struct obstack dont_print_vb_obstack;
struct type *type = check_typedef (value_type (val));
- fprintf_filtered (stream, "{");
+ gdb_printf (stream, "{");
len = type->num_fields ();
n_baseclasses = TYPE_N_BASECLASSES (type);
{
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)
{
&& field_is_static (&type->field (i)))
continue;
if (fields_seen)
- fprintf_filtered (stream, ", ");
+ gdb_printf (stream, ", ");
else if (n_baseclasses > 0)
{
if (options->prettyformat)
{
- fprintf_filtered (stream, "\n");
- print_spaces_filtered (2 + 2 * recurse, stream);
- fputs_filtered ("members of ", stream);
- fputs_filtered (type->name (), stream);
- fputs_filtered (": ", stream);
+ gdb_printf (stream, "\n");
+ print_spaces (2 + 2 * recurse, stream);
+ gdb_puts ("members of ", stream);
+ gdb_puts (type->name (), stream);
+ gdb_puts (": ", stream);
}
}
fields_seen = 1;
if (options->prettyformat)
{
- fprintf_filtered (stream, "\n");
- print_spaces_filtered (2 + 2 * recurse, stream);
+ gdb_printf (stream, "\n");
+ print_spaces (2 + 2 * recurse, stream);
}
else
{
- wrap_here (n_spaces (2 + 2 * recurse));
+ stream->wrap_here (2 + 2 * recurse);
}
annotate_field_begin (type->field (i).type ());
if (field_is_static (&type->field (i)))
{
- fputs_filtered ("static ", stream);
- fprintf_symbol_filtered (stream,
- TYPE_FIELD_NAME (type, i),
- current_language->la_language,
- DMGL_PARAMS | DMGL_ANSI);
+ gdb_puts ("static ", stream);
+ fprintf_symbol (stream,
+ 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);
+ gdb_puts (" = ", stream);
annotate_field_value ();
if (!field_is_static (&type->field (i))
fputs_styled ("<optimized out or zero length>",
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 (_("<synthetic pointer>"),
metadata_style.style (), stream);
if (options->prettyformat)
{
- fprintf_filtered (stream, "\n");
- print_spaces_filtered (2 * recurse, stream);
+ gdb_printf (stream, "\n");
+ print_spaces (2 * recurse, stream);
}
}
- fprintf_filtered (stream, "}");
+ gdb_printf (stream, "}");
}
/* Special val_print routine to avoid printing multiple copies of virtual
if (options->prettyformat)
{
- fprintf_filtered (stream, "\n");
- print_spaces_filtered (2 * recurse, stream);
+ gdb_printf (stream, "\n");
+ print_spaces (2 * recurse, stream);
}
- fputs_filtered ("<", stream);
+ gdb_puts ("<", stream);
/* Not sure what the best notation is in the case where there is no
baseclass name. */
- fputs_filtered (basename ? basename : "", stream);
- fputs_filtered ("> = ", stream);
+ gdb_puts (basename ? basename : "", stream);
+ gdb_puts ("> = ", stream);
if (skip < 0)
val_print_unavailable (stream);
(base_value, stream, recurse, options,
(struct type **) obstack_base (&dont_print_vb_obstack),
0);
- fputs_filtered (", ", stream);
+ gdb_puts (", ", stream);
flush_it:
;