aboutsummaryrefslogtreecommitdiff
path: root/gdb/gmalloc.c
diff options
context:
space:
mode:
authorJohn Gilmore <gnu@cygnus>1992-10-06 09:22:43 +0000
committerJohn Gilmore <gnu@cygnus>1992-10-06 09:22:43 +0000
commit94603999f966820f5264e98e530cb59c38597963 (patch)
treebbb9e731f62c217daec96656e23a6c1191de9efb /gdb/gmalloc.c
parent3d3e494e4c586428ffe396ef58b6c5a4789edc3c (diff)
downloadgdb-94603999f966820f5264e98e530cb59c38597963.zip
gdb-94603999f966820f5264e98e530cb59c38597963.tar.gz
gdb-94603999f966820f5264e98e530cb59c38597963.tar.bz2
A bunch of changes mostly to improve debugging of C++ programs.
Specifically, the calling of inferiors methods is improved. * value.h: New macros METHOD_PTR_IS_VIRTUAL, METHOD_PTR_FROM_VOFFSET, METHOD_PTR_TO_VOFFSET to partially hide the implementation details of pointer-to-method objects. How to tell if the pointer points to a virtual method is still very dependent on the particular compiler, but this should make it easier to find the places to change. * eval.c (evaluate_subexp [case OP_FUNCALL]), valprint.c (val_print [case TYPE_CODE_PTR]): Use the new METHOD_PTR_* macros, instead of a hard-wired-in code that incorrectly assumed a no-longerused representation of pointer-to-method values. And otherwise fix the relevant bit-rotted code. * valprint.c (type_print_base [case TYPE_CODE_STRUCT]): If there are both fields and methods, put a space between. * stabsread.c (read_struct_type): Fix bug in handling of GNU C++ anonymous type (indicated by CPLUS_MARKER followed by '_'). (It used to prematurely exit the loop reading in the fields, so it would think it should start reading methods while still in the fields. This could crash gdb given a gcc that can emit nested type information.) * valops.c (search_struct_method): Pass 'this' value by reference instead of by value. This provides a more consistent interface through a recursive search where the "bottom" functions may need to adjust offsets (due to multiple inheritance). * valops.c, value.h, values.c: Pass extra parameters to value_fn_field and value_virtual_fn_field so we can correctly adjust offset for multiple inheritance. * eval.c (evaluate_subexp [case OP_FUNCALL]): Simplify virtual function calls by using value_virtual_fn_field(). * values.c: New function baseclass_offset, derived from baseclass_addr (which perhaps can be made obsolete?). It returns an offset rather than an address. This is a cleaner interface since it doesn't mess around allocating new values. * valops.c (search_struct_method): Use baseclass_offset rather than baseclass_addr.
Diffstat (limited to 'gdb/gmalloc.c')
0 files changed, 0 insertions, 0 deletions