adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Cameron Hall 663d9059fa add -silent option to silence logging 2018-04-20 19:40:31 -05:00
accel Miscellaneous patches for 2018-02-07 2018-02-09 14:39:09 +00:00
audio audio: rename CONFIG_* to CONFIG_AUDIO_* 2018-03-05 08:44:11 +01:00
backends qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
block block: Fix qemu crash when using scsi-block 2018-03-08 15:43:11 +00:00
bsd-user misc: remove headers implicitly included 2017-12-18 17:07:02 +03:00
capstone@22ead3e0bf disas: Add capstone as submodule 2017-10-26 11:56:20 +02:00
chardev -----BEGIN PGP SIGNATURE----- 2018-03-08 11:26:14 +00:00
contrib virtio,vhost,pci,pc: features, fixes and cleanups 2018-02-13 16:33:31 +00:00
crypto Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
default-configs irix and solaris userland emulation (linux-user targets irix,irixn32,irix64,solaris) 2018-03-10 17:05:57 +01:00
disas RISC-V Disassembler 2018-03-07 08:30:28 +13:00
docs Block layer patches 2018-03-06 11:20:44 +00:00
dtc@e54388015a Update dtc to fix compilation problem on Mac OS 10.6 2018-01-10 12:53:00 +11:00
fpu softfloat: fix crash on int conversion of SNaN 2018-03-09 14:30:12 +00:00
fsdev use g_path_get_basename instead of basename 2018-03-06 14:01:29 +01:00
gdb-xml s390x/gdb: add gs registers 2017-07-14 12:29:49 +02:00
hw -----BEGIN PGP SIGNATURE----- 2018-03-09 17:28:16 +00:00
include irix and solaris userland emulation (linux-user targets irix,irixn32,irix64,solaris) 2018-03-10 17:05:57 +01:00
io qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
libdecnumber build: remove CONFIG_LIBDECNUMBER 2017-10-16 18:03:52 +02:00
linux-headers linux-headers: update 2018-01-22 11:07:47 +01:00
linux-user add -silent option to silence logging 2018-04-20 19:40:31 -05:00
migration qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
nbd qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
net -----BEGIN PGP SIGNATURE----- 2018-03-05 14:27:24 +00:00
pc-bios pc-bios/s390-ccw: Move string arrays from bootmap header to .c file 2018-03-08 15:49:23 +01:00
po po: add missing translations in de, fr, it, zh 2016-12-14 18:47:19 +00:00
qapi RISC-V Build Infrastructure 2018-03-07 08:30:28 +13:00
qga use g_path_get_basename instead of basename 2018-03-06 14:01:29 +01:00
qobject Include qapi/qmp/qstring.h exactly where needed 2018-02-09 13:52:15 +01:00
qom qmp: Add qom-list-properties to list QOM object properties 2018-03-06 14:01:26 +01:00
replay Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
roms roms: Added git submodule for u-boot-sam460 (firmware for sam460ex) 2018-03-06 13:16:29 +11:00
scripts RISC-V Build Infrastructure 2018-03-07 08:30:28 +13:00
scsi Clean up includes 2018-02-09 05:05:11 +01:00
slirp slirp: add in6_dhcp_multicast() 2018-01-14 18:16:13 +01:00
stubs qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
target irix and solaris userland emulation (linux-user targets irix,irixn32,irix64,solaris) 2018-03-10 17:05:57 +01:00
tcg tcg/aarch64: Add vector operations 2018-02-08 15:54:08 +00:00
tests -----BEGIN PGP SIGNATURE----- 2018-03-08 11:26:14 +00:00
trace Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
ui qio: non-default context for TLS handshake 2018-03-06 10:19:07 +00:00
util irix and solaris userland emulation (linux-user targets irix,irixn32,irix64,solaris) 2018-03-10 17:05:57 +01:00
.dir-locals.el
.editorconfig add editorconfig 2017-07-20 09:56:56 +02:00
.exrc
.gdbinit .gdbinit: load QEMU sub-commands when gdb starts 2017-06-07 14:38:45 +01:00
.gitignore qapi: Don't create useless directory qapi-generated 2018-03-02 13:48:26 -06:00
.gitmodules roms: Added git submodule for u-boot-sam460 (firmware for sam460ex) 2018-03-06 13:16:29 +11:00
.gitpublish Add a git-publish configuration file 2018-03-05 09:03:17 +00:00
.mailmap mailmap: set preferred spelling for Daniel Berrangé 2018-02-10 10:08:48 +03:00
.shippable.yml .shippable.yml: disable powerpc-cross image 2018-03-08 14:34:41 +00:00
.travis.yml travis: use libgcc-4.8-dev (libgcc-6-dev is not available on Ubuntu 14.04) 2018-02-13 16:15:09 +01:00
CODING_STYLE coding_style: add point about 0x in trace-events 2017-08-01 12:13:07 +01:00
COPYING
COPYING.LIB
COPYING.PYTHON scripts: add argparse module for Python 2.6 compatibility 2017-08-30 12:02:11 +01:00
Changelog Use HTTPS for qemu.org and other domains 2017-11-21 13:34:13 +00:00
HACKING HACKING: document #include order 2017-01-03 16:38:47 +00:00
LICENSE
MAINTAINERS RISC-V Maintainers 2018-03-07 08:30:28 +13:00
Makefile ppc: Add aCube Sam460ex board 2018-03-06 13:16:29 +11:00
Makefile.objs Merge tpm 2018/03/07 2018-03-08 12:56:39 +00:00
Makefile.target tcg: Add generic vector expanders 2018-02-08 15:54:05 +00:00
README README: Fix typo 'git-publish' 2018-03-08 15:45:14 +00:00
README.md Update README.md 2018-03-10 18:46:15 +01:00
VERSION Open 2.12 development tree 2017-12-13 17:05:59 +00:00
arch_init.c RISC-V Build Infrastructure 2018-03-07 08:30:28 +13:00
balloon.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
block.c Block layer patches 2018-03-06 11:20:44 +00:00
blockdev-nbd.c Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
blockdev.c Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
blockjob.c Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
bootdevice.c Makefile: Move bootdevice.o to common-obj-y 2017-07-04 14:39:27 +02:00
bt-host.c
bt-vhci.c
configure irix and solaris userland emulation (linux-user targets irix,irixn32,irix64,solaris) 2018-03-10 17:05:57 +01:00
cpus-common.c
cpus.c -----BEGIN PGP SIGNATURE----- 2018-03-09 17:28:16 +00:00
device-hotplug.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
device_tree.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
disas.c RISC-V Disassembler 2018-03-07 08:30:28 +13:00
dma-helpers.c block: explicitly acquire aiocontext in bottom halves that need it 2017-02-21 11:39:39 +00:00
dump.c qapi: Empty out qapi-schema.json 2018-03-02 13:45:50 -06:00
exec.c memory: fix flatview_access_valid RCU read lock/unlock imbalance 2018-03-09 15:55:20 +00:00
gdbstub.c gdbstub: add tracing 2017-12-18 14:37:36 +00:00
hmp-commands-info.hx target/m68k: add HMP command "info tlb" 2018-01-25 16:02:25 +01:00
hmp-commands.hx net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands 2018-03-05 10:30:15 +08:00
hmp.c qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
hmp.h net: Remove the deprecated 'host_net_add' and 'host_net_remove' HMP commands 2018-03-05 10:30:15 +08:00
ioport.c trace: switch to modular code generation for sub-directories 2017-01-31 17:11:18 +00:00
iothread.c vl: introduce vm_shutdown() 2018-03-08 17:38:51 +00:00
memory.c memory: inline some performance-sensitive accessors 2018-03-06 14:01:27 +01:00
memory_ldst.inc.c exec: introduce memory_ldst.inc.c 2016-12-22 16:00:23 +01:00
memory_mapping.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
module-common.c
monitor.c -----BEGIN PGP SIGNATURE----- 2018-03-05 14:27:24 +00:00
numa.c numa: we don't implement NUMA for s390x 2018-03-08 15:49:23 +01:00
os-posix.c os-posix: Drop misleading comment 2017-10-16 21:01:37 +03:00
os-win32.c shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
qdev-monitor.c qmp: Merge ObjectPropertyInfo and DevicePropertyInfo 2018-03-06 14:01:26 +01:00
qdict-test-data.txt
qemu-bridge-helper.c
qemu-doc.texi balloon: Fix documentation of the --balloon parameter and deprecate it 2018-03-06 14:01:29 +01:00
qemu-ga.texi
qemu-img-cmds.hx qemu-img: add --shrink flag for resize 2017-09-26 15:00:32 +02:00
qemu-img.c Block layer patches 2018-03-06 11:20:44 +00:00
qemu-img.texi qemu-img: Document --force-share / -U 2018-02-13 12:27:17 +01:00
qemu-io-cmds.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
qemu-io.c use g_path_get_basename instead of basename 2018-03-06 14:01:29 +01:00
qemu-keymap.c Drop superfluous includes of qapi-types.h and test-qapi-types.h 2018-02-09 05:05:11 +01:00
qemu-nbd.c Move include qemu/option.h from qemu-common.h to actual users 2018-02-09 13:52:16 +01:00
qemu-nbd.texi nbd: Add qemu-nbd -D for human-readable description 2016-11-02 09:28:55 +01:00
qemu-option-trace.texi docs: update manpage for stderr->log rename 2017-02-13 13:38:31 +00:00
qemu-options-wrapper.h qemu-options: Remove stray colons from output of --help 2017-12-20 09:04:27 +01:00
qemu-options.h
qemu-options.hx balloon: Fix documentation of the --balloon parameter and deprecate it 2018-03-06 14:01:29 +01:00
qemu-seccomp.c seccomp: add resourcecontrol argument to command line 2017-09-15 10:15:06 +02:00
qemu-tech.texi
qemu.nsi Use HTTPS for qemu.org and other domains 2017-11-21 13:34:13 +00:00
qemu.sasl Default to GSSAPI (Kerberos) instead of DIGEST-MD5 for SASL 2017-05-09 14:41:47 +01:00
qmp.c qmp: Add qom-list-properties to list QOM object properties 2018-03-06 14:01:26 +01:00
qtest.c qtest: Don't perform side effects inside assertion 2017-09-15 09:05:19 +02:00
replication.c
replication.h Include less of the generated modular QAPI headers 2018-03-02 13:45:50 -06:00
rules.mak Revert "build-sys: silence make by default or V=0" 2018-02-13 11:44:13 +01:00
thunk.c thunk: assert nb_fields is valid 2017-07-31 13:06:39 +03:00
tpm.c qapi: Move qapi-schema.json to qapi/, rename generated files 2018-03-02 13:45:57 -06:00
trace-events trace: avoid SystemTap "char const" warnings 2018-02-19 13:09:44 +00:00
version.rc Use HTTPS for qemu.org and other domains 2017-11-21 13:34:13 +00:00
vl.c vl: introduce vm_shutdown() 2018-03-08 17:38:51 +00:00

