Fix print of value type in a corner case of finish
When doing finish in a function, if gdb fails to return a value, gdb also fails at printing the value type if this type is a struct. For example : (gdb) fin .... Value returned has type: . Cannot determine contents This patch fixes this by calling type_to_string to print the type so that we can support these types. This patch returns the following example output : (gdb) fin .... Value returned has type: struct test. Cannot determine contents Also, this patch modifies structs.exp to check that we return the correct type. gdb/ChangeLog: * gdb/infcmd.c (print_return_value): use type_to_string to print type. gdb/testsuite/ChangeLog: * gdb.base/structs.exp: Check for correct struct on finish.
This commit is contained in:
parent
c8071705c6
commit
2f41223f62
4 changed files with 16 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
2015-02-26 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
|
||||
* gdb/infcmd.c (print_return_value): use type_to_string to print type.
|
||||
|
||||
2015-02-26 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
* elfread.c (elf_read_minimal_symbols): Use bfd_alloc for
|
||||
|
|
|
@ -1607,10 +1607,16 @@ print_return_value (struct value *function, struct type *value_type)
|
|||
}
|
||||
else
|
||||
{
|
||||
struct cleanup *oldchain;
|
||||
char *type_name;
|
||||
|
||||
type_name = type_to_string (value_type);
|
||||
oldchain = make_cleanup (xfree, type_name);
|
||||
ui_out_text (uiout, "Value returned has type: ");
|
||||
ui_out_field_string (uiout, "return-type", TYPE_NAME (value_type));
|
||||
ui_out_field_string (uiout, "return-type", type_name);
|
||||
ui_out_text (uiout, ".");
|
||||
ui_out_text (uiout, " Cannot determine contents\n");
|
||||
do_cleanups (oldchain);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2015-02-26 Antoine Tremblay <antoine.tremblay@ericsson.com>
|
||||
|
||||
* gdb.base/structs.exp: Check for correct struct on finish.
|
||||
|
||||
2015-02-26 Yao Qi <yao.qi@linaro.org>
|
||||
|
||||
* lib/dwarf.exp (function_range): Adjust pattern when $func_length
|
||||
|
|
|
@ -428,7 +428,7 @@ proc test_struct_returns { n } {
|
|||
-re "Value returned is .*${gdb_prompt} $" {
|
||||
pass "${test}"
|
||||
}
|
||||
-re "Cannot determine contents.*${gdb_prompt} $" {
|
||||
-re "Value returned has type: struct struct$n. Cannot determine contents.*${gdb_prompt} $" {
|
||||
# Expected bad value. For the moment this is ok.
|
||||
set finish_value_known 0
|
||||
pass "${test}"
|
||||
|
|
Loading…
Reference in a new issue