aboutsummaryrefslogtreecommitdiff
path: root/fesvr
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2021-03-25 16:35:50 -0700
committerAndrew Waterman <andrew@sifive.com>2021-03-25 16:35:50 -0700
commitb65ead89309305cbe7d257dec1694e827f827bff (patch)
treedb2ebb43373389a2001085e5d8e1e0fb5d46c752 /fesvr
parent3caa6e43493b9ee356d83d7dfa009ae78270ae4c (diff)
downloadriscv-isa-sim-b65ead89309305cbe7d257dec1694e827f827bff.zip
riscv-isa-sim-b65ead89309305cbe7d257dec1694e827f827bff.tar.gz
riscv-isa-sim-b65ead89309305cbe7d257dec1694e827f827bff.tar.bz2
Fix Ubuntu 16.04 build
Was broken by #681.
Diffstat (limited to 'fesvr')
-rw-r--r--fesvr/fesvr.ac5
-rw-r--r--fesvr/syscall.cc6
2 files changed, 11 insertions, 0 deletions
diff --git a/fesvr/fesvr.ac b/fesvr/fesvr.ac
index 9a211b1..7a68733 100644
--- a/fesvr/fesvr.ac
+++ b/fesvr/fesvr.ac
@@ -1,5 +1,10 @@
AC_CHECK_LIB(pthread, pthread_create, [], [AC_MSG_ERROR([libpthread is required])])
+AC_CHECK_MEMBER(struct statx.ino,
+ AC_DEFINE_UNQUOTED(HAVE_STATX, 1, [Define to 1 if struct statx exists.]),
+ ,
+)
+
AC_CHECK_MEMBER(struct statx.stx_mnt_id,
AC_DEFINE_UNQUOTED(HAVE_STATX_MNT_ID, 1, [Define to 1 if struct statx has stx_mnt_id.]),
,
diff --git a/fesvr/syscall.cc b/fesvr/syscall.cc
index 8a9b29b..298d851 100644
--- a/fesvr/syscall.cc
+++ b/fesvr/syscall.cc
@@ -64,6 +64,7 @@ struct riscv_statx_timestamp {
target_endian<int32_t> __reserved;
};
+#ifdef HAVE_STATX
struct riscv_statx
{
target_endian<uint32_t> mask;
@@ -134,6 +135,7 @@ struct riscv_statx
#endif
{}
};
+#endif
syscall_t::syscall_t(htif_t* htif)
: htif(htif), memif(&htif->memif()), table(2048)
@@ -303,6 +305,9 @@ reg_t syscall_t::sys_lstat(reg_t pname, reg_t len, reg_t pbuf, reg_t a3, reg_t a
reg_t syscall_t::sys_statx(reg_t fd, reg_t pname, reg_t len, reg_t flags, reg_t mask, reg_t pbuf, reg_t a6)
{
+#ifndef HAVE_STATX
+ return -ENOSYS;
+#else
std::vector<char> name(len);
memif->read(pname, len, &name[0]);
@@ -314,6 +319,7 @@ reg_t syscall_t::sys_statx(reg_t fd, reg_t pname, reg_t len, reg_t flags, reg_t
memif->write(pbuf, sizeof(rbuf), &rbuf);
}
return ret;
+#endif
}
#define AT_SYSCALL(syscall, fd, name, ...) \