mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-16 20:32:21 +08:00
Avoid NULL dereference.
* stack.c (return_command): Guard use of SYMBOL_TYPE (thisfun). New variable func_type.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2009-02-11 Jim Meyering <meyering@redhat.com>
|
||||||
|
Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
Avoid NULL dereference.
|
||||||
|
* stack.c (return_command): Guard use of SYMBOL_TYPE (thisfun).
|
||||||
|
New variable func_type.
|
||||||
|
|
||||||
2009-02-11 Pedro Alves <pedro@codesourcery.com>
|
2009-02-11 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
|
||||||
* gdbarch.c: Regenerate.
|
* gdbarch.c: Regenerate.
|
||||||
|
11
gdb/stack.c
11
gdb/stack.c
@ -1823,7 +1823,8 @@ return_command (char *retval_exp, int from_tty)
|
|||||||
is discarded, side effects such as "return i++" still
|
is discarded, side effects such as "return i++" still
|
||||||
occur. */
|
occur. */
|
||||||
return_value = NULL;
|
return_value = NULL;
|
||||||
else if (using_struct_return (SYMBOL_TYPE (thisfun), return_type))
|
else if (thisfun != NULL
|
||||||
|
&& using_struct_return (SYMBOL_TYPE (thisfun), return_type))
|
||||||
{
|
{
|
||||||
query_prefix = "\
|
query_prefix = "\
|
||||||
The location at which to store the function's return value is unknown.\n\
|
The location at which to store the function's return value is unknown.\n\
|
||||||
@ -1856,10 +1857,12 @@ If you continue, the return value that you specified will be ignored.\n";
|
|||||||
{
|
{
|
||||||
struct type *return_type = value_type (return_value);
|
struct type *return_type = value_type (return_value);
|
||||||
struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
|
struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
|
||||||
gdb_assert (gdbarch_return_value (gdbarch, SYMBOL_TYPE (thisfun),
|
struct type *func_type = thisfun == NULL ? NULL : SYMBOL_TYPE (thisfun);
|
||||||
return_type, NULL, NULL, NULL)
|
|
||||||
|
gdb_assert (gdbarch_return_value (gdbarch, func_type, return_type, NULL,
|
||||||
|
NULL, NULL)
|
||||||
== RETURN_VALUE_REGISTER_CONVENTION);
|
== RETURN_VALUE_REGISTER_CONVENTION);
|
||||||
gdbarch_return_value (gdbarch, SYMBOL_TYPE (thisfun), return_type,
|
gdbarch_return_value (gdbarch, func_type, return_type,
|
||||||
get_current_regcache (), NULL /*read*/,
|
get_current_regcache (), NULL /*read*/,
|
||||||
value_contents (return_value) /*write*/);
|
value_contents (return_value) /*write*/);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user