diff options
author | Joseph Myers <jsm@polyomino.org.uk> | 2011-09-23 14:50:26 +0000 |
---|---|---|
committer | Joseph Myers <jsm@polyomino.org.uk> | 2011-09-23 14:50:26 +0000 |
commit | f7b0a07b2cb854ea5d188a548a2fab3880cf6193 (patch) | |
tree | 4f80f7191e4963fb473088392fa6cf2bb8a1d42a | |
parent | a241a5aac63217dea24f79fd8c65adb5eadf092d (diff) | |
download | gdb-f7b0a07b2cb854ea5d188a548a2fab3880cf6193.tar.gz |
PR gdb/13079
* i386-tdep.c (i386_frame_align): New.
(i386_gdbarch_init): Use i386_frame_align.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/i386-tdep.c | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 677459cb97e..0838f02e274 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2011-09-23 Joseph Myers <joseph@codesourcery.com> + + PR gdb/13079 + * i386-tdep.c (i386_frame_align): New. + (i386_gdbarch_init): Use i386_frame_align. + 2011-09-23 Yao Qi <yao@codesourcery.com> * i386-linux-nat.c (i386_linux_resume): Use read_memory_unsigned_integer diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index 5fb2efb0deb..98dfd02278c 100644 --- a/gdb/i386-tdep.c +++ b/gdb/i386-tdep.c @@ -2228,6 +2228,15 @@ i386_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame) /* See the end of i386_push_dummy_call. */ return frame_id_build (fp + 8, get_frame_pc (this_frame)); } + +/* _Decimal128 function return values need 16-byte alignment on the + stack. */ + +static CORE_ADDR +i386_frame_align (struct gdbarch *gdbarch, CORE_ADDR sp) +{ + return sp & -(CORE_ADDR)16; +} /* Figure out where the longjmp will land. Slurp the args out of the @@ -7316,6 +7325,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) /* Call dummy code. */ set_gdbarch_push_dummy_call (gdbarch, i386_push_dummy_call); + set_gdbarch_frame_align (gdbarch, i386_frame_align); set_gdbarch_convert_register_p (gdbarch, i386_convert_register_p); set_gdbarch_register_to_value (gdbarch, i386_register_to_value); |