projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use target_terminal_ours_for_output in warning/internal_error
[deliverable/binutils-gdb.git]
/
gdb
/
cp-valprint.c
diff --git
a/gdb/cp-valprint.c
b/gdb/cp-valprint.c
index 3e1d6ededd57112afa62c98bd68d3abd4e381df0..effce30cf85d96c1eae0dc2b33dcb9231eedaad6 100644
(file)
--- a/
gdb/cp-valprint.c
+++ b/
gdb/cp-valprint.c
@@
-1,6
+1,6
@@
/* Support for printing C++ values for GDB, the GNU debugger.
/* Support for printing C++ values for GDB, the GNU debugger.
- Copyright (C) 1986-201
4
Free Software Foundation, Inc.
+ Copyright (C) 1986-201
6
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-27,7
+27,6
@@
#include "gdbcmd.h"
#include "demangle.h"
#include "annotate.h"
#include "gdbcmd.h"
#include "demangle.h"
#include "annotate.h"
-#include <string.h>
#include "c-lang.h"
#include "target.h"
#include "cp-abi.h"
#include "c-lang.h"
#include "target.h"
#include "cp-abi.h"
@@
-35,7
+34,6
@@
#include "cp-support.h"
#include "language.h"
#include "extension.h"
#include "cp-support.h"
#include "language.h"
#include "extension.h"
-#include "exceptions.h"
#include "typeprint.h"
/* Controls printing of vtbl's. */
#include "typeprint.h"
/* Controls printing of vtbl's. */
@@
-90,7
+88,7
@@
static void cp_print_value (struct type *, struct type *,
/* GCC versions after 2.4.5 use this. */
/* GCC versions after 2.4.5 use this. */
-
const
char vtbl_ptr_name[] = "__vtbl_ptr_type";
+
EXPORTED_CONST
char vtbl_ptr_name[] = "__vtbl_ptr_type";
/* Return truth value for assertion that TYPE is of the type
"pointer to virtual function". */
/* Return truth value for assertion that TYPE is of the type
"pointer to virtual function". */
@@
-98,9
+96,9
@@
const char vtbl_ptr_name[] = "__vtbl_ptr_type";
int
cp_is_vtbl_ptr_type (struct type *type)
{
int
cp_is_vtbl_ptr_type (struct type *type)
{
- const char *typename = type_name_no_tag (type);
+ const char *type
_
name = type_name_no_tag (type);
- return (type
name != NULL && !strcmp (type
name, vtbl_ptr_name));
+ return (type
_name != NULL && !strcmp (type_
name, vtbl_ptr_name));
}
/* Return truth value for the assertion that TYPE is of the type
}
/* Return truth value for the assertion that TYPE is of the type
@@
-167,7
+165,7
@@
cp_print_value_fields (struct type *type, struct type *real_type,
int fields_seen = 0;
static int last_set_recurse = -1;
int fields_seen = 0;
static int last_set_recurse = -1;
-
CHECK_TYPEDEF
(type);
+
type = check_typedef
(type);
if (recurse == 0)
{
if (recurse == 0)
{
@@
-208,8
+206,8
@@
cp_print_value_fields (struct type *type, struct type *real_type,
fprintf_filtered (stream, "<No data fields>");
else
{
fprintf_filtered (stream, "<No data fields>");
else
{
-
in
t statmem_obstack_initial_size = 0;
-
in
t stat_array_obstack_initial_size = 0;
+
size_
t statmem_obstack_initial_size = 0;
+
size_
t stat_array_obstack_initial_size = 0;
struct type *vptr_basetype = NULL;
int vptr_fieldno;
struct type *vptr_basetype = NULL;
int vptr_fieldno;
@@
-294,12
+292,6
@@
cp_print_value_fields (struct type *type, struct type *real_type,
{
fputs_filtered (_("<synthetic pointer>"), stream);
}
{
fputs_filtered (_("<synthetic pointer>"), stream);
}
- else if (!value_bits_valid (val,
- TYPE_FIELD_BITPOS (type, i),
- TYPE_FIELD_BITSIZE (type, i)))
- {
- val_print_optimized_out (val, stream);
- }
else
{
struct value_print_options opts = *options;
else
{
struct value_print_options opts = *options;
@@
-321,18
+313,21
@@
cp_print_value_fields (struct type *type, struct type *real_type,
}
else if (field_is_static (&TYPE_FIELD (type, i)))
{
}
else if (field_is_static (&TYPE_FIELD (type, i)))
{
- volatile struct gdb_exception ex;
struct value *v = NULL;
struct value *v = NULL;
- TRY
_CATCH (ex, RETURN_MASK_ERROR)
+ TRY
{
v = value_static_field (type, i);
}
{
v = value_static_field (type, i);
}
- if (ex.reason < 0)
- fprintf_filtered (stream,
- _("<error reading variable: %s>"),
- ex.message);
+ CATCH (ex, RETURN_MASK_ERROR)
+ {
+ fprintf_filtered (stream,
+ _("<error reading variable: %s>"),
+ ex.message);
+ }
+ END_CATCH
+
cp_print_static_field (TYPE_FIELD_TYPE (type, i),
v, stream, recurse + 1,
options);
cp_print_static_field (TYPE_FIELD_TYPE (type, i),
v, stream, recurse + 1,
options);
@@
-370,7
+365,7
@@
cp_print_value_fields (struct type *type, struct type *real_type,
if (dont_print_statmem == 0)
{
if (dont_print_statmem == 0)
{
-
in
t obstack_final_size =
+
size_
t obstack_final_size =
obstack_object_size (&dont_print_statmem_obstack);
if (obstack_final_size > statmem_obstack_initial_size)
obstack_object_size (&dont_print_statmem_obstack);
if (obstack_final_size > statmem_obstack_initial_size)
@@
-378,7
+373,7
@@
cp_print_value_fields (struct type *type, struct type *real_type,
/* In effect, a pop of the printed-statics stack. */
void *free_to_ptr =
/* In effect, a pop of the printed-statics stack. */
void *free_to_ptr =
- obstack_next_free (&dont_print_statmem_obstack) -
+
(char *)
obstack_next_free (&dont_print_statmem_obstack) -
(obstack_final_size - statmem_obstack_initial_size);
obstack_free (&dont_print_statmem_obstack,
(obstack_final_size - statmem_obstack_initial_size);
obstack_free (&dont_print_statmem_obstack,
@@
-387,13
+382,13
@@
cp_print_value_fields (struct type *type, struct type *real_type,
if (last_set_recurse != recurse)
{
if (last_set_recurse != recurse)
{
-
in
t obstack_final_size =
+
size_
t obstack_final_size =
obstack_object_size (&dont_print_stat_array_obstack);
if (obstack_final_size > stat_array_obstack_initial_size)
{
void *free_to_ptr =
obstack_object_size (&dont_print_stat_array_obstack);
if (obstack_final_size > stat_array_obstack_initial_size)
{
void *free_to_ptr =
- obstack_next_free (&dont_print_stat_array_obstack)
+
(char *)
obstack_next_free (&dont_print_stat_array_obstack)
- (obstack_final_size
- stat_array_obstack_initial_size);
- (obstack_final_size
- stat_array_obstack_initial_size);
@@
-434,8
+429,9
@@
cp_print_value_fields_rtti (struct type *type,
/* We require all bits to be valid in order to attempt a
conversion. */
/* We require all bits to be valid in order to attempt a
conversion. */
- if (value_bits_valid (val, TARGET_CHAR_BIT * offset,
- TARGET_CHAR_BIT * TYPE_LENGTH (type)))
+ if (!value_bits_any_optimized_out (val,
+ TARGET_CHAR_BIT * offset,
+ TARGET_CHAR_BIT * TYPE_LENGTH (type)))
{
struct value *value;
int full, top, using_enc;
{
struct value *value;
int full, top, using_enc;
@@
-488,12
+484,11
@@
cp_print_value (struct type *type, struct type *real_type,
for (i = 0; i < n_baseclasses; i++)
{
int boffset = 0;
for (i = 0; i < n_baseclasses; i++)
{
int boffset = 0;
- int skip;
+ int skip
= 0
;
struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
const char *basename = TYPE_NAME (baseclass);
const gdb_byte *base_valaddr = NULL;
const struct value *base_val = NULL;
struct type *baseclass = check_typedef (TYPE_BASECLASS (type, i));
const char *basename = TYPE_NAME (baseclass);
const gdb_byte *base_valaddr = NULL;
const struct value *base_val = NULL;
- volatile struct gdb_exception ex;
if (BASETYPE_VIA_VIRTUAL (type, i))
{
if (BASETYPE_VIA_VIRTUAL (type, i))
{
@@
-513,18
+508,21
@@
cp_print_value (struct type *type, struct type *real_type,
thisoffset = offset;
thistype = real_type;
thisoffset = offset;
thistype = real_type;
- TRY
_CATCH (ex, RETURN_MASK_ERROR)
+ TRY
{
boffset = baseclass_offset (type, i, valaddr, offset, address, val);
}
{
boffset = baseclass_offset (type, i, valaddr, offset, address, val);
}
- if (ex.reason < 0 && ex.error == NOT_AVAILABLE_ERROR)
- skip = -1;
- else if (ex.reason < 0)
- skip = 1;
- else
- {
- skip = 0;
+ CATCH (ex, RETURN_MASK_ERROR)
+ {
+ if (ex.error == NOT_AVAILABLE_ERROR)
+ skip = -1;
+ else
+ skip = 1;
+ }
+ END_CATCH
+ if (skip == 0)
+ {
if (BASETYPE_VIA_VIRTUAL (type, i))
{
/* The virtual base class pointer might have been
if (BASETYPE_VIA_VIRTUAL (type, i))
{
/* The virtual base class pointer might have been
@@
-537,7
+535,7
@@
cp_print_value (struct type *type, struct type *real_type,
gdb_byte *buf;
struct cleanup *back_to;
gdb_byte *buf;
struct cleanup *back_to;
- buf = xmalloc (TYPE_LENGTH (baseclass));
+ buf =
(gdb_byte *)
xmalloc (TYPE_LENGTH (baseclass));
back_to = make_cleanup (xfree, buf);
if (target_read_memory (address + boffset, buf,
back_to = make_cleanup (xfree, buf);
if (target_read_memory (address + boffset, buf,
@@
-671,7
+669,7
@@
cp_print_static_field (struct type *type,
addr = value_address (val);
obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
sizeof (CORE_ADDR));
addr = value_address (val);
obstack_grow (&dont_print_statmem_obstack, (char *) &addr,
sizeof (CORE_ADDR));
-
CHECK_TYPEDEF
(type);
+
type = check_typedef
(type);
cp_print_value_fields (type, value_enclosing_type (val),
value_contents_for_printing (val),
value_embedded_offset (val), addr,
cp_print_value_fields (type, value_enclosing_type (val),
value_contents_for_printing (val),
value_embedded_offset (val), addr,
@@
-716,27
+714,26
@@
cp_print_static_field (struct type *type,
&opts, current_language);
}
&opts, current_language);
}
-
-/* Find the field in *DOMAIN, or its non-virtual base classes, with
- bit offset OFFSET. Set *DOMAIN to the containing type and *FIELDNO
+/* Find the field in *SELF, or its non-virtual base classes, with
+ bit offset OFFSET. Set *SELF to the containing type and *FIELDNO
to the containing field number. If OFFSET is not exactly at the
to the containing field number. If OFFSET is not exactly at the
- start of some field, set *
DOMAIN
to NULL. */
+ start of some field, set *
SELF
to NULL. */
static void
static void
-cp_find_class_member (struct type **
domain
_p, int *fieldno,
+cp_find_class_member (struct type **
self
_p, int *fieldno,
LONGEST offset)
{
LONGEST offset)
{
- struct type *
domain
;
+ struct type *
self
;
unsigned int i;
unsigned len;
unsigned int i;
unsigned len;
- *
domain_p = check_typedef (*domain
_p);
-
domain = *domain
_p;
- len = TYPE_NFIELDS (
domain
);
+ *
self_p = check_typedef (*self
_p);
+
self = *self
_p;
+ len = TYPE_NFIELDS (
self
);
- for (i = TYPE_N_BASECLASSES (
domain
); i < len; i++)
+ for (i = TYPE_N_BASECLASSES (
self
); i < len; i++)
{
{
- LONGEST bitpos = TYPE_FIELD_BITPOS (
domain
, i);
+ LONGEST bitpos = TYPE_FIELD_BITPOS (
self
, i);
QUIT;
if (offset == bitpos)
QUIT;
if (offset == bitpos)
@@
-746,20
+743,20
@@
cp_find_class_member (struct type **domain_p, int *fieldno,
}
}
}
}
- for (i = 0; i < TYPE_N_BASECLASSES (
domain
); i++)
+ for (i = 0; i < TYPE_N_BASECLASSES (
self
); i++)
{
{
- LONGEST bitpos = TYPE_FIELD_BITPOS (
domain
, i);
- LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (
domain
, i));
+ LONGEST bitpos = TYPE_FIELD_BITPOS (
self
, i);
+ LONGEST bitsize = 8 * TYPE_LENGTH (TYPE_FIELD_TYPE (
self
, i));
if (offset >= bitpos && offset < bitpos + bitsize)
{
if (offset >= bitpos && offset < bitpos + bitsize)
{
- *
domain_p = TYPE_FIELD_TYPE (domain
, i);
- cp_find_class_member (
domain
_p, fieldno, offset - bitpos);
+ *
self_p = TYPE_FIELD_TYPE (self
, i);
+ cp_find_class_member (
self
_p, fieldno, offset - bitpos);
return;
}
}
return;
}
}
- *
domain
_p = NULL;
+ *
self
_p = NULL;
}
void
}
void
@@
-768,10
+765,10
@@
cp_print_class_member (const gdb_byte *valaddr, struct type *type,
{
enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
{
enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type));
- /* VAL is a byte offset into the structure type
DOMAIN
.
+ /* VAL is a byte offset into the structure type
SELF_TYPE
.
Find the name of the field for that offset and
print it. */
Find the name of the field for that offset and
print it. */
- struct type *
domain = TYPE_DOMAIN
_TYPE (type);
+ struct type *
self_type = TYPE_SELF
_TYPE (type);
LONGEST val;
int fieldno;
LONGEST val;
int fieldno;
@@
-795,20
+792,20
@@
cp_print_class_member (const gdb_byte *valaddr, struct type *type,
return;
}
return;
}
- cp_find_class_member (&
domain
, &fieldno, val << 3);
+ cp_find_class_member (&
self_type
, &fieldno, val << 3);
- if (
domain
!= NULL)
+ if (
self_type
!= NULL)
{
const char *name;
fputs_filtered (prefix, stream);
{
const char *name;
fputs_filtered (prefix, stream);
- name = type_name_no_tag (
domain
);
+ name = type_name_no_tag (
self_type
);
if (name)
fputs_filtered (name, stream);
else
if (name)
fputs_filtered (name, stream);
else
- c_type_print_base (
domain
, stream, 0, 0, &type_print_raw_options);
+ c_type_print_base (
self_type
, stream, 0, 0, &type_print_raw_options);
fprintf_filtered (stream, "::");
fprintf_filtered (stream, "::");
- fputs_filtered (TYPE_FIELD_NAME (
domain
, fieldno), stream);
+ fputs_filtered (TYPE_FIELD_NAME (
self_type
, fieldno), stream);
}
else
fprintf_filtered (stream, "%ld", (long) val);
}
else
fprintf_filtered (stream, "%ld", (long) val);
This page took
0.039245 seconds
and
4
git commands to generate.