Skip to content
Tags give the ability to mark specific points in history as being important
  • v5.3.1
  • v5.3.0
  • v5.2.0
    58cfd864 · Prepare for release ·
  • v5.2.0-alpha
  • v5.1.0
    ba0f344c · Update PRoot changelog. ·
    Release v5.1.0
    ==============
    
    New features
    ------------
    
    + Processes under PRoot now appear with their real names, that is,
      they are not renamed "ld-linux.so" or "prooted-..." anymore:
    
      before:
    
          $ proot-v4.0.3 ps
            PID TTY          TIME CMD
           7885 pts/11   00:00:00 bash
           8131 pts/11   00:00:00 proot-v4.0.3
           8132 pts/11   00:00:00 ld-2.17.so
    
          $ proot-v5.0.0 ps
            PID TTY          TIME CMD
           7885 pts/11   00:00:00 bash
           7916 pts/11   00:00:00 proot-v5.0.0
           7917 pts/11   00:00:00 prooted-7916-Jb
    
      now:
    
          $ proot-v5.1.0 ps
            PID TTY          TIME CMD
           7885 pts/11   00:00:00 bash
           8585 pts/11   00:00:00 proot-v5.1.0
           8586 pts/11   00:00:00 ps
    
    Fixes
    -----
    
    + It is now possible to use GDB against multi-threaded programs under
      PRoot x86_64 and x86.
    
    + It is possible to execute x86_64 programs from x86 programs again.
    
    + It is possible to use x86 ptrace-based programs (strace, gdb, ...)
      under PRoot x86_64 again.
    
    + The loader is now built with the "build-id" linker option explicitly
      disabled.  This special section might interfere with loaded
      programs.
    
    + The loader can now load relocatable objects that have a predefined
      base address.
    
    Acknowledgements
    ----------------
    
    Thanks to Erwan Gouriou, Sébastien Gandon, Christian milkylainen,
    Henrik Wallin, and Frank Teo for their bug reports and tests.
    
    Thanks to Jérôme Audu, Yann Droneaud, and Christophe Monat for their
    precious help.
    
    Validation
    ----------
    
    ====================  =================  ==============  =================  =========
    testsuite                   host distro    guest distro     configurations   comments
    ====================  =================  ==============  =================  =========
    proot-v5.1            Slack-14.1/x86_64            none                N/A          a
    proot-v5.1/memcheck   Slack-14.1/x86_64            none                N/A          a
    proot-v5.1/asan       Slack-14.1/x86_64            none                N/A          a
    proot-v5.1/talleak    Slack-14.1/x86_64            none                N/A          a
    
    proot-v5.1                 OBS */x86_64            none                N/A          b
    proot-v5.1                    OBS */x86            none                N/A          c
    proot-v5.1              STLinux-2.4/arm            none                N/A          d
    
    libuv-0.10.27         Slack-14.1/x86_64    same as host               none          a
    libuv-0.10.27         Slack-14.1/x86_64    same as host   kompat, fake_id0          l
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.1/x86               none          a
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          l
    
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host               none          f
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host   kompat, fake_id0          n
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.1/x86               none          j
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          t
    
    ltp-opt-20130904      Slack-14.1/x86_64    same as host               none          g
    ltp-opt-20130904      Slack-14.1/x86_64    same as host   kompat, fake_id0          m
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.1/x86               none          i
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          u
    
    perl-5.18.1           Slack-14.1/x86_64    same as host               none          a
    perl-5.18.1           Slack-14.1/x86_64    same as host   kompat, fake_id0          k
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/x86               none          a
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          k
    
    gdb-7.6.1             Slack-14.1/x86_64    same as host               none       r, o
    gdb-7.6.1             Slack-14.1/x86_64    same as host   kompat, fake_id0        N/A
    gdb-7.6.1             Slack-14.1/x86_64  Slack-14.1/x86               none       r, p
    gdb-7.6.1             Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0        N/A
    
    coreutils-8.21        Slack-14.1/x86_64    same as host               none          e
    coreutils-8.21        Slack-14.1/x86_64    same as host   kompat, fake_id0          q
    coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/x86               none          h
    coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/x86   kompat, fake_id0          s
    
    proot-v3.2.2          Slack-14.1/x86_64    same as host               none          a
    proot-v3.2.2          Slack-14.1/x86_64    same as host           fake_id0         N/A
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.1/x86               none       r, a
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.1/x86           fake_id0         N/A
    
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.2.0          w
    coreutils-8.21        Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.2.0          v
    
    performance           Slack-14.1/x86_64            none               none          XXX
    Coverity Scan         Travis-CI                     N/A                N/A          a
    Clang 3.3             Slack-14.1/x86_64             N/A                N/A          a
    ====================  =================  ==============  =================  =========
    
    a: is OK or nothing special to report.
    
    b: test-ptrace01 fails sometimes on x86_64.
    
    c: fails on some AMD CPUs.  No explanations yet.
    
    d: ptrace emulation doesn't work.
    
    e: failures = rm/deep-2, misc/cut-huge-to-eol-range, misc/csplit-heap,
                  du/long-from-unreadable, install/basic-1, mkdir/p-3
    
    f: failures = brk01, creat07, execve04, mremap03, msync03, pwrite03,
                  pwrite03_64, rmdir02
    
    g: failures = sigaction_4-40, getoverrun_2-3
    
    h: failures = rm/deep-2, du/long-from-unreadable, install/basic-1,
                  mkdir/p-3
    
    i: failures = mmap_31-1, timer_getoverrun_2-3
    
    j: failures = bdflush01, creat07, execve04, ftruncate04,
                  ftruncate04_64, modify_ldt01, mremap03, msync03,
                  pwrite03, pwrite03_64, rmdir02, socketcall01
    
    k: failures = File-Path/Path, HTTP-Tiny/002_croakage,
                  HTTP-Tiny/003_agent, Net-Ping/110_icmp_inst,
                  Net-Ping/500_ping_icmp, Net-Ping/520_icmp_ttl.t
    
    l: failures = signal_multiple_loops, fs_chown
    
    m: failures = fork_1-1, sem_unlink_3-1, timer_getoverrun_2-3
    
    n: failures = 153/1024
    
    o: failures = break-interp, break, checkpoint.exp, foll-exec,
                  foll-vfork.exp
    
    p: failures = break-interp, call-sc, callfuncs, checkpoint,
                  find-unmapped, finish, float, foll-exec, foll-vfork,
                  hbreak2, interrupt
    
    q: failures = chgrp/basic, chgrp/deref, chgrp/recurse,
                  misc/cut-huge-to-eol-range, misc/csplit-heap,
                  misc/id-setgid, misc/xattr, du/long-from-unreadable,
                  ls/file-type, ls/no-cap, ls/stat-free-color,
                  ls/stat-free-symlinks, mv/atomic, mv/atomic2,
                  chown/basic, cp/special-bits, cp/preserve-gid,
                  install/install-C-root, ls/capability, ls/nameless-uid,
                  misc/chroot-credentials, mv/sticky-to-xpart,
                  rm/fail-2eperm, rm/no-give-up
    
    r: have to be run in -j1
    
    s: failures = chgrp/basic, chgrp/deref, chgrp/recurse, misc/id-setgid,
                  misc/xattr, du/long-from-unreadable, ls/file-type,
                  ls/no-cap, ls/stat-free-color, ls/stat-free-symlinks,
                  mv/atomic, mv/atomic2, chown/basic, cp/preserve-gid,
                  cp/special-bits, install/install-C-root, ls/capability,
                  ls/nameless-uid, misc/chroot-credentials,
                  mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up,
    
    t: failures = 172/1024
    
    u: failures = fork_1-1, mmap_31-1, sem_unlink_3-1, timer_getoverrun_2-3
    
    v: failures = rm/deep-2, misc/env, misc/printenv, split/fail,
                  dd/skip-seek, dd/skip-seek-past-file,
                  du/long-from-unreadable, install/basic, mkdir/p-3
    
    w: failures = HTTP-Tiny/002_croakage, HTTP-Tiny/003_agent, op/magic
  • v5.0.0
    49dc17c9 · Update PRoot roadmap. ·
    Release v5.0.0
    ==============
    
    Highlight
    ---------
    
    PRoot used to rely on the ELF loader embedded in the ELF interpreter
    from the GNU libc.  Sadly this latter suffers from many issues:
    
    * programs that use constructors or destructors might crash: a typical
      example is C++ programs.
    
    * programs that rely on the "rpath" mechanism and that are invoked
      through a symlink might not start: a typical example is the JVM on
      Debian.
    
    * programs that read processes command-line migth be confused because
      initial argv[0] is replaced: typical examples are ps and top.
    
    Moreover not all ELF interpreters provide this feature.  For instance,
    ELF interpreters shipped with Bionic (Android) and some versions of
    the uClibC can't be used as ELF loaders.  As a consequence it was not
    possible to proot into a rootfs that uses such C library.
    
    Now PRoot has its own loader, that means all the limitations above
    doesn't exist anymore.
    
    Fixes
    -----
    
    * Most bugs related to shebang support -- ie. "#!" at the beginning of
      a program -- were fixed.
    
    Command-line interface changes
    ------------------------------
    
    * PRoot now starts a login shell when no command is specified; this
      makes the shell read profile files from the guest rootfs, as
      expected by some guest programs.  To get the old behavior, launch
      "/bin/sh" explicitly:
    
          proot -r whatever /bin/sh
    
    * The -R option now binds "/run" and "/var/run/dbus/system_bus_socket"
      too.  This is useful for guest programs that need to communicate
      with host services.
    
    Validation
    ----------
    
    ====================  =================  ==============  =================  =========
    testsuite                   host distro    guest distro     configurations   comments
    ====================  =================  ==============  =================  =========
    proot-v4.0                 OBS */x86_64            none                N/A          a
    proot-v4.0                    OBS */x86            none                N/A          b
    proot-v4.0              STLinux-2.4/arm            none                N/A          c
    
    proot-v4.0            Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/memcheck   Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/asan       Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/talleak    Slack-14.1/x86_64            none                N/A          a
    
    libuv-0.10.27         Slack-14.1/x86_64    same as host               none          a
    libuv-0.10.27         Slack-14.1/x86_64    same as host   kompat, fake_id0          h
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.0/x86               none          a
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          h
    
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host               none          d
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host   kompat, fake_id0          i
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86               none          q
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          i
    
    ltp-opt-20130904      Slack-14.1/x86_64    same as host               none          g
    ltp-opt-20130904      Slack-14.1/x86_64    same as host   kompat, fake_id0       k, g
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.0/x86               none          r
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0    u, r, g
    
    perl-5.18.1           Slack-14.1/x86_64    same as host               none          a
    perl-5.18.1           Slack-14.1/x86_64    same as host   kompat, fake_id0          j
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86               none          a
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          j
    
    gdb-7.6.1             Slack-14.1/x86_64    same as host               none          f
    gdb-7.6.1             Slack-14.1/x86_64    same as host   kompat, fake_id0          l
    gdb-7.6.1             Slack-14.1/x86_64  Slack-14.0/x86               none          c
    gdb-7.6.1             Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          c
    
    coreutils-8.21*       Slack-14.1/x86_64    same as host               none          e
    coreutils-8.21*       Slack-14.1/x86_64    same as host   kompat, fake_id0       m, s
    coreutils-8.21*       Slack-14.1/x86_64  Slack-14.0/x86               none          p
    coreutils-8.21*       Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          s
    
    proot-v3.2.2          Slack-14.1/x86_64    same as host               none          a
    proot-v3.2.2          Slack-14.1/x86_64    same as host           fake_id0          a
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.0/x86               none          c
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.0/x86           fake_id0          c
    
    perl-5.16.1           Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.1.2          o
    coreutils-8.19        Slack-14.1/x86_64  Slack-14.1/ARM         qemu-2.1.2          n
    
    performance           Slack-14.1/x86_64            none               none          t
    Coverity Scan         Travis-CI                     N/A                N/A          a
    Clang 3.3             Slack-14.1/x86_64             N/A                N/A          a
    ====================  =================  ==============  =================  =========
    
    a: is OK or nothing special to report.
    
    b: fails on some AMD CPUs.  No explanations yet.
    
    c: ptrace emulation doesn't work.
    
    d: failures = brk01, creat07, execve04, mremap03, msync03, pwrite03,
                  pwrite03_64, rmdir02
    
    e: failures = rm/deep-2 misc/cut-huge-to-eol-range misc/csplit-heap
                  du/long-from-unreadable install/basic-1 mkdir/p-3
    
    f: failures = break-interp, foll-exec, info-os, pie-execl*, restore*,
                  store*, valgrind-db-attach*
    
    g: failures = timer_getoverrun_2-3
    
    h: failures = signal_multiple_loops, fs_chown
    
    i: too many failures to be listed here.  These failures are mostly
       related to the fake_id0 extensions but are not unexpected.
    
    j: failures = Path.t, 110_icmp_inst.t, 500_ping_icmp.t, 520_icmp_ttl.t
    
    k: failures = fork_1-1, sem_unlink_3-1, timer_getoverrun_2-2
    
    l: failures = attach-pie-noexec, break-interp, fileio, foll-exec,
                  info-os, longjmp, morestack
    
    m: failures = misc/cut-huge-to-eol-range, misc/csplit-heap,
                  ls/no-cap, ls/stat-free-color,
                  ls/stat-free-symlinks, mv/atomic2,
    
                  misc/id-setgid, misc/xattr, du/long-from-unreadable,
                  ls/file-type, chown/basic, cp/preserve-gid,
                  cp/special-bits, install/install-C-root, ls/capability,
                  ls/nameless-uid, misc/chroot-credentials,
                  mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up
    
    n: failures = rm/deep-2, misc/env, misc/printenv, split/fail,
                  misc/stty*, dd/skip-seek, dd/skip-seek-past-file,
                  du/long-from-unreadable, install/basic-1, mkdir/p-3
    
    o: failures = op/magic.t
    
    p: failures = rm/deep-2, du/long-from-unreadable, install/basic-1,
                  mkdir/p-3
    
    q: failures = bdflush01, creat07, execve04, modify_ldt01, mremap03,
                  msync03, pwrite03, pwrite03_64, rmdir02, socketcall01
    
    r: failures = mmap_31-1
    
    s: failures = misc/id-setgid, misc/xattr, du/long-from-unreadable,
                  ls/file-type, chown/basic, cp/preserve-gid,
                  cp/special-bits, install/install-C-root, ls/capability,
                  ls/nameless-uid, misc/chroot-credentials,
                  mv/sticky-to-xpart, rm/fail-2eperm, rm/no-give-up
    
    t: the loader has introduced a small overhead < 2%
    
    u: failures = fork_1-1 sem_unlink_3-1 timer_getoverrun_2-3
    
    * new
  • care-v2.2.1
  • v4.0.3
    Release v4.0.3
    ==============
    
    + Heap emulation is disabled when a "suspicious" call to brk(2) is
      actually legit, as it might be the case when launching the very
      first program.
    
    + The "-0" and "-S" options ("root" identity emulation) now fake
      success of mknodat(2), as it was the case for mknod(2) previously.
      This missing feature was revealed by the AArch64 port.
    
    + The "-k" option (kernel compatibility emulation) now works on
      Linux/AArch64.
    
    Thanks to Rémi Duraffort for the bug reports and for his LAVA testing
    platform!
  • care-v2.2
    CARE v2.2
    =========
    
    + Special characters in environment variables are now correctly quoted
      in the generated "re-execute.sh" script.  For instance, the value of
      "COMP_WORDBREAKS" environment variable on Ubuntu used to make CARE
      generate broken "re-execute.sh" scripts.
    
    + It is now possible to deliver CARE as a dynamically linked binary.
      In this case, the self-extracting format is not supported since one
      can't assume the re-execution environment contains all the
      pre-requisites (libtalloc, libarchive, proot).  Thus, CARE and PRoot
      should be deployed independently on the re-execution environment.
    
    + Syscall are now emulated only if it is really needed.
    
    This release is based on PRoot v4.0.3, so it contains all the
    following generic fixes too:
    
      https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.0
      https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.1
      https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.2
      https://github.com/cedric-vincent/PRoot/releases/tag/v4.0.3
  • v4.0.2
    Release v4.0.2
    ==============
    
    + Fix how the very first program is launched by PRoot.  Previously,
      argv[0] was not preserved when the very first program was launched
      through a symbolic link.  This old behavior used to bug programs
      like Busybox and python-exec.  Thanks to "hhm", Ivailo "fluxer"
      Monev, and Joakim Tjernlund for the bug reports.
    
    + Fix renameat(2) sysexit support.  There was a bug in PRoot that was
      exposed by the Aarch64 (a.k.a arm64) port only but that might affect
      other architectures.
    
    + Fix build for AArch64.  Thanks to Rémi Duraffort for the patches and
      for the Debian/arm64 testing platform.
    
    + Fix support for "long" socket paths.  These can only be 108 bytes
      long; this limit might be easily reached with PRoot since the path
      to the rootfs is always prepended.  The solution was to
      automatically bind this long path to a shorter path.  This bug was
      exposed by LibreOffice and Yocto's pseudo.  Thanks to Christophe
      Guillon for the bug report.
  • v4.0.1
    bc4ddac7 · Fix typo: s/Rémy/Rémi/ ·
    Release v4.0.1
    ==============
    
    + Fix a couple of portability issues in the testsuite.  Thanks to Rémi
      Duraffort for all the tests he made on his instance of Linaro LAVA.
    
    + Set $PWD to the value specified by the -w option, otherwise Bash pwd
      builtin might be confused under some specific circumstances.  Thanks
      to Jérémy Bobbio for the bug report.
    
    + Fix support for accessat and fchmodat syscalls: they have only three
      parameters, not four.  This bug was exposed by Gentoo's sandbox:
    
          proot -S gentoo-amd64-hardened+nomultilib-rootfs emerge util-linux
  • v4.0.0
    Release v4.0.0
    ==============
    
    Highlights
    ----------
    
    + It is now possible to use GDB, Strace, or any other program based on
      "ptrace" under PRoot.  This was not the case previously because it
      is not possible to stack ptracers on Linux, so an emulation layer
      was developed in order to bypass this limitation.  This has required
      a lot of changes in PRoot, hence the major number version bumping.
      It was mostly tested on x86_64, and partially tested on x86 and ARM.
      This ptrace emulation support is still experimental, and there are a
      couple of known issues, but feel free to report unexpected behaviors
      if you need a fix.
    
    + A new command-line option is available: "-S".  It is similar to the
      "-R" option expect it enables the "-0" option and binds only a
      minimal set of paths that are known to not be updated by package
      installations, to avoid unexpected changes on host files.  This
      option is useful to safely create and install packages into the
      guest rootfs.  For example:
    
          $ proot -S ubuntu-14.04-rootfs/ apt-get install samba
    
      or:
    
          $ proot -S ubuntu-14.04-rootfs/
          # apt-get install samba
    
      If "-0 -R" is used instead of "-S", the same command fails since it
      tries to update "/etc/group", which is bound to the host system and
      is not writable (assuming PRoot is ran without privileges):
    
          $ proot -0 -R ubuntu-14.04-rootfs/
          # apt-get install samba
          [...]
          Adding group `sambashare' (GID 105) ...
          Permission denied
    
    + The fake_id0 extension can now fake any user and group identifiers.
      That means, when "-0" is specified, PRoot-ed processes can change
      their real, effective and saved identifiers, with respect to the
      rules described in setuid, setfsuid, setreuid, setresuid, and
      setfsuid manuals.  Also, the new command-line option "-i" was added
      to change explicitly the identifiers to the specified values.  This
      option will be used by CARE to re-execute with the same initial
      identifiers, but it could also be useful to threaten your teammates
      ;).  Note that the "-0" option is actually the same as "-i 0:0".
    
    + The old command-line interface is not supported anymore.  That means
      it is now impossible to specify the path to the guest rootfs without
      using -r or -R.  Also, -Q and -B options are definitively gone,
      instead the -R option must be specified, respectively with and
      without -q.  See PRoot v3.1 release notes for details.
    
    Fixes
    -----
    
    + getcwd(2) and chdir(2) now return the correct error code when,
      respectively, the current directory does not exist anymore and the
      target directory doesn't have the "search" permission.
    
    + Named file descriptors (ie. links in /proc/<pid>/fd/*) are not
      dereferenced anymore since they may point to special objects like
      pipes, sockets, inodes, ...  Such objects do not exist on the
      file-system name-space, so dereferencing them used to cause
      unexpected errors.
    
    + Extensions now see every component of canonicalized paths.  An
      optimization in the canonicalization loop used to skip the first
      part of a path if it was known to be already canonicalized, sadly
      this short-cut may confuse some extensions, like -0.
    
    + Temporary files and directories created by PRoot for its own purpose
      are now automatically deleted when PRoot exits.
    
    Miscellaneous
    -------------
    
    + PRoot does not rely on GCC C extensions anymore, like nested
      functions.  That means its stack does not have to be executable
      (this is required for hardened Linux systems), and it can now be
      compiled with Clang.
    
    + The ASLR (Address Space Layout Randomization) is not disabled
      anymore, and the heap is now emulated on all architectures.
    
    Internal changes
    ----------------
    
    This section is dedicated to developers.
    
    + PRoot now remembers the parent of all tracees, it is similar to a
      traced process tree.  This was required for the ptrace emulation
      support, but this could be useful to some extensions.
    
    + It is now possible to restart a tracee with any ptrace restart mode:
      single-step, single-block, ...
    
    + Functions {peek,poke}_mem were replaced with functions
      {peek,poke}_{,u}int{8,16,32,64}.  These new functions performs type
      conversion and fetch only the necessary amount of data in target
      tracee's memory to avoid invalid accesses.
    
    + There is a new interface to handle ELF auxiliary vectors.  See
      ptrace emulation, kompat and fake_id0 extensions for usage examples.
    
    + There is a new interface to create temporary files and directories
      that are automatically deleted on exit.  See CARE extension, glue
      and auxv support for usage examples.
    
    + When built with GCC function instrumentation support, PRoot prints
      the currently called function on standard error stream (stderr).
    
    Thanks
    ------
    
    Thanks go to Stephen McCamant, Oren Tirosh, Jérôme Audu, and Carlos
    Hernan Prada Rojas for their bug reports and tests; and to Rémi
    Duraffort for his contributions.
    
    Validation
    ----------
    
    ====================  =================  ==============  =================  =========
    testsuite                   host distro    guest distro     configurations   comments
    ====================  =================  ==============  =================  =========
    proot-v4.0                 OBS */x86_64            none                N/A          a
    proot-v4.0                    OBS */x86            none                N/A          b
    proot-v4.0             Ubuntu-10.10/arm            none                N/A          a
    
    proot-v4.0            Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/memcheck   Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/asan       Slack-14.1/x86_64            none                N/A          a
    proot-v4.0/talleak    Slack-14.1/x86_64            none                N/A          a
    
    proot-v4.0            Slack-14.1/x86_64            none         no-seccomp          a
    proot-v4.0/memcheck   Slack-14.1/x86_64            none         no-seccomp          a
    proot-v4.0/asan       Slack-14.1/x86_64            none         no-seccomp          a
    proot-v4.0/talleak    Slack-14.1/x86_64            none         no-seccomp          a
    
    libuv-0.10.27         Slack-14.1/x86_64    same as host               none          a
    libuv-0.10.27         Slack-14.1/x86_64    same as host   kompat, fake_id0          c
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.0/x86               none          a
    libuv-0.10.27         Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0          c
    
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host               none          d
    ltp-syscall-20130904  Slack-14.1/x86_64    same as host   kompat, fake_id0        d,e
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86               none        d,f
    ltp-syscall-20130904  Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0      d,e,f
    
    ltp-opt-20130904      Slack-14.1/x86_64    same as host               none          g
    ltp-opt-20130904      Slack-14.1/x86_64    same as host   kompat, fake_id0        g,h
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.0/x86               none        g,i
    ltp-opt-20130904      Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0    g,h,i,j
    
    perl-5.18.1           Slack-14.1/x86_64    same as host               none          k
    perl-5.18.1           Slack-14.1/x86_64    same as host   kompat, fake_id0        k,l
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86               none          k
    perl-5.18.1           Slack-14.1/x86_64  Slack-14.0/x86   kompat, fake_id0        k,l
    
    gdb-7.6.1             Slack-14.1/x86_64    same as host               none          m
    gdb-7.6.1             Slack-14.1/x86_64    same as host   kompat, fake_id0        m,n
    gdb-7.6.1             Slack-14.1/x86_64  Slack-14.0/x86               none        m,o
    
    proot-v3.2.2          Slack-14.1/x86_64    same as host               none          p
    proot-v3.2.2          Slack-14.1/x86_64    same as host           fake_id0          p
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.0/x86               none          p
    proot-v3.2.2          Slack-14.1/x86_64  Slack-14.0/x86           fake_id0          p
    
    perl-5.16.1           Slack-14.1/x86_64  Ubuntu-14.10/ARM     qemu-2.1-rc0          q
    coreutils-8.19        Slack-14.1/x86_64  Ubuntu-14.10/ARM     qemu-2.1-rc0        k,r
    
    performance           Slack-14.1/x86_64            none               none        NTR
    Coverity Scan         Travis-CI                     N/A                N/A        NTR
    Clang 3.3             Slack-14.1/x86_64             N/A                N/A        NTR
    ====================  =================  ==============  =================  =========
    
    a: is OK or has same failures as native
    
    b: fails on some AMD CPUs.  No explanations yet.
    
    c: failures = signal_multiple_loops, fs_chown
    
    d: failures = brk01, creat07, execve04, mremap03, msync03, madvise01,
       madvise03, madvise04, pwrite03, pwrite03_64, rmdir02
    
       skipped = msgctl10, msgctl11
    
    e: too many failures to be listed here.  These failures are mostly
       related to the fake_id0 extensions but are not unexpected.
    
    f: failures = bdflush01, modify_ldt01, semctl01, semctl03, semctl05,
       socketcall01
    
    g: failures = timer_getoverrun_2-3
    
    h: failures = fork_1-1 sem_unlink_3-1 sigaction_4-52 sigaction_4-32
    
    i: failures = mmap_31-1
    
    j: failures = mlock_12-1, sem_unlink_3-1
    
    k: failures = op/magic.t
    
    l: failures = File-Path/t/Path.t Net-Ping/t/110_icmp_inst.t
       Net-Ping/t/500_ping_icmp.t Net-Ping/t/520_icmp_ttl.t
    
    m: failures = break-interp, checkpoint, foll-exec, info-os, jit
    
       skipped = foll-fork, foll-vfork, watch_thread_num, attach-twice
    
    n: failures = fileio
    
    o: failures = call-sc callfuncs find-unmapped finish float interrupt
       return-nodebug return return2 siginfo-obj siginfo-thread signals
       sigstep varargs ext-attach server-exec-info
    
    p: failures = test-092c5e26
    
    q: failures = rm/deep-2 misc/env misc/printenv split/fail dd/skip-seek
       dd/skip-seek-past-file du/long-from-unreadable install/basic-1
       mkdir/p-3
    
    r: failures = HTTP-Tiny/t/002_croakage.t HTTP-Tiny/t/003_agent.t
  • care-v2.1
  • care-v2.1.0
  • proot-v3.2.2
    e4df3625 · Prepare release v3.2.2. ·
    Release v3.2.2
    ==============
    
    + Remove a useless memory layout constraint on x86_64 that bugs some
      programs like java and or qemu.
    
    + It is now possible to launch the initial program from a relative
      path without specifying the "./" prefix, for example:
    
        $ proot path/to/program
    
    + Don't discard fcntl(F_DUPFD_CLOEXEC) systematically when the kompat
      extension is enabled (-k option).
    
    + Don't use syscalls that require Linux >= 2.6.16 anymore.
  • v3.2.2
    e4df3625 · Prepare release v3.2.2. ·
    Release v3.2.2
    ==============
    
    + Remove a useless memory layout constraint on x86_64 that bugs some
      programs like java and or qemu.
    
    + It is now possible to launch the initial program from a relative
      path without specifying the "./" prefix, for example:
    
        $ proot path/to/program
    
    + Don't discard fcntl(F_DUPFD_CLOEXEC) systematically when the kompat
      extension is enabled (-k option).
    
    + Don't use syscalls that require Linux >= 2.6.16 anymore.
  • care-v2.0
  • care-v2.0.0
  • proot-v3.2.1
    186d9fd8 · Prepare release v3.2.1. ·
  • v3.2.1
    186d9fd8 · Prepare release v3.2.1. ·