/* Support for printing Pascal values for GDB, the GNU debugger.
- Copyright 2000
+ Copyright 2000, 2001
Free Software Foundation, Inc.
This file is part of GDB.
#include "target.h"
#include "annotate.h"
#include "p-lang.h"
+#include "cp-abi.h"
\f
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_size)
+ if (is_pascal_string_type (elttype, &length_pos, &length_size,
+ &string_pos, &char_size, NULL)
&& addr != 0)
{
ULONGEST string_length;
}
if (vt_address && vtblprint)
{
- value_ptr vt_val;
+ struct value *vt_val;
struct symbol *wsym = (struct symbol *) NULL;
struct type *wtype;
struct symtab *s;
{
if (TYPE_CODE (elttype) != TYPE_CODE_UNDEF)
{
- value_ptr deref_val =
+ struct value *deref_val =
value_at
(TYPE_TARGET_TYPE (type),
unpack_pointer (lookup_pointer_type (builtin_type_void),
else
{
if (is_pascal_string_type (type, &length_pos, &length_size,
- &string_pos, &char_size))
+ &string_pos, &char_size, NULL))
{
len = extract_unsigned_integer (valaddr + embedded_offset + length_pos, length_size);
LA_PRINT_STRING (stream, valaddr + embedded_offset + string_pos, len, char_size, 0);
case TYPE_CODE_SET:
elttype = TYPE_INDEX_TYPE (type);
CHECK_TYPEDEF (elttype);
- if (TYPE_FLAGS (elttype) & TYPE_FLAG_STUB)
+ if (TYPE_STUB (elttype))
{
fprintf_filtered (stream, "<incomplete type>");
gdb_flush (stream);
}
\f
int
-pascal_value_print (value_ptr val, struct ui_file *stream, int format,
+pascal_value_print (struct value *val, struct ui_file *stream, int format,
enum val_prettyprint pretty)
{
struct type *type = VALUE_TYPE (val);
static struct obstack dont_print_vb_obstack;
static struct obstack dont_print_statmem_obstack;
-static void
- pascal_object_print_static_field (struct type *, value_ptr, struct ui_file *, int, int,
- enum val_prettyprint);
+static void pascal_object_print_static_field (struct type *, struct value *,
+ struct ui_file *, int, int,
+ enum val_prettyprint);
static void
pascal_object_print_value (struct type *, char *, CORE_ADDR, struct ui_file *,
if (!TYPE_FIELD_STATIC (type, i) && TYPE_FIELD_PACKED (type, i))
{
- value_ptr v;
+ struct value *v;
/* Bitfields require special handling, especially due to byte
order problems. */
}
else if (TYPE_FIELD_STATIC (type, i))
{
- /* value_ptr v = value_static_field (type, i); v4.17 specific */
- value_ptr v;
+ /* struct value *v = value_static_field (type, i); v4.17 specific */
+ struct value *v;
v = value_from_longest (TYPE_FIELD_TYPE (type, i),
unpack_field_as_long (type, valaddr, i));
if (boffset != -1 && (boffset < 0 || boffset >= TYPE_LENGTH (type)))
{
+ /* FIXME (alloc): not safe is baseclass is really really big. */
base_valaddr = (char *) alloca (TYPE_LENGTH (baseclass));
if (target_read_memory (address + boffset, base_valaddr,
TYPE_LENGTH (baseclass)) != 0)
have the same meanings as in c_val_print. */
static void
-pascal_object_print_static_field (struct type *type, value_ptr val,
+pascal_object_print_static_field (struct type *type, struct value *val,
struct ui_file *stream, int format,
int recurse, enum val_prettyprint pretty)
{