* traps.c (cris_break_13_handler): Pass lseek

offset parameter as sign-extended.
This commit is contained in:
Hans-Peter Nilsson 2010-10-06 23:44:33 +00:00
parent 1c3e1c03ee
commit 7cf1d8af2f
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2010-10-07 Hans-Peter Nilsson <hp@axis.com>
* traps.c (cris_break_13_handler): Pass lseek
offset parameter as sign-extended.
2010-05-26 Ozkan Sezer <sezeroz@gmail.com>
* dv-rv.c (hw_rv_init_socket): Check error return from socket() call

View File

@ -1478,6 +1478,14 @@ cris_break_13_handler (SIM_CPU *current_cpu, USI callnum, USI arg1,
s.arg2 = arg2;
s.arg3 = arg3;
/* The type of s.arg2 is long, so for hosts with 64-bit longs, we need
to sign-extend the lseek offset to be passed as a signed number,
else we'll truncate it to something > 2GB on hosts where sizeof
long > sizeof USI. We avoid doing it for all syscalls, as arg2 is
e.g. an address for some syscalls. */
if (callnum == TARGET_SYS_lseek)
s.arg2 = (SI) arg2;
if (callnum == TARGET_SYS_exit_group
|| (callnum == TARGET_SYS_exit && current_cpu->m1threads == 0))
{