diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4d75eeaee2..1d511ac516 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2015-12-17 Yao Qi + + * aarch64-tdep.c (struct stack_item_t): Update comments. + (pass_on_stack): Set item.data to NULL. + (aarch64_push_dummy_call): Call write_memory if si->data + isn't NULL. + 2015-12-16 Pedro Alves * configure.ac (compiler warning flags): When testing a diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c index 2d1df03e19..f4763bb4f9 100644 --- a/gdb/aarch64-tdep.c +++ b/gdb/aarch64-tdep.c @@ -855,7 +855,8 @@ aarch64_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum, typedef struct { - /* Value to pass on stack. */ + /* Value to pass on stack. It can be NULL if this item is for stack + padding. */ const gdb_byte *data; /* Size in bytes of value to pass on stack. */ @@ -1124,7 +1125,7 @@ pass_on_stack (struct aarch64_call_info *info, struct type *type, int pad = align - (info->nsaa & (align - 1)); item.len = pad; - item.data = buf; + item.data = NULL; VEC_safe_push (stack_item_t, info->si, &item); info->nsaa += pad; @@ -1382,7 +1383,8 @@ aarch64_push_dummy_call (struct gdbarch *gdbarch, struct value *function, stack_item_t *si = VEC_last (stack_item_t, info.si); sp -= si->len; - write_memory (sp, si->data, si->len); + if (si->data != NULL) + write_memory (sp, si->data, si->len); VEC_pop (stack_item_t, info.si); }