git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@97 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2003-04-11 01:12:28 +00:00
parent 32ce63371a
commit 1eb87257da
6 changed files with 46 additions and 17 deletions

View File

@ -1,8 +1,11 @@
version 0.1.6: 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) - ISO C warning fixes (Alistair Strachan)
- first self-virtualizable version (works only as long as the icache - first self-virtualizable version (works only as long as the
is not flushed) translation cache is not flushed)
- RH9 fixes
version 0.1.5: version 0.1.5:

View File

@ -45,7 +45,7 @@ LDFLAGS+=-p
main.o: CFLAGS+=-p main.o: CFLAGS+=-p
endif 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) SRCS:= $(OBJS:.o=.c)
OBJS+= libqemu.a 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\ 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-asm.h gen-i386.h syscall.c\
dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\ 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/Makefile\
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\ tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
tests/test-i386-muldiv.h tests/test-i386-code16.S\ tests/test-i386-muldiv.h tests/test-i386-code16.S\
tests/hello.c tests/hello tests/sha1.c \ tests/hello.c tests/hello tests/sha1.c \
tests/testsig.c tests/testclone.c tests/testthread.c \ tests/testsig.c tests/testclone.c tests/testthread.c \
tests/runcom.c tests/pi_10.com \ tests/runcom.c tests/pi_10.com \
tests/test_path.c \
qemu-doc.texi qemu-doc.html qemu-doc.texi qemu-doc.html
FILE=qemu-$(VERSION) FILE=qemu-$(VERSION)
@ -132,10 +133,10 @@ tar:
BINPATH=/usr/local/qemu-i386 BINPATH=/usr/local/qemu-i386
tarbin: tarbin:
tar zcvf /tmp/qemu-i386-glibc21.tar.gz \ tar zcvf /tmp/qemu-$(VERSION)-i386-glibc21.tar.gz \
$(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin $(BINPATH)/etc $(BINPATH)/lib $(BINPATH)/bin $(BINPATH)/usr
tar zcvf /tmp/qemu-i386-wine.tar.gz \ tar zcvf /tmp/qemu-$(VERSION)-i386-wine.tar.gz \
$(BINPATH)/X11R6 $(BINPATH)/wine $(BINPATH)/wine
ifneq ($(wildcard .depend),) ifneq ($(wildcard .depend),)
include .depend include .depend

4
README
View File

@ -6,7 +6,7 @@ INSTALLATION
Type Type
./configure ./configure --interp-prefix=/usr/local/qemu-i386
make make
to build qemu and libqemu.a. to build qemu and libqemu.a.
@ -23,7 +23,7 @@ libraries installed on your PC. For example:
./qemu -L / /bin/ls ./qemu -L / /bin/ls
* On non x86 CPUs, you need first to download at least an x86 glibc * 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: LD_LIBRARY_PATH is not set:
unset LD_LIBRARY_PATH unset LD_LIBRARY_PATH

View File

@ -1 +1 @@
0.1.5 0.1.6

2
configure vendored
View File

@ -271,4 +271,4 @@ else
echo "config.h is unchanged" echo "config.h is unchanged"
fi fi
rm -f $TMPH rm -f $TMPO $TMPC $TMPE $TMPS $TMPH

View File

@ -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 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 @item The virtual x86 CPU is a library (@code{libqemu}) which can be used
in other projects. 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 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). @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 @code{-L /} tells that the x86 dynamic linker must be searched with a
@file{/} prefix. @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 @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: @code{LD_LIBRARY_PATH} is not set:
@example @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 launch x86 executables. It requires the @code{binfmt_misc} module in the
Linux kernel. 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 @end itemize
@section Wine launch (Currently only tested when emulating x86 on x86) @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 @end example
@item Download the binary x86 Wine install @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 @item Configure Wine on your account. Look at the provided script
@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous @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 The virtual x86 CPU atomic operations are emulated with a global lock so
that their semantic is preserved. 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 @section Bibliography
@table @asis @table @asis