sim: callback: convert FS interfaces to 64-bit

Rather than rely on off_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:
Mike Frysinger 2021-04-24 14:40:43 -04:00
parent 00330cd18a
commit 2fbe9507bf
6 changed files with 24 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2021-05-14 Mike Frysinger <vapier@gentoo.org>
* sim/callback.h (struct host_callback_struct): Change lseek return and
3rd arg to int64_t. Change truncate & ftruncate 3rd arg to int64_t.
2021-05-14 Mike Frysinger <vapier@gentoo.org>
* callback.h: Include stdint.h.

View File

@ -73,7 +73,7 @@ struct host_callback_struct
int (*close) (host_callback *,int);
int (*get_errno) (host_callback *);
int (*isatty) (host_callback *, int);
int (*lseek) (host_callback *, int, long , int);
int64_t (*lseek) (host_callback *, int, int64_t, int);
int (*open) (host_callback *, const char*, int mode);
int (*read) (host_callback *,int, char *, int);
int (*read_stdin) ( host_callback *, char *, int);
@ -89,8 +89,8 @@ struct host_callback_struct
int (*to_stat) (host_callback *, const char *, struct stat *);
int (*to_fstat) (host_callback *, int, struct stat *);
int (*to_lstat) (host_callback *, const char *, struct stat *);
int (*ftruncate) (host_callback *, int, long);
int (*truncate) (host_callback *, const char *, long);
int (*ftruncate) (host_callback *, int, int64_t);
int (*truncate) (host_callback *, const char *, int64_t);
int (*pipe) (host_callback *, int *);
/* Called by the framework when a read call has emptied a pipe buffer. */

View File

@ -1,3 +1,11 @@
2021-05-14 Mike Frysinger <vapier@gentoo.org>
* callback.c (os_lseek): Change return and 3rd arg to int64_t.
(os_ftruncate): Change 3rd arg to int64_t.
(os_truncate): Change 3rd arg to int64_t.
* sim-io.c (sim_io_lseek): Change return and 3rd arg to int64_t.
* sim-io.h (sim_io_lseek): Likewise.
2021-05-14 Mike Frysinger <vapier@gentoo.org>
* callback.c (os_time): Change return to int64_t. Delete 2nd arg.

View File

@ -205,10 +205,10 @@ os_isatty (host_callback *p, int fd)
return result;
}
static int
os_lseek (host_callback *p, int fd, long off, int way)
static int64_t
os_lseek (host_callback *p, int fd, int64_t off, int way)
{
int result;
int64_t result;
result = fdbad (p, fd);
if (result)
@ -519,7 +519,7 @@ os_lstat (host_callback *p, const char *file, struct stat *buf)
}
static int
os_ftruncate (host_callback *p, int fd, long len)
os_ftruncate (host_callback *p, int fd, int64_t len)
{
int result;
@ -542,7 +542,7 @@ os_ftruncate (host_callback *p, int fd, long len)
}
static int
os_truncate (host_callback *p, const char *file, long len)
os_truncate (host_callback *p, const char *file, int64_t len)
{
#ifdef HAVE_TRUNCATE
int result;

View File

@ -211,10 +211,10 @@ sim_io_open (SIM_DESC sd,
}
int
int64_t
sim_io_lseek (SIM_DESC sd,
int fd,
long off,
int64_t off,
int way)
{
return STATE_CALLBACK (sd)->lseek (STATE_CALLBACK (sd), fd, off, way);

View File

@ -53,7 +53,7 @@ int sim_io_read (SIM_DESC sd, int, char *, int);
int sim_io_open (SIM_DESC sd, const char *, int);
int sim_io_lseek (SIM_DESC sd, int, long, int);
int64_t sim_io_lseek (SIM_DESC sd, int, int64_t, int);
int sim_io_isatty (SIM_DESC sd, int);