update
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@97 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									32ce63371a
								
							
						
					
					
						commit
						1eb87257da
					
				| 
						 | 
				
			
			@ -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:
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										13
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										13
									
								
								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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								README
								
								
								
								
							
							
						
						
									
										4
									
								
								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 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -271,4 +271,4 @@ else
 | 
			
		|||
	echo "config.h is unchanged"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
rm -f $TMPH
 | 
			
		||||
rm -f $TMPO $TMPC $TMPE $TMPS $TMPH
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue