trivial patches for 2014-02-15
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iJwEAAECAAYFAlL/WUYACgkQUlPFrXTwyDjLFQP+IOm3LT3zKwyIZkPYWxw0mdS1 4NP6a+MjbHjkOTpwS24PWm7GJ9V3po2dVFMPxDg0NrclMh41W2EYQJ+r2SARyfzZ WGk22XcQ/6rTiShWO3GTQaUaqRoBCITmqRa103oDRzUzQYp+m1COs87O2bnhNiMX Ejcz/2mAuO+PN3po32s= =7YOc -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-2014-02-15' into staging trivial patches for 2014-02-15 # gpg: Signature made Sat 15 Feb 2014 12:10:46 GMT using RSA key ID 74F0C838 # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: E190 8639 3B10 B51B AC2C 8B73 5253 C5AD 74F0 C838 * remotes/mjt/tags/trivial-patches-2014-02-15: char/serial: Fix emptyness check gitignore: anchor all ignored names vl: trim includes vl: remove old, long-unused defines net: declare struct iovec in checksum.h to fix compiler warning linux-user: refactor do_socketcall() configure: add hints to a remedy for feature_not_found errors configure: add hint of libfdt to DTC dependency not found message sparc/leon3: Initialize stack pointer misc: Fix case Qemu -> QEMU Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
078a1c37ca
150
.gitignore
vendored
150
.gitignore
vendored
@ -1,64 +1,64 @@
|
||||
config-devices.*
|
||||
config-all-devices.*
|
||||
config-all-disas.*
|
||||
config-host.*
|
||||
config-target.*
|
||||
config.status
|
||||
trace/generated-tracers.h
|
||||
trace/generated-tracers.c
|
||||
trace/generated-tracers-dtrace.h
|
||||
trace/generated-tracers.dtrace
|
||||
trace/generated-events.h
|
||||
trace/generated-events.c
|
||||
libcacard/trace/generated-tracers.c
|
||||
/config-devices.*
|
||||
/config-all-devices.*
|
||||
/config-all-disas.*
|
||||
/config-host.*
|
||||
/config-target.*
|
||||
/config.status
|
||||
/trace/generated-tracers.h
|
||||
/trace/generated-tracers.c
|
||||
/trace/generated-tracers-dtrace.h
|
||||
/trace/generated-tracers.dtrace
|
||||
/trace/generated-events.h
|
||||
/trace/generated-events.c
|
||||
/libcacard/trace/generated-tracers.c
|
||||
*-timestamp
|
||||
*-softmmu
|
||||
*-darwin-user
|
||||
*-linux-user
|
||||
*-bsd-user
|
||||
/*-softmmu
|
||||
/*-darwin-user
|
||||
/*-linux-user
|
||||
/*-bsd-user
|
||||
libdis*
|
||||
libuser
|
||||
linux-headers/asm
|
||||
qapi-generated
|
||||
qapi-types.[ch]
|
||||
qapi-visit.[ch]
|
||||
qmp-commands.h
|
||||
qmp-marshal.c
|
||||
qemu-doc.html
|
||||
qemu-tech.html
|
||||
qemu-doc.info
|
||||
qemu-tech.info
|
||||
qemu.1
|
||||
qemu.pod
|
||||
qemu-img.1
|
||||
qemu-img.pod
|
||||
qemu-img
|
||||
qemu-nbd
|
||||
qemu-nbd.8
|
||||
qemu-nbd.pod
|
||||
qemu-options.def
|
||||
qemu-options.texi
|
||||
qemu-img-cmds.texi
|
||||
qemu-img-cmds.h
|
||||
qemu-io
|
||||
qemu-ga
|
||||
qemu-bridge-helper
|
||||
qemu-monitor.texi
|
||||
vscclient
|
||||
qmp-commands.txt
|
||||
test-bitops
|
||||
test-coroutine
|
||||
test-int128
|
||||
test-opts-visitor
|
||||
test-qmp-input-visitor
|
||||
test-qmp-output-visitor
|
||||
test-string-input-visitor
|
||||
test-string-output-visitor
|
||||
test-visitor-serialization
|
||||
fsdev/virtfs-proxy-helper
|
||||
fsdev/virtfs-proxy-helper.1
|
||||
fsdev/virtfs-proxy-helper.pod
|
||||
.gdbinit
|
||||
/linux-headers/asm
|
||||
/qapi-generated
|
||||
/qapi-types.[ch]
|
||||
/qapi-visit.[ch]
|
||||
/qmp-commands.h
|
||||
/qmp-marshal.c
|
||||
/qemu-doc.html
|
||||
/qemu-tech.html
|
||||
/qemu-doc.info
|
||||
/qemu-tech.info
|
||||
/qemu.1
|
||||
/qemu.pod
|
||||
/qemu-img.1
|
||||
/qemu-img.pod
|
||||
/qemu-img
|
||||
/qemu-nbd
|
||||
/qemu-nbd.8
|
||||
/qemu-nbd.pod
|
||||
/qemu-options.def
|
||||
/qemu-options.texi
|
||||
/qemu-img-cmds.texi
|
||||
/qemu-img-cmds.h
|
||||
/qemu-io
|
||||
/qemu-ga
|
||||
/qemu-bridge-helper
|
||||
/qemu-monitor.texi
|
||||
/qmp-commands.txt
|
||||
/vscclient
|
||||
/test-bitops
|
||||
/test-coroutine
|
||||
/test-int128
|
||||
/test-opts-visitor
|
||||
/test-qmp-input-visitor
|
||||
/test-qmp-output-visitor
|
||||
/test-string-input-visitor
|
||||
/test-string-output-visitor
|
||||
/test-visitor-serialization
|
||||
/fsdev/virtfs-proxy-helper
|
||||
/fsdev/virtfs-proxy-helper.1
|
||||
/fsdev/virtfs-proxy-helper.pod
|
||||
/.gdbinit
|
||||
*.a
|
||||
*.aux
|
||||
*.cp
|
||||
@ -77,7 +77,7 @@ fsdev/virtfs-proxy-helper.pod
|
||||
*.tp
|
||||
*.vr
|
||||
*.d
|
||||
!scripts/qemu-guest-agent/fsfreeze-hook.d
|
||||
!/scripts/qemu-guest-agent/fsfreeze-hook.d
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
@ -90,22 +90,22 @@ fsdev/virtfs-proxy-helper.pod
|
||||
*.gcda
|
||||
*.gcno
|
||||
patches
|
||||
pc-bios/bios-pq/status
|
||||
pc-bios/vgabios-pq/status
|
||||
pc-bios/optionrom/linuxboot.asm
|
||||
pc-bios/optionrom/linuxboot.bin
|
||||
pc-bios/optionrom/linuxboot.raw
|
||||
pc-bios/optionrom/linuxboot.img
|
||||
pc-bios/optionrom/multiboot.asm
|
||||
pc-bios/optionrom/multiboot.bin
|
||||
pc-bios/optionrom/multiboot.raw
|
||||
pc-bios/optionrom/multiboot.img
|
||||
pc-bios/optionrom/kvmvapic.asm
|
||||
pc-bios/optionrom/kvmvapic.bin
|
||||
pc-bios/optionrom/kvmvapic.raw
|
||||
pc-bios/optionrom/kvmvapic.img
|
||||
pc-bios/s390-ccw/s390-ccw.elf
|
||||
pc-bios/s390-ccw/s390-ccw.img
|
||||
/pc-bios/bios-pq/status
|
||||
/pc-bios/vgabios-pq/status
|
||||
/pc-bios/optionrom/linuxboot.asm
|
||||
/pc-bios/optionrom/linuxboot.bin
|
||||
/pc-bios/optionrom/linuxboot.raw
|
||||
/pc-bios/optionrom/linuxboot.img
|
||||
/pc-bios/optionrom/multiboot.asm
|
||||
/pc-bios/optionrom/multiboot.bin
|
||||
/pc-bios/optionrom/multiboot.raw
|
||||
/pc-bios/optionrom/multiboot.img
|
||||
/pc-bios/optionrom/kvmvapic.asm
|
||||
/pc-bios/optionrom/kvmvapic.bin
|
||||
/pc-bios/optionrom/kvmvapic.raw
|
||||
/pc-bios/optionrom/kvmvapic.img
|
||||
/pc-bios/s390-ccw/s390-ccw.elf
|
||||
/pc-bios/s390-ccw/s390-ccw.img
|
||||
.stgit-*
|
||||
cscope.*
|
||||
tags
|
||||
|
72
configure
vendored
72
configure
vendored
@ -1474,9 +1474,11 @@ esac
|
||||
|
||||
feature_not_found() {
|
||||
feature=$1
|
||||
remedy=$2
|
||||
|
||||
error_exit "User requested feature $feature" \
|
||||
"configure was not able to find it"
|
||||
"configure was not able to find it." \
|
||||
"$remedy"
|
||||
}
|
||||
|
||||
# ---
|
||||
@ -1524,7 +1526,7 @@ int main(void) {
|
||||
}
|
||||
EOF
|
||||
if ! compile_object ; then
|
||||
feature_not_found "nptl"
|
||||
feature_not_found "nptl" "Install glibc and linux kernel headers."
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -1555,7 +1557,7 @@ if test "$seccomp" != "no" ; then
|
||||
seccomp="yes"
|
||||
else
|
||||
if test "$seccomp" = "yes"; then
|
||||
feature_not_found "libseccomp"
|
||||
feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.0"
|
||||
fi
|
||||
seccomp="no"
|
||||
fi
|
||||
@ -1580,7 +1582,7 @@ EOF
|
||||
if ! compile_prog "" "$xen_libs" ; then
|
||||
# Xen not found
|
||||
if test "$xen" = "yes" ; then
|
||||
feature_not_found "xen"
|
||||
feature_not_found "xen" "Install xen devel"
|
||||
fi
|
||||
xen=no
|
||||
|
||||
@ -1703,7 +1705,7 @@ EOF
|
||||
# Xen version unsupported
|
||||
else
|
||||
if test "$xen" = "yes" ; then
|
||||
feature_not_found "xen (unsupported version)"
|
||||
feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
|
||||
fi
|
||||
xen=no
|
||||
fi
|
||||
@ -1752,7 +1754,7 @@ if test "$sparse" != "no" ; then
|
||||
sparse=yes
|
||||
else
|
||||
if test "$sparse" = "yes" ; then
|
||||
feature_not_found "sparse"
|
||||
feature_not_found "sparse" "Install sparse binary"
|
||||
fi
|
||||
sparse=no
|
||||
fi
|
||||
@ -1774,7 +1776,7 @@ if test "$gtk" != "no"; then
|
||||
fi
|
||||
if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
|
||||
if test "$gtk" = "yes" ; then
|
||||
feature_not_found "gtk"
|
||||
feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel"
|
||||
fi
|
||||
gtk="no"
|
||||
elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
|
||||
@ -1809,7 +1811,7 @@ elif has ${sdl_config}; then
|
||||
_sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
|
||||
else
|
||||
if test "$sdl" = "yes" ; then
|
||||
feature_not_found "sdl"
|
||||
feature_not_found "sdl" "Install SDL devel"
|
||||
fi
|
||||
sdl=no
|
||||
fi
|
||||
@ -1853,7 +1855,7 @@ EOF
|
||||
fi # static link
|
||||
else # sdl not found
|
||||
if test "$sdl" = "yes" ; then
|
||||
feature_not_found "sdl"
|
||||
feature_not_found "sdl" "Install SDL devel"
|
||||
fi
|
||||
sdl=no
|
||||
fi # sdl compile test
|
||||
@ -1919,10 +1921,10 @@ EOF
|
||||
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
|
||||
else
|
||||
if test "$vnc_tls" = "yes" ; then
|
||||
feature_not_found "vnc-tls"
|
||||
feature_not_found "vnc-tls" "Install gnutls devel"
|
||||
fi
|
||||
if test "$vnc_ws" = "yes" ; then
|
||||
feature_not_found "vnc-ws"
|
||||
feature_not_found "vnc-ws" "Install gnutls devel"
|
||||
fi
|
||||
vnc_tls=no
|
||||
vnc_ws=no
|
||||
@ -1946,7 +1948,7 @@ EOF
|
||||
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
|
||||
else
|
||||
if test "$vnc_sasl" = "yes" ; then
|
||||
feature_not_found "vnc-sasl"
|
||||
feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
|
||||
fi
|
||||
vnc_sasl=no
|
||||
fi
|
||||
@ -1968,7 +1970,7 @@ EOF
|
||||
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
|
||||
else
|
||||
if test "$vnc_jpeg" = "yes" ; then
|
||||
feature_not_found "vnc-jpeg"
|
||||
feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
|
||||
fi
|
||||
vnc_jpeg=no
|
||||
fi
|
||||
@ -2000,7 +2002,7 @@ EOF
|
||||
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
|
||||
else
|
||||
if test "$vnc_png" = "yes" ; then
|
||||
feature_not_found "vnc-png"
|
||||
feature_not_found "vnc-png" "Install libpng devel"
|
||||
fi
|
||||
vnc_png=no
|
||||
fi
|
||||
@ -2044,7 +2046,7 @@ EOF
|
||||
libs_tools="$uuid_libs $libs_tools"
|
||||
else
|
||||
if test "$uuid" = "yes" ; then
|
||||
feature_not_found "uuid"
|
||||
feature_not_found "uuid" "Install libuuid devel"
|
||||
fi
|
||||
uuid=no
|
||||
fi
|
||||
@ -2078,7 +2080,7 @@ EOF
|
||||
xfs="yes"
|
||||
else
|
||||
if test "$xfs" = "yes" ; then
|
||||
feature_not_found "xfs"
|
||||
feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
|
||||
fi
|
||||
xfs=no
|
||||
fi
|
||||
@ -2104,7 +2106,7 @@ EOF
|
||||
libs_tools="$vde_libs $libs_tools"
|
||||
else
|
||||
if test "$vde" = "yes" ; then
|
||||
feature_not_found "vde"
|
||||
feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
|
||||
fi
|
||||
vde=no
|
||||
fi
|
||||
@ -2147,7 +2149,7 @@ EOF
|
||||
libs_tools="$cap_libs $libs_tools"
|
||||
else
|
||||
if test "$cap_ng" = "yes" ; then
|
||||
feature_not_found "cap_ng"
|
||||
feature_not_found "cap_ng" "Install libcap-ng devel"
|
||||
fi
|
||||
cap_ng=no
|
||||
fi
|
||||
@ -2252,7 +2254,7 @@ EOF
|
||||
libs_softmmu="$brlapi_libs $libs_softmmu"
|
||||
else
|
||||
if test "$brlapi" = "yes" ; then
|
||||
feature_not_found "brlapi"
|
||||
feature_not_found "brlapi" "Install brlapi devel"
|
||||
fi
|
||||
brlapi=no
|
||||
fi
|
||||
@ -2289,7 +2291,7 @@ EOF
|
||||
curses=yes
|
||||
else
|
||||
if test "$curses" = "yes" ; then
|
||||
feature_not_found "curses"
|
||||
feature_not_found "curses" "Install ncurses devel"
|
||||
fi
|
||||
curses=no
|
||||
fi
|
||||
@ -2315,7 +2317,7 @@ EOF
|
||||
libs_softmmu="$curl_libs $libs_softmmu"
|
||||
else
|
||||
if test "$curl" = "yes" ; then
|
||||
feature_not_found "curl"
|
||||
feature_not_found "curl" "Install libcurl devel"
|
||||
fi
|
||||
curl=no
|
||||
fi
|
||||
@ -2335,7 +2337,7 @@ EOF
|
||||
libs_softmmu="$bluez_libs $libs_softmmu"
|
||||
else
|
||||
if test "$bluez" = "yes" ; then
|
||||
feature_not_found "bluez"
|
||||
feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
|
||||
fi
|
||||
bluez="no"
|
||||
fi
|
||||
@ -2471,7 +2473,7 @@ EOF
|
||||
libs_softmmu="$rbd_libs $libs_softmmu"
|
||||
else
|
||||
if test "$rbd" = "yes" ; then
|
||||
feature_not_found "rados block device"
|
||||
feature_not_found "rados block device" "Install librbd/ceph devel"
|
||||
fi
|
||||
rbd=no
|
||||
fi
|
||||
@ -2537,7 +2539,7 @@ EOF
|
||||
libs_tools="$libs_tools -laio"
|
||||
else
|
||||
if test "$linux_aio" = "yes" ; then
|
||||
feature_not_found "linux AIO"
|
||||
feature_not_found "linux AIO" "Install libaio devel"
|
||||
fi
|
||||
linux_aio=no
|
||||
fi
|
||||
@ -2585,7 +2587,7 @@ EOF
|
||||
libattr=yes
|
||||
else
|
||||
if test "$attr" = "yes" ; then
|
||||
feature_not_found "ATTR"
|
||||
feature_not_found "ATTR" "Install libc6 or libattr devel"
|
||||
fi
|
||||
attr=no
|
||||
fi
|
||||
@ -2662,8 +2664,8 @@ EOF
|
||||
fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
|
||||
elif test "$fdt" = "yes" ; then
|
||||
# have neither and want - prompt for system/submodule install
|
||||
error_exit "DTC not present. Your options:" \
|
||||
" (1) Preferred: Install the DTC devel package" \
|
||||
error_exit "DTC (libfdt) not present. Your options:" \
|
||||
" (1) Preferred: Install the DTC (libfdt) devel package" \
|
||||
" (2) Fetch the DTC submodule, using:" \
|
||||
" git submodule update --init dtc"
|
||||
else
|
||||
@ -2689,7 +2691,7 @@ EOF
|
||||
glx=yes
|
||||
else
|
||||
if test "$glx" = "yes" ; then
|
||||
feature_not_found "glx"
|
||||
feature_not_found "glx" "Install GL devel (e.g. MESA)"
|
||||
fi
|
||||
glx_libs=
|
||||
glx=no
|
||||
@ -2714,7 +2716,7 @@ if test "$glusterfs" != "no" ; then
|
||||
fi
|
||||
else
|
||||
if test "$glusterfs" = "yes" ; then
|
||||
feature_not_found "GlusterFS backend support"
|
||||
feature_not_found "GlusterFS backend support" "Install glusterfs-api devel"
|
||||
fi
|
||||
glusterfs="no"
|
||||
fi
|
||||
@ -3034,7 +3036,7 @@ if test "$docs" != "no" ; then
|
||||
docs=yes
|
||||
else
|
||||
if test "$docs" = "yes" ; then
|
||||
feature_not_found "docs"
|
||||
feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
|
||||
fi
|
||||
docs=no
|
||||
fi
|
||||
@ -3083,7 +3085,7 @@ EOF
|
||||
LIBS="$LIBS -liscsi"
|
||||
else
|
||||
if test "$libiscsi" = "yes" ; then
|
||||
feature_not_found "libiscsi"
|
||||
feature_not_found "libiscsi" "Install libiscsi devel"
|
||||
fi
|
||||
libiscsi="no"
|
||||
fi
|
||||
@ -3167,7 +3169,7 @@ EOF
|
||||
spice_server_version=$($pkg_config --modversion spice-server)
|
||||
else
|
||||
if test "$spice" = "yes" ; then
|
||||
feature_not_found "spice"
|
||||
feature_not_found "spice" "Install spice-server and spice-protocol devel"
|
||||
fi
|
||||
spice="no"
|
||||
fi
|
||||
@ -3217,7 +3219,7 @@ if test "$libusb" != "no" ; then
|
||||
libs_softmmu="$libs_softmmu $libusb_libs"
|
||||
else
|
||||
if test "$libusb" = "yes"; then
|
||||
feature_not_found "libusb"
|
||||
feature_not_found "libusb" "Install libusb devel"
|
||||
fi
|
||||
libusb="no"
|
||||
fi
|
||||
@ -3233,7 +3235,7 @@ if test "$usb_redir" != "no" ; then
|
||||
libs_softmmu="$libs_softmmu $usb_redir_libs"
|
||||
else
|
||||
if test "$usb_redir" = "yes"; then
|
||||
feature_not_found "usb-redir"
|
||||
feature_not_found "usb-redir" "Install usbredir devel"
|
||||
fi
|
||||
usb_redir="no"
|
||||
fi
|
||||
@ -4320,7 +4322,7 @@ if test "$trace_backend" = "ftrace"; then
|
||||
echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
|
||||
trace_default=no
|
||||
else
|
||||
feature_not_found "ftrace(trace backend)"
|
||||
feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
|
||||
fi
|
||||
fi
|
||||
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
|
||||
|
@ -225,7 +225,7 @@ static gboolean serial_xmit(GIOChannel *chan, GIOCondition cond, void *opaque)
|
||||
|
||||
if (s->tsr_retry <= 0) {
|
||||
if (s->fcr & UART_FCR_FE) {
|
||||
s->tsr = fifo8_is_full(&s->xmit_fifo) ?
|
||||
s->tsr = fifo8_is_empty(&s->xmit_fifo) ?
|
||||
0 : fifo8_pop(&s->xmit_fifo);
|
||||
if (!s->xmit_fifo.num) {
|
||||
s->lsr |= UART_LSR_THRE;
|
||||
|
@ -45,6 +45,7 @@
|
||||
typedef struct ResetData {
|
||||
SPARCCPU *cpu;
|
||||
uint32_t entry; /* save kernel entry in case of reset */
|
||||
target_ulong sp; /* initial stack pointer */
|
||||
} ResetData;
|
||||
|
||||
static void main_cpu_reset(void *opaque)
|
||||
@ -58,6 +59,7 @@ static void main_cpu_reset(void *opaque)
|
||||
cpu->halted = 0;
|
||||
env->pc = s->entry;
|
||||
env->npc = s->entry + 4;
|
||||
env->regbase[6] = s->sp;
|
||||
}
|
||||
|
||||
void leon3_irq_ack(void *irq_manager, int intno)
|
||||
@ -133,6 +135,7 @@ static void leon3_generic_hw_init(QEMUMachineInitArgs *args)
|
||||
/* Reset data */
|
||||
reset_info = g_malloc0(sizeof(ResetData));
|
||||
reset_info->cpu = cpu;
|
||||
reset_info->sp = 0x40000000 + ram_size;
|
||||
qemu_register_reset(main_cpu_reset, reset_info);
|
||||
|
||||
/* Allocate IRQ manager */
|
||||
|
@ -19,6 +19,7 @@
|
||||
#define QEMU_NET_CHECKSUM_H
|
||||
|
||||
#include <stdint.h>
|
||||
struct iovec;
|
||||
|
||||
uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq);
|
||||
uint16_t net_checksum_finish(uint32_t sum);
|
||||
|
@ -2177,271 +2177,81 @@ fail:
|
||||
/* do_socketcall() Must return target values and target errnos. */
|
||||
static abi_long do_socketcall(int num, abi_ulong vptr)
|
||||
{
|
||||
abi_long ret;
|
||||
const int n = sizeof(abi_ulong);
|
||||
static const unsigned ac[] = { /* number of arguments per call */
|
||||
[SOCKOP_socket] = 3, /* domain, type, protocol */
|
||||
[SOCKOP_bind] = 3, /* sockfd, addr, addrlen */
|
||||
[SOCKOP_connect] = 3, /* sockfd, addr, addrlen */
|
||||
[SOCKOP_listen] = 2, /* sockfd, backlog */
|
||||
[SOCKOP_accept] = 3, /* sockfd, addr, addrlen */
|
||||
[SOCKOP_accept4] = 4, /* sockfd, addr, addrlen, flags */
|
||||
[SOCKOP_getsockname] = 3, /* sockfd, addr, addrlen */
|
||||
[SOCKOP_getpeername] = 3, /* sockfd, addr, addrlen */
|
||||
[SOCKOP_socketpair] = 4, /* domain, type, protocol, tab */
|
||||
[SOCKOP_send] = 4, /* sockfd, msg, len, flags */
|
||||
[SOCKOP_recv] = 4, /* sockfd, msg, len, flags */
|
||||
[SOCKOP_sendto] = 6, /* sockfd, msg, len, flags, addr, addrlen */
|
||||
[SOCKOP_recvfrom] = 6, /* sockfd, msg, len, flags, addr, addrlen */
|
||||
[SOCKOP_shutdown] = 2, /* sockfd, how */
|
||||
[SOCKOP_sendmsg] = 3, /* sockfd, msg, flags */
|
||||
[SOCKOP_recvmsg] = 3, /* sockfd, msg, flags */
|
||||
[SOCKOP_setsockopt] = 5, /* sockfd, level, optname, optval, optlen */
|
||||
[SOCKOP_getsockopt] = 5, /* sockfd, level, optname, optval, optlen */
|
||||
};
|
||||
abi_long a[6]; /* max 6 args */
|
||||
|
||||
switch(num) {
|
||||
case SOCKOP_socket:
|
||||
{
|
||||
abi_ulong domain, type, protocol;
|
||||
|
||||
if (get_user_ual(domain, vptr)
|
||||
|| get_user_ual(type, vptr + n)
|
||||
|| get_user_ual(protocol, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_socket(domain, type, protocol);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_bind:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr;
|
||||
socklen_t addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(addrlen, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_bind(sockfd, target_addr, addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_connect:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr;
|
||||
socklen_t addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(addrlen, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_connect(sockfd, target_addr, addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_listen:
|
||||
{
|
||||
abi_ulong sockfd, backlog;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(backlog, vptr + n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = get_errno(listen(sockfd, backlog));
|
||||
}
|
||||
break;
|
||||
case SOCKOP_accept:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr, target_addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(target_addrlen, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_accept4(sockfd, target_addr, target_addrlen, 0);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_accept4:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr, target_addrlen;
|
||||
abi_ulong flags;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(target_addrlen, vptr + 2 * n)
|
||||
|| get_user_ual(flags, vptr + 3 * n)) {
|
||||
/* first, collect the arguments in a[] according to ac[] */
|
||||
if (num >= 0 && num < ARRAY_SIZE(ac)) {
|
||||
unsigned i;
|
||||
assert(ARRAY_SIZE(a) >= ac[num]); /* ensure we have space for args */
|
||||
for (i = 0; i < ac[num]; ++i) {
|
||||
if (get_user_ual(a[i], vptr + i * sizeof(abi_long)) != 0) {
|
||||
return -TARGET_EFAULT;
|
||||
}
|
||||
|
||||
ret = do_accept4(sockfd, target_addr, target_addrlen, flags);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_getsockname:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr, target_addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(target_addrlen, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_getsockname(sockfd, target_addr, target_addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_getpeername:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong target_addr, target_addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(target_addr, vptr + n)
|
||||
|| get_user_ual(target_addrlen, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_getpeername(sockfd, target_addr, target_addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_socketpair:
|
||||
{
|
||||
abi_ulong domain, type, protocol;
|
||||
abi_ulong tab;
|
||||
|
||||
if (get_user_ual(domain, vptr)
|
||||
|| get_user_ual(type, vptr + n)
|
||||
|| get_user_ual(protocol, vptr + 2 * n)
|
||||
|| get_user_ual(tab, vptr + 3 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_socketpair(domain, type, protocol, tab);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_send:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong msg;
|
||||
size_t len;
|
||||
abi_ulong flags;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(msg, vptr + n)
|
||||
|| get_user_ual(len, vptr + 2 * n)
|
||||
|| get_user_ual(flags, vptr + 3 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_sendto(sockfd, msg, len, flags, 0, 0);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_recv:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong msg;
|
||||
size_t len;
|
||||
abi_ulong flags;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(msg, vptr + n)
|
||||
|| get_user_ual(len, vptr + 2 * n)
|
||||
|| get_user_ual(flags, vptr + 3 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_recvfrom(sockfd, msg, len, flags, 0, 0);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_sendto:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong msg;
|
||||
size_t len;
|
||||
abi_ulong flags;
|
||||
abi_ulong addr;
|
||||
abi_ulong addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(msg, vptr + n)
|
||||
|| get_user_ual(len, vptr + 2 * n)
|
||||
|| get_user_ual(flags, vptr + 3 * n)
|
||||
|| get_user_ual(addr, vptr + 4 * n)
|
||||
|| get_user_ual(addrlen, vptr + 5 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_sendto(sockfd, msg, len, flags, addr, addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_recvfrom:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong msg;
|
||||
size_t len;
|
||||
abi_ulong flags;
|
||||
abi_ulong addr;
|
||||
socklen_t addrlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(msg, vptr + n)
|
||||
|| get_user_ual(len, vptr + 2 * n)
|
||||
|| get_user_ual(flags, vptr + 3 * n)
|
||||
|| get_user_ual(addr, vptr + 4 * n)
|
||||
|| get_user_ual(addrlen, vptr + 5 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_recvfrom(sockfd, msg, len, flags, addr, addrlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_shutdown:
|
||||
{
|
||||
abi_ulong sockfd, how;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(how, vptr + n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = get_errno(shutdown(sockfd, how));
|
||||
}
|
||||
break;
|
||||
case SOCKOP_sendmsg:
|
||||
case SOCKOP_recvmsg:
|
||||
{
|
||||
abi_ulong fd;
|
||||
abi_ulong target_msg;
|
||||
abi_ulong flags;
|
||||
|
||||
if (get_user_ual(fd, vptr)
|
||||
|| get_user_ual(target_msg, vptr + n)
|
||||
|| get_user_ual(flags, vptr + 2 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_sendrecvmsg(fd, target_msg, flags,
|
||||
(num == SOCKOP_sendmsg));
|
||||
}
|
||||
break;
|
||||
case SOCKOP_setsockopt:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong level;
|
||||
abi_ulong optname;
|
||||
abi_ulong optval;
|
||||
abi_ulong optlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(level, vptr + n)
|
||||
|| get_user_ual(optname, vptr + 2 * n)
|
||||
|| get_user_ual(optval, vptr + 3 * n)
|
||||
|| get_user_ual(optlen, vptr + 4 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_setsockopt(sockfd, level, optname, optval, optlen);
|
||||
}
|
||||
break;
|
||||
case SOCKOP_getsockopt:
|
||||
{
|
||||
abi_ulong sockfd;
|
||||
abi_ulong level;
|
||||
abi_ulong optname;
|
||||
abi_ulong optval;
|
||||
socklen_t optlen;
|
||||
|
||||
if (get_user_ual(sockfd, vptr)
|
||||
|| get_user_ual(level, vptr + n)
|
||||
|| get_user_ual(optname, vptr + 2 * n)
|
||||
|| get_user_ual(optval, vptr + 3 * n)
|
||||
|| get_user_ual(optlen, vptr + 4 * n))
|
||||
return -TARGET_EFAULT;
|
||||
|
||||
ret = do_getsockopt(sockfd, level, optname, optval, optlen);
|
||||
}
|
||||
break;
|
||||
/* now when we have the args, actually handle the call */
|
||||
switch (num) {
|
||||
case SOCKOP_socket: /* domain, type, protocol */
|
||||
return do_socket(a[0], a[1], a[2]);
|
||||
case SOCKOP_bind: /* sockfd, addr, addrlen */
|
||||
return do_bind(a[0], a[1], a[2]);
|
||||
case SOCKOP_connect: /* sockfd, addr, addrlen */
|
||||
return do_connect(a[0], a[1], a[2]);
|
||||
case SOCKOP_listen: /* sockfd, backlog */
|
||||
return get_errno(listen(a[0], a[1]));
|
||||
case SOCKOP_accept: /* sockfd, addr, addrlen */
|
||||
return do_accept4(a[0], a[1], a[2], 0);
|
||||
case SOCKOP_accept4: /* sockfd, addr, addrlen, flags */
|
||||
return do_accept4(a[0], a[1], a[2], a[3]);
|
||||
case SOCKOP_getsockname: /* sockfd, addr, addrlen */
|
||||
return do_getsockname(a[0], a[1], a[2]);
|
||||
case SOCKOP_getpeername: /* sockfd, addr, addrlen */
|
||||
return do_getpeername(a[0], a[1], a[2]);
|
||||
case SOCKOP_socketpair: /* domain, type, protocol, tab */
|
||||
return do_socketpair(a[0], a[1], a[2], a[3]);
|
||||
case SOCKOP_send: /* sockfd, msg, len, flags */
|
||||
return do_sendto(a[0], a[1], a[2], a[3], 0, 0);
|
||||
case SOCKOP_recv: /* sockfd, msg, len, flags */
|
||||
return do_recvfrom(a[0], a[1], a[2], a[3], 0, 0);
|
||||
case SOCKOP_sendto: /* sockfd, msg, len, flags, addr, addrlen */
|
||||
return do_sendto(a[0], a[1], a[2], a[3], a[4], a[5]);
|
||||
case SOCKOP_recvfrom: /* sockfd, msg, len, flags, addr, addrlen */
|
||||
return do_recvfrom(a[0], a[1], a[2], a[3], a[4], a[5]);
|
||||
case SOCKOP_shutdown: /* sockfd, how */
|
||||
return get_errno(shutdown(a[0], a[1]));
|
||||
case SOCKOP_sendmsg: /* sockfd, msg, flags */
|
||||
return do_sendrecvmsg(a[0], a[1], a[2], 1);
|
||||
case SOCKOP_recvmsg: /* sockfd, msg, flags */
|
||||
return do_sendrecvmsg(a[0], a[1], a[2], 0);
|
||||
case SOCKOP_setsockopt: /* sockfd, level, optname, optval, optlen */
|
||||
return do_setsockopt(a[0], a[1], a[2], a[3], a[4]);
|
||||
case SOCKOP_getsockopt: /* sockfd, level, optname, optval, optlen */
|
||||
return do_getsockopt(a[0], a[1], a[2], a[3], a[4]);
|
||||
default:
|
||||
gemu_log("Unsupported socketcall: %d\n", num);
|
||||
ret = -TARGET_ENOSYS;
|
||||
break;
|
||||
return -TARGET_ENOSYS;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -20,7 +20,7 @@ sub Syntax
|
||||
print STDERR <<STOP;
|
||||
Usage: $FindBin::Script [options] FILE ...
|
||||
|
||||
Translate each FILE to the new Qemu timer API. If no files
|
||||
Translate each FILE to the new QEMU timer API. If no files
|
||||
are passed, a reasonable guess is taken.
|
||||
|
||||
Options:
|
||||
|
@ -350,7 +350,7 @@ static void test_i440fx_firmware(FirmwareTestFixture *fixture,
|
||||
qtest_start(cmdline);
|
||||
g_free(cmdline);
|
||||
|
||||
/* Qemu has loaded the firmware (because qtest_start() only returns after
|
||||
/* QEMU has loaded the firmware (because qtest_start() only returns after
|
||||
* the QMP handshake completes). We must unlink the firmware blob right
|
||||
* here, because any assertion firing below would leak it in the
|
||||
* filesystem. This is also the reason why we recreate the blob every time
|
||||
|
55
vl.c
55
vl.c
@ -27,64 +27,13 @@
|
||||
#include <time.h>
|
||||
#include <errno.h>
|
||||
#include <sys/time.h>
|
||||
#include <zlib.h>
|
||||
#include "qemu/bitmap.h"
|
||||
|
||||
/* Needed early for CONFIG_BSD etc. */
|
||||
#include "config-host.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <libgen.h>
|
||||
#include <sys/times.h>
|
||||
#include <sys/wait.h>
|
||||
#include <termios.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <net/if.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <dirent.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/select.h>
|
||||
|
||||
#ifdef CONFIG_BSD
|
||||
#include <sys/stat.h>
|
||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
|
||||
#include <sys/sysctl.h>
|
||||
#else
|
||||
#include <util.h>
|
||||
#endif
|
||||
#else
|
||||
#ifdef __linux__
|
||||
#include <malloc.h>
|
||||
|
||||
#include <linux/ppdev.h>
|
||||
#include <linux/parport.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SECCOMP
|
||||
#include "sysemu/seccomp.h"
|
||||
#endif
|
||||
|
||||
#ifdef __sun__
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ethernet.h>
|
||||
#include <sys/sockio.h>
|
||||
#include <netinet/arp.h>
|
||||
#include <netinet/in_systm.h>
|
||||
#include <netinet/ip.h>
|
||||
#include <netinet/ip_icmp.h> // must come after ip.h
|
||||
#include <netinet/udp.h>
|
||||
#include <netinet/tcp.h>
|
||||
#include <net/if.h>
|
||||
#include <syslog.h>
|
||||
#include <stropts.h>
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_VDE)
|
||||
#include <libvdeplug.h>
|
||||
#endif
|
||||
@ -135,6 +84,7 @@ int main(int argc, char **argv)
|
||||
#include "exec/gdbstub.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "sysemu/char.h"
|
||||
#include "qemu/bitmap.h"
|
||||
#include "qemu/cache-utils.h"
|
||||
#include "sysemu/blockdev.h"
|
||||
#include "hw/block/block.h"
|
||||
@ -172,9 +122,6 @@ int main(int argc, char **argv)
|
||||
#include "qapi/string-input-visitor.h"
|
||||
#include "qom/object_interfaces.h"
|
||||
|
||||
//#define DEBUG_NET
|
||||
//#define DEBUG_SLIRP
|
||||
|
||||
#define DEFAULT_RAM_SIZE 128
|
||||
|
||||
#define MAX_VIRTIO_CONSOLES 1
|
||||
|
Loading…
Reference in New Issue
Block a user