gdb/
authorPedro Alves <palves@redhat.com>
Mon, 14 Feb 2011 11:35:45 +0000 (11:35 +0000)
committerPedro Alves <palves@redhat.com>
Mon, 14 Feb 2011 11:35:45 +0000 (11:35 +0000)
commit8af8e3bc815c464731924d121681ac73cae1ab1d
treeff401808e5259498226db71f707f4fdf7aa30c33
parent1b28d0b3beda72343ea25f135f17746340cae89c
gdb/
* exceptions.h (NOT_AVAILABLE_ERROR): New error.
* value.c: Include "exceptions.h".
(require_available): Throw NOT_AVAILABLE_ERROR instead of a
generic error.
* cp-abi.c: Include gdb_assert.h.
(baseclass_offset): Add `embedded_offset' and `val' parameters.
Assert the method is implemented.  Wrap NOT_AVAILABLE_ERROR
errors.
* cp-abi.h (baseclass_offset): Add `embedded_offset' and `val'
parameters.  No longer returns -1 on error.
(struct cp_abi_ops) <baseclass_offset>: Add `embedded_offset' and
`val' parameters.
* cp-valprint.c: Include exceptions.h.
(cp_print_value): Handle NOT_AVAILABLE_ERROR errors when fetching
the baseclass_offset.  Handle unavailable base classes.  Use
val_print_invalid_address.
* p-valprint.c: Include exceptions.h.
(pascal_object_print_value): Handle NOT_AVAILABLE_ERROR errors
when fetching the baseclass_offset.  No longer expect
baseclass_offset returning -1.  Handle unavailable base classes.
Use val_print_invalid_address.
* valops.c (dynamic_cast_check_1): Rename `contents' parameter to
`valaddr' parameter, and change its type to gdb_byte pointer.  Add
`embedded_offset' and `val' parameters.  Adjust.
(dynamic_cast_check_2): Rename `contents' parameter to `valaddr'
parameter, and change its type to gdb_byte pointer.  Add
`embedded_offset' and `val' parameters.  Adjust.  No longer expect
baseclass_offset returning -1.
(value_dynamic_cast): Use value_contents_for_printing rather than
value_contents.  Adjust.
(search_struct_field): No longer expect baseclass_offset returning
-1.
(search_struct_method): If reading memory from the target is
necessary, wrap it in a new value to pass to baseclass_offset.  No
longer expect baseclass_offset returning -1.
(find_method_list): No longer expect baseclass_offset returning
-1.  Use value_contents_for_printing rather than value_contents.
* valprint.c (val_print_invalid_address): New function.
* valprint.h (val_print_invalid_address): Declare.
* gdbtypes.c (is_unique_ancestor_worker): New `embedded_offset'
and `val' parameters.  No longer expect baseclass_offset returning
-1.  Adjust.
* gnu-v2-abi.c: Include "exceptions.h".
(gnuv2_baseclass_offset): Add `embedded_offset' and `val'
parameters.  Handle unavailable memory.  Recurse through
gnuv2_baseclass_offset directly, rather than through
baseclass_offset.  No longer returns -1 on not found, instead
throw an error.
* gnu-v3-abi.c (gnuv3_baseclass_offset): Add `embedded_offset' and
`val' parameters.  Adjust.

gdb/testsuite/
* gdb.trace/unavailable.cc (class Base, class Middle, class
Derived): New types.
(derived_unavail, derived_partial, derived_whole): New globals.
(virtual_partial): New global.
(virtualp): Point at virtual_partial.
* gdb.trace/unavailable.exp (gdb_collect_globals_test): Add tests
related to unavailable vptr.
16 files changed:
gdb/ChangeLog
gdb/cp-abi.c
gdb/cp-abi.h
gdb/cp-valprint.c
gdb/exceptions.h
gdb/gdbtypes.c
gdb/gnu-v2-abi.c
gdb/gnu-v3-abi.c
gdb/p-valprint.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/unavailable.cc
gdb/testsuite/gdb.trace/unavailable.exp
gdb/valops.c
gdb/valprint.c
gdb/valprint.h
gdb/value.c