From: Tom Tromey Date: Sun, 22 Apr 2018 04:42:00 +0000 (-0600) Subject: Fix latent bug in msp430-tdep.c X-Git-Tag: users/ARM/embedded-binutils-master-2018q4~512 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ef789dc484a35159ad825c98c4a2502f2097aed7;p=platform%2Fupstream%2Fbinutils.git 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 * msp430-tdep.c (msp430_push_dummy_call): Rename inner "structs_addr" and hoist declaration. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index c547ee9..9a8390b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2018-10-04 Tom Tromey + * msp430-tdep.c (msp430_push_dummy_call): Rename inner + "structs_addr" and hoist declaration. + +2018-10-04 Tom Tromey + * linux-tdep.c (linux_make_mappings_corefile_notes): Introduce new variable "size". 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