OSDN Git Service

gdb/
authorpalves <palves>
Mon, 14 Feb 2011 20:35:44 +0000 (20:35 +0000)
committerpalves <palves>
Mon, 14 Feb 2011 20:35:44 +0000 (20:35 +0000)
commit763b1d5a9c13a4521cac67b5bde671245becc6b6
treec80565c479b29afa83e63314b2f5ce341f8c480e
parent7442edab7507ca5dd897c04fc087c1c02fd051d2
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