4f19a0e6b4
Using the default lookup for the symbol "this" might lead to segmentation fault in GDB. Some languages, e.g. Fortran, use as default lookup routine the C++ routines. For those languages "this" can be the instance of a class or even the definition of a class. When an instance of a class having the name "this" is evaluated in GDB a segmentation fault was observed. As example of the issue take into consideration the Fortran code: type foo real :: a type(bar) :: x character*7 :: b end type foo type(foo) :: this Issue appears when evaluating the variable "this" in GDB. Within the language definition structure there is a field that represents the name of the special symbol used for the C++ "this" for the language being described. The fix presented here takes into account the aforementioned field. In the case the aforementioned field is NULL "this" is not represented in the language described and the lookup should return a null_block_symbol. Tests: Performed tests with gfortran and ifort. Reviewed: https://sourceware.org/ml/gdb-patches/2016-04/msg00068.html After the commited patch: https://sourceware.org/ml/gdb-patches/2016-06/msg00364.html Patch can be applied. 2016-06-16 Walfred Tedeschi <walfred.tedeschi@intel.com> gdb/ChangeLog: * cp-namespace.c (cp_lookup_bare_symbol): Use language passed as parameter to look for the symbol "this". gdb/testsuite/ChangeLog: * gdb.fortran/derived-types.exp (result_line, result_line_2): New variables. (print this%a, print this%b, print this): New tests. * gdb.fortran/derived-types.f90 (this): New object and initialization. |
||
---|---|---|
.. | ||
array-element.exp | ||
array-element.f | ||
charset.exp | ||
charset.f90 | ||
common-block.exp | ||
common-block.f90 | ||
complex.exp | ||
complex.f | ||
derived-type-function.exp | ||
derived-type-function.f90 | ||
derived-type.exp | ||
derived-type.f90 | ||
exprs.exp | ||
library-module-lib.f90 | ||
library-module-main.f90 | ||
library-module.exp | ||
logical.exp | ||
logical.f90 | ||
module.exp | ||
module.f90 | ||
multi-dim.exp | ||
multi-dim.f90 | ||
nested-funcs.exp | ||
nested-funcs.f90 | ||
print-formatted.exp | ||
print-formatted.f90 | ||
subarray.exp | ||
subarray.f | ||
type.f90 | ||
types.exp | ||
vla-alloc-assoc.exp | ||
vla-datatypes.exp | ||
vla-datatypes.f90 | ||
vla-history.exp | ||
vla-ptr-info.exp | ||
vla-ptype-sub.exp | ||
vla-ptype.exp | ||
vla-sizeof.exp | ||
vla-sub.f90 | ||
vla-type.exp | ||
vla-type.f90 | ||
vla-value-sub-arbitrary.exp | ||
vla-value-sub-finish.exp | ||
vla-value-sub.exp | ||
vla-value.exp | ||
vla.f90 | ||
whatis_type.exp |