On 12/7/18 6:46 PM, Alistair Francis wrote: > When cross compilling for riscv32 hosts using GCC 8.2 this error is seen: > error: '__NR__llseek' undeclared (first use in this function); did you > mean '_llseek'? > > To avoid the error let's ensure that __NR__llseek is defined. > > Signed-off-by: Alistair Francis <alistair.fran...@wdc.com> > --- > linux-user/riscv/target_syscall.h | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/linux-user/riscv/target_syscall.h > b/linux-user/riscv/target_syscall.h > index ee81d8bc88..af73f71839 100644 > --- a/linux-user/riscv/target_syscall.h > +++ b/linux-user/riscv/target_syscall.h > @@ -47,6 +47,11 @@ struct target_pt_regs { > #endif > #define UNAME_MINIMUM_RELEASE "4.15.0" > > +/* This is sometimes needed to compile riscv32 Linux user mode */ > +#if !defined(__NR__llseek) && !defined(__NR_lseek) > +#define __NR__llseek __NR3264_lseek > +#endif
I'm not quite sure how this could be. Upstream I see #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) ... #define __NR_lseek __NR3264_lseek ... #else ... #define __NR_llseek __NR3264_lseek so this define should already exist. Do you have the wrong headers installed for the cross-build? r~