Fix latent bug in msp430-tdep.c
-Wshadow=local found this latent bug. msp430-tdep.c does: const gdb_byte *arg_bits; { /* Aggregates of any size are passed by reference. */ gdb_byte struct_addr[4]; [... arg_bits = struct_addr; } ... use arg_bits Here, arg_bits can point to an object that's gone out of scope. The fix is to hoist the inner "struct_addr" buffer to an outer scope, and rename it to avoid shadowing. gdb/ChangeLog 2018-10-04 Tom Tromey <tom@tromey.com> * msp430-tdep.c (msp430_push_dummy_call): Rename inner "structs_addr" and hoist declaration.
This commit is contained in:
parent
3fba72f761
commit
ef789dc484
2 changed files with 8 additions and 4 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-10-04 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* msp430-tdep.c (msp430_push_dummy_call): Rename inner
|
||||
"structs_addr" and hoist declaration.
|
||||
|
||||
2018-10-04 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* linux-tdep.c (linux_make_mappings_corefile_notes): Introduce new
|
||||
|
|
|
@ -715,6 +715,7 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
|||
ULONGEST arg_size = TYPE_LENGTH (arg_type);
|
||||
int offset;
|
||||
int current_arg_on_stack;
|
||||
gdb_byte struct_addr_buf[4];
|
||||
|
||||
current_arg_on_stack = 0;
|
||||
|
||||
|
@ -722,11 +723,9 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
|||
|| TYPE_CODE (arg_type) == TYPE_CODE_UNION)
|
||||
{
|
||||
/* Aggregates of any size are passed by reference. */
|
||||
gdb_byte struct_addr[4];
|
||||
|
||||
store_unsigned_integer (struct_addr, 4, byte_order,
|
||||
store_unsigned_integer (struct_addr_buf, 4, byte_order,
|
||||
value_address (arg));
|
||||
arg_bits = struct_addr;
|
||||
arg_bits = struct_addr_buf;
|
||||
arg_size = (code_model == MSP_LARGE_CODE_MODEL) ? 4 : 2;
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Add table
Reference in a new issue