diff options
6 files changed, 46 insertions, 17 deletions
diff --git a/Changelog b/Changelog
index a451cfa6d..03158ccb5 100644
--- a/Changelog
+++ b/Changelog
@@ -1,8 +1,11 @@
version 0.1.6:
+ - automatic library search system. QEMU can now work with unpatched
+ ELF dynamic loader and libc (Rusty Russell).
- ISO C warning fixes (Alistair Strachan)
- - first self-virtualizable version (works only as long as the icache
- is not flushed)
+ - first self-virtualizable version (works only as long as the
+ translation cache is not flushed)
+ - RH9 fixes
version 0.1.5:
diff --git a/Makefile b/Makefile
index f6d1e2715..50c51020a 100644
--- a/Makefile
+++ b/Makefile
@@ -45,7 +45,7 @@ LDFLAGS+=-p
main.o: CFLAGS+=-p
-OBJS= elfload.o main.o syscall.o signal.o
+OBJS= elfload.o main.o syscall.o signal.o path.o
SRCS:= $(OBJS:.o=.c)
OBJS+= libqemu.a
@@ -110,13 +110,14 @@ elfload.c main.c signal.c thunk.h\
cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\
dis-asm.h gen-i386.h syscall.c\
dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\
-ppc.ld s390.ld exec-i386.h exec-i386.c configure \
+ppc.ld s390.ld exec-i386.h exec-i386.c path.c configure \
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
tests/test-i386-muldiv.h tests/test-i386-code16.S\
tests/hello.c tests/hello tests/sha1.c \
tests/testsig.c tests/testclone.c tests/testthread.c \
tests/runcom.c tests/ \
+tests/test_path.c \
qemu-doc.texi qemu-doc.html
@@ -132,10 +133,10 @@ tar:
- tar zcvf /tmp/qemu-i386-glibc21.tar.gz \
- $(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin
- tar zcvf /tmp/qemu-i386-wine.tar.gz \
- $(BINPATH)/X11R6 $(BINPATH)/wine
+ tar zcvf /tmp/qemu-$(VERSION)-i386-glibc21.tar.gz \
+ $(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin $(BINPATH)/usr
+ tar zcvf /tmp/qemu-$(VERSION)-i386-wine.tar.gz \
+ $(BINPATH)/wine
ifneq ($(wildcard .depend),)
include .depend
diff --git a/README b/README
index dfd137f41..7efa98f56 100644
--- a/README
+++ b/README
@@ -6,7 +6,7 @@ INSTALLATION
- ./configure
+ ./configure --interp-prefix=/usr/local/qemu-i386
to build qemu and libqemu.a.
@@ -23,7 +23,7 @@ libraries installed on your PC. For example:
./qemu -L / /bin/ls
* On non x86 CPUs, you need first to download at least an x86 glibc
-(qemu-i386-glibc21.tar.gz on the qemu web page). Ensure that
+(qemu-XXX-i386-glibc21.tar.gz on the qemu web page). Ensure that
LD_LIBRARY_PATH is not set:
diff --git a/VERSION b/VERSION
index def9a0154..a19223320 100644
@@ -1 +1 @@
-0.1.5 \ No newline at end of file
+0.1.6 \ No newline at end of file
diff --git a/configure b/configure
index ae639a13a..d5ec79f5b 100755
--- a/configure
+++ b/configure
@@ -271,4 +271,4 @@ else
echo "config.h is unchanged"
-rm -f $TMPH
diff --git a/qemu-doc.texi b/qemu-doc.texi
index c29dc22ad..2c7249ff9 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -36,6 +36,8 @@ User space LDT and GDT are emulated. VM86 mode is also supported
@item Accurate signal handling by remapping host signals to virtual x86 signals.
+@item QEMU can emulate itself on x86 (experimental).
@item The virtual x86 CPU is a library (@code{libqemu}) which can be used
in other projects.
@@ -50,9 +52,7 @@ Current QEMU Limitations:
@item Not all x86 exceptions are precise (yet). [Very few programs need that].
-@item Not self virtualizable (yet). [You cannot launch qemu with qemu on the same CPU].
-@item No support for self modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !].
+@item No support for self-modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !].
@item No SSE/MMX support (yet).
@@ -88,9 +88,14 @@ qemu -L / /bin/ls
@code{-L /} tells that the x86 dynamic linker must be searched with a
@file{/} prefix.
+@item Since QEMU is also a linux process, you can launch qemu with qemu:
+qemu -L / qemu -L / /bin/ls
+@end example
@item On non x86 CPUs, you need first to download at least an x86 glibc
-(@file{qemu-i386-glibc21.tar.gz} on the QEMU web page). Ensure that
+(@file{qemu-XXX-i386-glibc21.tar.gz} on the QEMU web page). Ensure that
@code{LD_LIBRARY_PATH} is not set:
@@ -107,6 +112,11 @@ QEMU is automatically launched by the Linux kernel when you try to
launch x86 executables. It requires the @code{binfmt_misc} module in the
Linux kernel.
+@item The x86 version of QEMU is also included. You can try weird things such as:
+qemu /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
+@end example
@end itemize
@section Wine launch (Currently only tested when emulating x86 on x86)
@@ -122,7 +132,7 @@ qemu /usr/local/qemu-i386/bin/ls-i386
@end example
@item Download the binary x86 Wine install
-(@file{qemu-i386-wine.tar.gz} on the QEMU web page).
+(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
@item Configure Wine on your account. Look at the provided script
@file{/usr/local/qemu-i386/bin/}. Your previous
@@ -302,6 +312,21 @@ thread.
The virtual x86 CPU atomic operations are emulated with a global lock so
that their semantic is preserved.
+@section Self-virtualization
+QEMU was conceived so that ultimately it can emulate itself. Althought
+it is not very useful, it is an important test to show the power of the
+Achieving self-virtualization is not easy because there may be address
+space conflicts. QEMU solves this problem by being an ELF shared object
+as the ELF interpreter. That way, it can be relocated at
+load time.
+Since self-modifying code is not supported yet, QEMU cannot self
+virtualize itself in case of translation cache flush. This limitation
+will be suppressed soon.
@section Bibliography
@table @asis