Le 06/04/2020 à 17:18, Andreas Schwab a écrit : > The glibc getcwd function returns different errors than the getcwd > syscall, which triggers an assertion failure in the glibc getcwd function > when running under the emulation. > > Signed-off-by: Andreas Schwab <sch...@suse.de> > --- > linux-user/syscall.c | 9 +-------- > 1 file changed, 1 insertion(+), 8 deletions(-) > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 83c2891169..90c5433fec 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -375,14 +375,7 @@ static bitmask_transtbl fcntl_flags_tbl[] = { > { 0, 0, 0, 0 } > }; > > -static int sys_getcwd1(char *buf, size_t size) > -{ > - if (getcwd(buf, size) == NULL) { > - /* getcwd() sets errno */ > - return (-1); > - } > - return strlen(buf)+1; > -} > +_syscall2(int, sys_getcwd1, char *, buf, size_t, size) > > #ifdef TARGET_NR_utimensat > #if defined(__NR_utimensat) >
According to the commit introducing the function, it could break fakeroot: commit 3b3f24add09f8ab720860d4840f9755c102121b5 Author: Aurelien Jarno <aurel...@aurel32.net> Date: Wed Apr 15 16:12:13 2009 +0000 linux-user: prefer glibc over direct syscalls The openat/*at syscalls are incredibly common with modern coreutils, calling them directly via syscalls breaks for example fakeroot. Use glibc stubs whenever directly available and provide old syscall calling for people still using older libc. Patch originally from Mika Westerberg, Adapted to apply to current trunk and cleaned up by Riku Voipio. Signed-off-by: Riku Voipio <riku.voi...@iki.fi> Signed-off-by: Aurelien Jarno <aurel...@aurel32.net> Thanks, Laurent