aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/riscv-tdep.c5
2 files changed, 9 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 62d7f54..2406c1a 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2018-11-14 Jim Wilson <jimw@sifive.com>
+
+ * riscv-tdep.c (riscv_call_arg_scalar_int): Use std::min when
+ setting len. New local align, set to max of arg align and xlen,
+ and pass to first riscv_assign_stack_location call.
+
2018-11-12 Simon Marchi <simon.marchi@polymtl.ca>
* skip.c (complete_skip_number): New function.
diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c
index 7a92fc7..b59cc6e 100644
--- a/gdb/riscv-tdep.c
+++ b/gdb/riscv-tdep.c
@@ -1925,12 +1925,13 @@ riscv_call_arg_scalar_int (struct riscv_arg_info *ainfo,
}
else
{
- int len = (ainfo->length > cinfo->xlen) ? cinfo->xlen : ainfo->length;
+ int len = std::min (ainfo->length, cinfo->xlen);
+ int align = std::max (ainfo->align, cinfo->xlen);
if (!riscv_assign_reg_location (&ainfo->argloc[0],
&cinfo->int_regs, len, 0))
riscv_assign_stack_location (&ainfo->argloc[0],
- &cinfo->memory, len, ainfo->align);
+ &cinfo->memory, len, align);
if (len < ainfo->length)
{