README.md

This QEMU patch introduces irix/solaris userland emulation. It currently runs only under linux (though BSD support would probably be feasable).

compiling

Configure QEMU for irix/solaris userland emulation and compile:

configure --target-list=irix-linux-user,irixn32-linux-user,irix64-linux-user,solaris-linux-user
make && make install

using

I recommend using binfmt. Prepare some wrapper scripts for each of the qemu binaries for irix/solaris using this template:

#! /bin/sh

ex=$1; shift
a0=$1; shift

export QEMU_RESERVED_VA=1G
export QEMU_LD_PREFIX=<target rootfs>
export QEMU_SET_ENV=LANG=C

exec <qemu binary> -0 $a0 $ex "$@"

Install the binfmt (replace the QEMU* environment variables by the location of the wrapper scripts):

echo :irix:M::'\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00':'\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef':${QEMUIRIX32}:P > /proc/sys/fs/binfmt_misc/register
echo :irixn32:M::'\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20':'\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xef':${QEMUIRIXN32}:P > /proc/sys/fs/binfmt_misc/register
echo :irix64:M::'\x7fELF\x02\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x08':'\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff':${QEMUIRIX64}:P > /proc/sys/fs/binfmt_misc/register
echo :solaris:M::'\x7fELF\x01\x02\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02':'\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff':${QEMUSOLARIS32}:P > /proc/sys/fs/binfmt_misc/register

Now you should be able to directly execute irix/solaris binaries from the shell. As a rather simple test, try:

<target rootfs>/bin/ls

send bug reports, fixes etc to Kai-Uwe Bloem (derkub@gmail.com)