From 1eb87257dae084166f0a007a9bfa8052e1784108 Mon Sep 17 00:00:00 2001 From: bellard Date: Fri, 11 Apr 2003 01:12:28 +0000 Subject: [PATCH] update git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@97 c046a42c-6fe2-441c-8c8c-71466251a162 --- Changelog | 7 +++++-- Makefile | 13 +++++++------ README | 4 ++-- VERSION | 2 +- configure | 2 +- qemu-doc.texi | 35 ++++++++++++++++++++++++++++++----- 6 files changed, 46 insertions(+), 17 deletions(-) diff --git a/Changelog b/Changelog index a451cfa6dc..03158ccb5a 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 f6d1e2715e..50c51020a0 100644 --- a/Makefile +++ b/Makefile @@ -45,7 +45,7 @@ LDFLAGS+=-p main.o: CFLAGS+=-p endif -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/Makefile\ 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/pi_10.com \ +tests/test_path.c \ qemu-doc.texi qemu-doc.html FILE=qemu-$(VERSION) @@ -132,10 +133,10 @@ tar: BINPATH=/usr/local/qemu-i386 tarbin: - 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 dfd137f417..7efa98f567 100644 --- a/README +++ b/README @@ -6,7 +6,7 @@ INSTALLATION Type - ./configure + ./configure --interp-prefix=/usr/local/qemu-i386 make 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: unset LD_LIBRARY_PATH diff --git a/VERSION b/VERSION index def9a01548..a192233208 100644 --- a/VERSION +++ b/VERSION @@ -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 ae639a13a9..d5ec79f5b4 100755 --- a/configure +++ b/configure @@ -271,4 +271,4 @@ else echo "config.h is unchanged" fi -rm -f $TMPH +rm -f $TMPO $TMPC $TMPE $TMPS $TMPH diff --git a/qemu-doc.texi b/qemu-doc.texi index c29dc22ad3..2c7249ff95 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: + +@example +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: @example @@ -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: +@example +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/wine-conf.sh}. 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 +emulator. + +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 ld-linux.so 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 -- GitLab