summaryrefslogtreecommitdiffstats
path: root/linux-user/qemu.h
diff options
context:
space:
mode:
authorLaurent Vivier2021-02-22 11:50:04 +0100
committerLaurent Vivier2021-03-13 10:45:11 +0100
commit6e1c0d7b951e19c53b8467e8bc4b71ee73a394ea (patch)
tree6c93ac93fb4d9b8546cc3e711bd7e21af8dd278d /linux-user/qemu.h
parentlinux-user: Fix executable page of /proc/self/maps (diff)
downloadqemu-6e1c0d7b951e19c53b8467e8bc4b71ee73a394ea.tar.gz
qemu-6e1c0d7b951e19c53b8467e8bc4b71ee73a394ea.tar.xz
qemu-6e1c0d7b951e19c53b8467e8bc4b71ee73a394ea.zip
linux-user: manage binfmt-misc preserve-arg[0] flag
Add --preserve-argv0 in qemu-binfmt-conf.sh to configure the preserve-argv0 flag. This patch allows to use new flag in AT_FLAGS to detect if preserve-argv0 is configured for this interpreter: argv[0] (the full pathname provided by binfmt-misc) is removed and replaced by argv[1] (the original argv[0] provided by binfmt-misc when 'P'/preserve-arg[0] is set) For instance with this patch and kernel support for AT_FLAGS: $ sudo chroot m68k-chroot sh -c 'echo $0' sh without this patch: $ sudo chroot m68k-chroot sh -c 'echo $0' /usr/bin/sh The new flag is available in kernel (v5.12) since: 2347961b11d4 ("binfmt_misc: pass binfmt_misc flags to the interpreter") This can be tested with something like: # cp ..../qemu-ppc /chroot/powerpc/jessie # qemu-binfmt-conf.sh --qemu-path / --systemd ppc --credential yes \ --persistent no --preserve-argv0 yes # systemctl restart systemd-binfmt.service # cat /proc/sys/fs/binfmt_misc/qemu-ppc enabled interpreter //qemu-ppc flags: POC offset 0 magic 7f454c4601020100000000000000000000020014 mask ffffffffffffff00fffffffffffffffffffeffff # chroot /chroot/powerpc/jessie sh -c 'echo $0' sh # qemu-binfmt-conf.sh --qemu-path / --systemd ppc --credential yes \ --persistent no --preserve-argv0 no # systemctl restart systemd-binfmt.service # cat /proc/sys/fs/binfmt_misc/qemu-ppc enabled interpreter //qemu-ppc flags: OC offset 0 magic 7f454c4601020100000000000000000000020014 mask ffffffffffffff00fffffffffffffffffffeffff # chroot /chroot/powerpc/jessie sh -c 'echo $0' /bin/sh Signed-off-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20210222105004.1642234-1-laurent@vivier.eu>
Diffstat (limited to 'linux-user/qemu.h')
0 files changed, 0 insertions, 0 deletions