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> 2021-05-14 Mike Frysinger <vapier@gentoo.org>
* callback.h: Include stdint.h. * callback.h: Include stdint.h.

View file

@ -73,7 +73,7 @@ struct host_callback_struct
int (*close) (host_callback *,int); int (*close) (host_callback *,int);
int (*get_errno) (host_callback *); int (*get_errno) (host_callback *);
int (*isatty) (host_callback *, int); 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 (*open) (host_callback *, const char*, int mode);
int (*read) (host_callback *,int, char *, int); int (*read) (host_callback *,int, char *, int);
int (*read_stdin) ( host_callback *, 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_stat) (host_callback *, const char *, struct stat *);
int (*to_fstat) (host_callback *, int, struct stat *); int (*to_fstat) (host_callback *, int, struct stat *);
int (*to_lstat) (host_callback *, const char *, struct stat *); int (*to_lstat) (host_callback *, const char *, struct stat *);
int (*ftruncate) (host_callback *, int, long); int (*ftruncate) (host_callback *, int, int64_t);
int (*truncate) (host_callback *, const char *, long); int (*truncate) (host_callback *, const char *, int64_t);
int (*pipe) (host_callback *, int *); int (*pipe) (host_callback *, int *);
/* Called by the framework when a read call has emptied a pipe buffer. */ /* 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> 2021-05-14 Mike Frysinger <vapier@gentoo.org>
* callback.c (os_time): Change return to int64_t. Delete 2nd arg. * 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; return result;
} }
static int static int64_t
os_lseek (host_callback *p, int fd, long off, int way) os_lseek (host_callback *p, int fd, int64_t off, int way)
{ {
int result; int64_t result;
result = fdbad (p, fd); result = fdbad (p, fd);
if (result) if (result)
@ -519,7 +519,7 @@ os_lstat (host_callback *p, const char *file, struct stat *buf)
} }
static int static int
os_ftruncate (host_callback *p, int fd, long len) os_ftruncate (host_callback *p, int fd, int64_t len)
{ {
int result; int result;
@ -542,7 +542,7 @@ os_ftruncate (host_callback *p, int fd, long len)
} }
static int 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 #ifdef HAVE_TRUNCATE
int result; int result;

View file

@ -211,10 +211,10 @@ sim_io_open (SIM_DESC sd,
} }
int int64_t
sim_io_lseek (SIM_DESC sd, sim_io_lseek (SIM_DESC sd,
int fd, int fd,
long off, int64_t off,
int way) int way)
{ {
return STATE_CALLBACK (sd)->lseek (STATE_CALLBACK (sd), fd, off, 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_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); int sim_io_isatty (SIM_DESC sd, int);