diff options
Diffstat (limited to 'gdb/p-valprint.c')
-rw-r--r-- | gdb/p-valprint.c | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index 33b797451ec..8304196f1f6 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -151,17 +151,6 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, break; } elttype = check_typedef (TYPE_TARGET_TYPE (type)); - if (TYPE_CODE (elttype) == TYPE_CODE_METHOD) - { - pascal_object_print_class_method (valaddr + embedded_offset, type, stream); - } - else if (TYPE_CODE (elttype) == TYPE_CODE_MEMBER) - { - pascal_object_print_class_member (valaddr + embedded_offset, - TYPE_DOMAIN_TYPE (TYPE_TARGET_TYPE (type)), - stream, "&"); - } - else { addr = unpack_pointer (type, valaddr + embedded_offset); print_unpacked_pointer: @@ -259,19 +248,8 @@ pascal_val_print (struct type *type, const gdb_byte *valaddr, } break; - case TYPE_CODE_MEMBER: - error (_("not implemented: member type in pascal_val_print")); - break; - case TYPE_CODE_REF: elttype = check_typedef (TYPE_TARGET_TYPE (type)); - if (TYPE_CODE (elttype) == TYPE_CODE_MEMBER) - { - pascal_object_print_class_member (valaddr + embedded_offset, - TYPE_DOMAIN_TYPE (elttype), - stream, ""); - break; - } if (addressprint) { fprintf_filtered (stream, "@"); @@ -604,96 +582,6 @@ static void pascal_object_print_value (struct type *, const gdb_byte *, int, int, enum val_prettyprint, struct type **); -void -pascal_object_print_class_method (const gdb_byte *valaddr, struct type *type, - struct ui_file *stream) -{ - struct type *domain; - struct fn_field *f = NULL; - int j = 0; - int len2; - int offset; - char *kind = ""; - CORE_ADDR addr; - struct symbol *sym; - unsigned len; - unsigned int i; - struct type *target_type = check_typedef (TYPE_TARGET_TYPE (type)); - - domain = TYPE_DOMAIN_TYPE (target_type); - if (domain == (struct type *) NULL) - { - fprintf_filtered (stream, "<unknown>"); - return; - } - addr = unpack_pointer (lookup_pointer_type (builtin_type_void), valaddr); - if (METHOD_PTR_IS_VIRTUAL (addr)) - { - offset = METHOD_PTR_TO_VOFFSET (addr); - len = TYPE_NFN_FIELDS (domain); - for (i = 0; i < len; i++) - { - f = TYPE_FN_FIELDLIST1 (domain, i); - len2 = TYPE_FN_FIELDLIST_LENGTH (domain, i); - - check_stub_method_group (domain, i); - for (j = 0; j < len2; j++) - { - if (TYPE_FN_FIELD_VOFFSET (f, j) == offset) - { - kind = "virtual "; - goto common; - } - } - } - } - else - { - sym = find_pc_function (addr); - if (sym == 0) - { - error (_("invalid pointer to member function")); - } - len = TYPE_NFN_FIELDS (domain); - for (i = 0; i < len; i++) - { - f = TYPE_FN_FIELDLIST1 (domain, i); - len2 = TYPE_FN_FIELDLIST_LENGTH (domain, i); - - check_stub_method_group (domain, i); - for (j = 0; j < len2; j++) - { - if (DEPRECATED_STREQ (DEPRECATED_SYMBOL_NAME (sym), TYPE_FN_FIELD_PHYSNAME (f, j))) - goto common; - } - } - } -common: - if (i < len) - { - char *demangled_name; - - fprintf_filtered (stream, "&"); - fputs_filtered (kind, stream); - demangled_name = cplus_demangle (TYPE_FN_FIELD_PHYSNAME (f, j), - DMGL_ANSI | DMGL_PARAMS); - if (demangled_name == NULL) - fprintf_filtered (stream, "<badly mangled name %s>", - TYPE_FN_FIELD_PHYSNAME (f, j)); - else - { - fputs_filtered (demangled_name, stream); - xfree (demangled_name); - } - } - else - { - fprintf_filtered (stream, "("); - type_print (type, "", stream, -1); - fprintf_filtered (stream, ") %d", (int) addr >> 3); - } -} - /* It was changed to this after 2.4.5. */ const char pascal_vtbl_ptr_name[] = {'_', '_', 'v', 't', 'b', 'l', '_', 'p', 't', 'r', '_', 't', 'y', 'p', 'e', 0}; @@ -1060,58 +948,6 @@ pascal_object_print_static_field (struct value *val, common_val_print (val, stream, format, 0, recurse, pretty); } -void -pascal_object_print_class_member (const gdb_byte *valaddr, struct type *domain, - struct ui_file *stream, char *prefix) -{ - - /* VAL is a byte offset into the structure type DOMAIN. - Find the name of the field for that offset and - print it. */ - int extra = 0; - int bits = 0; - unsigned int i; - unsigned len = TYPE_NFIELDS (domain); - /* @@ Make VAL into bit offset */ - LONGEST val = unpack_long (builtin_type_int, valaddr) << 3; - for (i = TYPE_N_BASECLASSES (domain); i < len; i++) - { - int bitpos = TYPE_FIELD_BITPOS (domain, i); - QUIT; - if (val == bitpos) - break; - if (val < bitpos && i != 0) - { - /* Somehow pointing into a field. */ - i -= 1; - extra = (val - TYPE_FIELD_BITPOS (domain, i)); - if (extra & 0x7) - bits = 1; - else - extra >>= 3; - break; - } - } - if (i < len) - { - char *name; - fputs_filtered (prefix, stream); - name = type_name_no_tag (domain); - if (name) - fputs_filtered (name, stream); - else - pascal_type_print_base (domain, stream, 0, 0); - fprintf_filtered (stream, "::"); - fputs_filtered (TYPE_FIELD_NAME (domain, i), stream); - if (extra) - fprintf_filtered (stream, " + %d bytes", extra); - if (bits) - fprintf_filtered (stream, " (offset in bits)"); - } - else - fprintf_filtered (stream, "%ld", (long int) (val >> 3)); -} - extern initialize_file_ftype _initialize_pascal_valprint; /* -Wmissing-prototypes */ void |