diff options
author | Tom Tromey <tom@tromey.com> | 2018-04-21 22:42:00 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-10-04 22:51:47 -0600 |
commit | ef789dc484a35159ad825c98c4a2502f2097aed7 (patch) | |
tree | 110ef132487f5936ecef82c3f5dc3634fc4b7335 /gdb/msp430-tdep.c | |
parent | 3fba72f7612c071f07fc7e65887bd1e8e056e272 (diff) | |
download | fsf-binutils-gdb-ef789dc484a35159ad825c98c4a2502f2097aed7.zip fsf-binutils-gdb-ef789dc484a35159ad825c98c4a2502f2097aed7.tar.gz fsf-binutils-gdb-ef789dc484a35159ad825c98c4a2502f2097aed7.tar.bz2 |
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.
Diffstat (limited to 'gdb/msp430-tdep.c')
-rw-r--r-- | gdb/msp430-tdep.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c index b6e062a..427f58c 100644 --- a/gdb/msp430-tdep.c +++ b/gdb/msp430-tdep.c @@ -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 |