On Mon, Dec 10, 2018 at 9:04 AM Richard Henderson <richard.hender...@linaro.org> wrote: > > 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?
I'm using Yocto for the cross build, so I don't see how I can get the wrong headers. I agree though that I probably shouldn't need this patch. Maybe it's something to do with the glibc fork I'm using. I'll drop this patch and see if I can figure out what's going on. Alistair > > > r~