mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
sim: callback: convert time interface to 64-bit
PR sim/27705 Rather than rely on time_t being the right size between the host & target, have the interface always be 64-bit. We can figure out if we need to truncate when actually outputting it to the right target.
This commit is contained in:
parent
fcf102ba7a
commit
00330cd18a
@ -1,3 +1,9 @@
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* callback.h: Include stdint.h.
|
||||
(struct host_callback_struct): Change time return to int64_t. Delete
|
||||
2nd arg.
|
||||
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* callback.h (p1, p2): Change PTR to void*.
|
||||
|
@ -47,6 +47,7 @@
|
||||
|
||||
#include <ansidecl.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdint.h>
|
||||
/* Needed for enum bfd_endian. */
|
||||
#include "bfd.h"
|
||||
|
||||
@ -78,7 +79,7 @@ struct host_callback_struct
|
||||
int (*read_stdin) ( host_callback *, char *, int);
|
||||
int (*rename) (host_callback *, const char *, const char *);
|
||||
int (*system) (host_callback *, const char *);
|
||||
long (*time) (host_callback *, long *);
|
||||
int64_t (*time) (host_callback *);
|
||||
int (*unlink) (host_callback *, const char *);
|
||||
int (*write) (host_callback *,int, const char *, int);
|
||||
int (*write_stdout) (host_callback *, const char *, int);
|
||||
|
@ -1,3 +1,7 @@
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* armos.c (ARMul_OSHandleSWI): Delete 2nd arg to time callback.
|
||||
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* armos.c: Update include path.
|
||||
|
@ -437,7 +437,7 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number)
|
||||
case SWI_Time:
|
||||
if (swi_mask & SWI_MASK_DEMON)
|
||||
{
|
||||
state->Reg[0] = (ARMword) sim_callback->time (sim_callback, NULL);
|
||||
state->Reg[0] = (ARMword) sim_callback->time (sim_callback);
|
||||
OSptr->ErrorNo = sim_callback->get_errno (sim_callback);
|
||||
}
|
||||
else
|
||||
@ -592,7 +592,7 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number)
|
||||
break;
|
||||
|
||||
case AngelSWI_Reason_Time:
|
||||
state->Reg[0] = (ARMword) sim_callback->time (sim_callback, NULL);
|
||||
state->Reg[0] = (ARMword) sim_callback->time (sim_callback);
|
||||
OSptr->ErrorNo = sim_callback->get_errno (sim_callback);
|
||||
break;
|
||||
|
||||
@ -781,7 +781,7 @@ ARMul_OSHandleSWI (ARMul_State * state, ARMword number)
|
||||
break;
|
||||
|
||||
case 17: /* Utime. */
|
||||
state->Reg[0] = state->Reg[1] = (ARMword) sim_callback->time (sim_callback, NULL);
|
||||
state->Reg[0] = state->Reg[1] = (ARMword) sim_callback->time (sim_callback);
|
||||
OSptr->ErrorNo = sim_callback->get_errno (sim_callback);
|
||||
break;
|
||||
|
||||
|
@ -1,3 +1,12 @@
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* callback.c (os_time): Change return to int64_t. Delete 2nd arg.
|
||||
(os_fstat): Delete 2nd arg to time callback.
|
||||
* sim-io.c (sim_io_time): Change return to int64_t. Delete 2nd arg
|
||||
to time callback.
|
||||
* sim-io.h (sim_io_time): Change return to int64_t.
|
||||
* syscall.c (cb_syscall): Delete 2nd arg to time callback.
|
||||
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* callback.c (cb_host_to_target_stat): Change PTR to void*.
|
||||
|
@ -420,12 +420,12 @@ os_system (host_callback *p, const char *s)
|
||||
return result;
|
||||
}
|
||||
|
||||
static long
|
||||
os_time (host_callback *p, long *t)
|
||||
static int64_t
|
||||
os_time (host_callback *p)
|
||||
{
|
||||
long result;
|
||||
int64_t result;
|
||||
|
||||
result = time (t);
|
||||
result = time (NULL);
|
||||
p->last_errno = errno;
|
||||
return result;
|
||||
}
|
||||
@ -466,7 +466,7 @@ os_fstat (host_callback *p, int fd, struct stat *buf)
|
||||
if (p->ispipe[fd])
|
||||
{
|
||||
#if defined (HAVE_STRUCT_STAT_ST_ATIME) || defined (HAVE_STRUCT_STAT_ST_CTIME) || defined (HAVE_STRUCT_STAT_ST_MTIME)
|
||||
time_t t = (*p->time) (p, NULL);
|
||||
time_t t = (*p->time) (p);
|
||||
#endif
|
||||
|
||||
/* We have to fake the struct stat contents, since the pipe is
|
||||
|
@ -68,11 +68,10 @@ sim_io_unlink (SIM_DESC sd,
|
||||
}
|
||||
|
||||
|
||||
long
|
||||
sim_io_time (SIM_DESC sd,
|
||||
long *t)
|
||||
int64_t
|
||||
sim_io_time (SIM_DESC sd)
|
||||
{
|
||||
return STATE_CALLBACK (sd)->time (STATE_CALLBACK (sd), t);
|
||||
return STATE_CALLBACK (sd)->time (STATE_CALLBACK (sd));
|
||||
}
|
||||
|
||||
|
||||
|
@ -31,7 +31,7 @@ int sim_io_shutdown (SIM_DESC sd);
|
||||
|
||||
int sim_io_unlink (SIM_DESC sd, const char *);
|
||||
|
||||
long sim_io_time (SIM_DESC sd, long *);
|
||||
int64_t sim_io_time (SIM_DESC sd);
|
||||
|
||||
int sim_io_system (SIM_DESC sd, const char *);
|
||||
|
||||
|
@ -588,7 +588,7 @@ cb_syscall (host_callback *cb, CB_SYSCALL *sc)
|
||||
We might also want gettimeofday or times, but if system calls
|
||||
can be built on others, we can keep the number we have to support
|
||||
here down. */
|
||||
time_t t = (*cb->time) (cb, (time_t *) 0);
|
||||
time_t t = (*cb->time) (cb);
|
||||
result = t;
|
||||
/* It is up to target code to process the argument to time(). */
|
||||
}
|
||||
|
@ -1,3 +1,8 @@
|
||||
2021-05-14 Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* traps.c (cris_break_13_handler): Delete 2nd arg to time callback.
|
||||
(cris_time): Change return to int64_t. Delete 2nd arg.
|
||||
|
||||
2021-05-04 Tom Tromey <tromey@adacore.com>
|
||||
|
||||
* mloop.in: Include <stdlib.h>.
|
||||
|
@ -2234,7 +2234,7 @@ cris_break_13_handler (SIM_CPU *current_cpu, USI callnum, USI arg1,
|
||||
|
||||
case TARGET_SYS_time:
|
||||
{
|
||||
retval = (int) (*cb->time) (cb, 0L);
|
||||
retval = (int) (*cb->time) (cb);
|
||||
|
||||
/* At time of this writing, CB_SYSCALL_time doesn't do the
|
||||
part of setting *arg1 to the return value. */
|
||||
@ -3327,13 +3327,10 @@ cris_pipe_empty (host_callback *cb,
|
||||
|
||||
/* We have a simulator-specific notion of time. See TARGET_TIME. */
|
||||
|
||||
static long
|
||||
cris_time (host_callback *cb ATTRIBUTE_UNUSED, long *t)
|
||||
static int64_t
|
||||
cris_time (host_callback *cb ATTRIBUTE_UNUSED)
|
||||
{
|
||||
long retval = TARGET_TIME (current_cpu_for_cb_callback);
|
||||
if (t)
|
||||
*t = retval;
|
||||
return retval;
|
||||
return TARGET_TIME (current_cpu_for_cb_callback);
|
||||
}
|
||||
|
||||
/* Set target-specific callback data. */
|
||||
|
Loading…
Reference in New Issue
Block a user