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:
Peter Maydell 2014-02-15 16:36:40 +00:00
commit 078a1c37ca
9 changed files with 187 additions and 424 deletions

150
.gitignore vendored
View file

@ -1,64 +1,64 @@
config-devices.* /config-devices.*
config-all-devices.* /config-all-devices.*
config-all-disas.* /config-all-disas.*
config-host.* /config-host.*
config-target.* /config-target.*
config.status /config.status
trace/generated-tracers.h /trace/generated-tracers.h
trace/generated-tracers.c /trace/generated-tracers.c
trace/generated-tracers-dtrace.h /trace/generated-tracers-dtrace.h
trace/generated-tracers.dtrace /trace/generated-tracers.dtrace
trace/generated-events.h /trace/generated-events.h
trace/generated-events.c /trace/generated-events.c
libcacard/trace/generated-tracers.c /libcacard/trace/generated-tracers.c
*-timestamp *-timestamp
*-softmmu /*-softmmu
*-darwin-user /*-darwin-user
*-linux-user /*-linux-user
*-bsd-user /*-bsd-user
libdis* libdis*
libuser libuser
linux-headers/asm /linux-headers/asm
qapi-generated /qapi-generated
qapi-types.[ch] /qapi-types.[ch]
qapi-visit.[ch] /qapi-visit.[ch]
qmp-commands.h /qmp-commands.h
qmp-marshal.c /qmp-marshal.c
qemu-doc.html /qemu-doc.html
qemu-tech.html /qemu-tech.html
qemu-doc.info /qemu-doc.info
qemu-tech.info /qemu-tech.info
qemu.1 /qemu.1
qemu.pod /qemu.pod
qemu-img.1 /qemu-img.1
qemu-img.pod /qemu-img.pod
qemu-img /qemu-img
qemu-nbd /qemu-nbd
qemu-nbd.8 /qemu-nbd.8
qemu-nbd.pod /qemu-nbd.pod
qemu-options.def /qemu-options.def
qemu-options.texi /qemu-options.texi
qemu-img-cmds.texi /qemu-img-cmds.texi
qemu-img-cmds.h /qemu-img-cmds.h
qemu-io /qemu-io
qemu-ga /qemu-ga
qemu-bridge-helper /qemu-bridge-helper
qemu-monitor.texi /qemu-monitor.texi
vscclient /qmp-commands.txt
qmp-commands.txt /vscclient
test-bitops /test-bitops
test-coroutine /test-coroutine
test-int128 /test-int128
test-opts-visitor /test-opts-visitor
test-qmp-input-visitor /test-qmp-input-visitor
test-qmp-output-visitor /test-qmp-output-visitor
test-string-input-visitor /test-string-input-visitor
test-string-output-visitor /test-string-output-visitor
test-visitor-serialization /test-visitor-serialization
fsdev/virtfs-proxy-helper /fsdev/virtfs-proxy-helper
fsdev/virtfs-proxy-helper.1 /fsdev/virtfs-proxy-helper.1
fsdev/virtfs-proxy-helper.pod /fsdev/virtfs-proxy-helper.pod
.gdbinit /.gdbinit
*.a *.a
*.aux *.aux
*.cp *.cp
@ -77,7 +77,7 @@ fsdev/virtfs-proxy-helper.pod
*.tp *.tp
*.vr *.vr
*.d *.d
!scripts/qemu-guest-agent/fsfreeze-hook.d !/scripts/qemu-guest-agent/fsfreeze-hook.d
*.o *.o
*.lo *.lo
*.la *.la
@ -90,22 +90,22 @@ fsdev/virtfs-proxy-helper.pod
*.gcda *.gcda
*.gcno *.gcno
patches patches
pc-bios/bios-pq/status /pc-bios/bios-pq/status
pc-bios/vgabios-pq/status /pc-bios/vgabios-pq/status
pc-bios/optionrom/linuxboot.asm /pc-bios/optionrom/linuxboot.asm
pc-bios/optionrom/linuxboot.bin /pc-bios/optionrom/linuxboot.bin
pc-bios/optionrom/linuxboot.raw /pc-bios/optionrom/linuxboot.raw
pc-bios/optionrom/linuxboot.img /pc-bios/optionrom/linuxboot.img
pc-bios/optionrom/multiboot.asm /pc-bios/optionrom/multiboot.asm
pc-bios/optionrom/multiboot.bin /pc-bios/optionrom/multiboot.bin
pc-bios/optionrom/multiboot.raw /pc-bios/optionrom/multiboot.raw
pc-bios/optionrom/multiboot.img /pc-bios/optionrom/multiboot.img
pc-bios/optionrom/kvmvapic.asm /pc-bios/optionrom/kvmvapic.asm
pc-bios/optionrom/kvmvapic.bin /pc-bios/optionrom/kvmvapic.bin
pc-bios/optionrom/kvmvapic.raw /pc-bios/optionrom/kvmvapic.raw
pc-bios/optionrom/kvmvapic.img /pc-bios/optionrom/kvmvapic.img
pc-bios/s390-ccw/s390-ccw.elf /pc-bios/s390-ccw/s390-ccw.elf
pc-bios/s390-ccw/s390-ccw.img /pc-bios/s390-ccw/s390-ccw.img
.stgit-* .stgit-*
cscope.* cscope.*
tags tags

72
configure vendored
View file

@ -1474,9 +1474,11 @@ esac
feature_not_found() { feature_not_found() {
feature=$1 feature=$1
remedy=$2
error_exit "User requested feature $feature" \ 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 EOF
if ! compile_object ; then if ! compile_object ; then
feature_not_found "nptl" feature_not_found "nptl" "Install glibc and linux kernel headers."
fi fi
fi fi
@ -1555,7 +1557,7 @@ if test "$seccomp" != "no" ; then
seccomp="yes" seccomp="yes"
else else
if test "$seccomp" = "yes"; then if test "$seccomp" = "yes"; then
feature_not_found "libseccomp" feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.0"
fi fi
seccomp="no" seccomp="no"
fi fi
@ -1580,7 +1582,7 @@ EOF
if ! compile_prog "" "$xen_libs" ; then if ! compile_prog "" "$xen_libs" ; then
# Xen not found # Xen not found
if test "$xen" = "yes" ; then if test "$xen" = "yes" ; then
feature_not_found "xen" feature_not_found "xen" "Install xen devel"
fi fi
xen=no xen=no
@ -1703,7 +1705,7 @@ EOF
# Xen version unsupported # Xen version unsupported
else else
if test "$xen" = "yes" ; then 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 fi
xen=no xen=no
fi fi
@ -1752,7 +1754,7 @@ if test "$sparse" != "no" ; then
sparse=yes sparse=yes
else else
if test "$sparse" = "yes" ; then if test "$sparse" = "yes" ; then
feature_not_found "sparse" feature_not_found "sparse" "Install sparse binary"
fi fi
sparse=no sparse=no
fi fi
@ -1774,7 +1776,7 @@ if test "$gtk" != "no"; then
fi fi
if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then
if test "$gtk" = "yes" ; 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 fi
gtk="no" gtk="no"
elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then
@ -1809,7 +1811,7 @@ elif has ${sdl_config}; then
_sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
else else
if test "$sdl" = "yes" ; then if test "$sdl" = "yes" ; then
feature_not_found "sdl" feature_not_found "sdl" "Install SDL devel"
fi fi
sdl=no sdl=no
fi fi
@ -1853,7 +1855,7 @@ EOF
fi # static link fi # static link
else # sdl not found else # sdl not found
if test "$sdl" = "yes" ; then if test "$sdl" = "yes" ; then
feature_not_found "sdl" feature_not_found "sdl" "Install SDL devel"
fi fi
sdl=no sdl=no
fi # sdl compile test fi # sdl compile test
@ -1919,10 +1921,10 @@ EOF
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
else else
if test "$vnc_tls" = "yes" ; then if test "$vnc_tls" = "yes" ; then
feature_not_found "vnc-tls" feature_not_found "vnc-tls" "Install gnutls devel"
fi fi
if test "$vnc_ws" = "yes" ; then if test "$vnc_ws" = "yes" ; then
feature_not_found "vnc-ws" feature_not_found "vnc-ws" "Install gnutls devel"
fi fi
vnc_tls=no vnc_tls=no
vnc_ws=no vnc_ws=no
@ -1946,7 +1948,7 @@ EOF
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
else else
if test "$vnc_sasl" = "yes" ; then if test "$vnc_sasl" = "yes" ; then
feature_not_found "vnc-sasl" feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
fi fi
vnc_sasl=no vnc_sasl=no
fi fi
@ -1968,7 +1970,7 @@ EOF
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
else else
if test "$vnc_jpeg" = "yes" ; then if test "$vnc_jpeg" = "yes" ; then
feature_not_found "vnc-jpeg" feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
fi fi
vnc_jpeg=no vnc_jpeg=no
fi fi
@ -2000,7 +2002,7 @@ EOF
QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
else else
if test "$vnc_png" = "yes" ; then if test "$vnc_png" = "yes" ; then
feature_not_found "vnc-png" feature_not_found "vnc-png" "Install libpng devel"
fi fi
vnc_png=no vnc_png=no
fi fi
@ -2044,7 +2046,7 @@ EOF
libs_tools="$uuid_libs $libs_tools" libs_tools="$uuid_libs $libs_tools"
else else
if test "$uuid" = "yes" ; then if test "$uuid" = "yes" ; then
feature_not_found "uuid" feature_not_found "uuid" "Install libuuid devel"
fi fi
uuid=no uuid=no
fi fi
@ -2078,7 +2080,7 @@ EOF
xfs="yes" xfs="yes"
else else
if test "$xfs" = "yes" ; then if test "$xfs" = "yes" ; then
feature_not_found "xfs" feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
fi fi
xfs=no xfs=no
fi fi
@ -2104,7 +2106,7 @@ EOF
libs_tools="$vde_libs $libs_tools" libs_tools="$vde_libs $libs_tools"
else else
if test "$vde" = "yes" ; then if test "$vde" = "yes" ; then
feature_not_found "vde" feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
fi fi
vde=no vde=no
fi fi
@ -2147,7 +2149,7 @@ EOF
libs_tools="$cap_libs $libs_tools" libs_tools="$cap_libs $libs_tools"
else else
if test "$cap_ng" = "yes" ; then if test "$cap_ng" = "yes" ; then
feature_not_found "cap_ng" feature_not_found "cap_ng" "Install libcap-ng devel"
fi fi
cap_ng=no cap_ng=no
fi fi
@ -2252,7 +2254,7 @@ EOF
libs_softmmu="$brlapi_libs $libs_softmmu" libs_softmmu="$brlapi_libs $libs_softmmu"
else else
if test "$brlapi" = "yes" ; then if test "$brlapi" = "yes" ; then
feature_not_found "brlapi" feature_not_found "brlapi" "Install brlapi devel"
fi fi
brlapi=no brlapi=no
fi fi
@ -2289,7 +2291,7 @@ EOF
curses=yes curses=yes
else else
if test "$curses" = "yes" ; then if test "$curses" = "yes" ; then
feature_not_found "curses" feature_not_found "curses" "Install ncurses devel"
fi fi
curses=no curses=no
fi fi
@ -2315,7 +2317,7 @@ EOF
libs_softmmu="$curl_libs $libs_softmmu" libs_softmmu="$curl_libs $libs_softmmu"
else else
if test "$curl" = "yes" ; then if test "$curl" = "yes" ; then
feature_not_found "curl" feature_not_found "curl" "Install libcurl devel"
fi fi
curl=no curl=no
fi fi
@ -2335,7 +2337,7 @@ EOF
libs_softmmu="$bluez_libs $libs_softmmu" libs_softmmu="$bluez_libs $libs_softmmu"
else else
if test "$bluez" = "yes" ; then if test "$bluez" = "yes" ; then
feature_not_found "bluez" feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
fi fi
bluez="no" bluez="no"
fi fi
@ -2471,7 +2473,7 @@ EOF
libs_softmmu="$rbd_libs $libs_softmmu" libs_softmmu="$rbd_libs $libs_softmmu"
else else
if test "$rbd" = "yes" ; then if test "$rbd" = "yes" ; then
feature_not_found "rados block device" feature_not_found "rados block device" "Install librbd/ceph devel"
fi fi
rbd=no rbd=no
fi fi
@ -2537,7 +2539,7 @@ EOF
libs_tools="$libs_tools -laio" libs_tools="$libs_tools -laio"
else else
if test "$linux_aio" = "yes" ; then if test "$linux_aio" = "yes" ; then
feature_not_found "linux AIO" feature_not_found "linux AIO" "Install libaio devel"
fi fi
linux_aio=no linux_aio=no
fi fi
@ -2585,7 +2587,7 @@ EOF
libattr=yes libattr=yes
else else
if test "$attr" = "yes" ; then if test "$attr" = "yes" ; then
feature_not_found "ATTR" feature_not_found "ATTR" "Install libc6 or libattr devel"
fi fi
attr=no attr=no
fi fi
@ -2662,8 +2664,8 @@ EOF
fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
elif test "$fdt" = "yes" ; then elif test "$fdt" = "yes" ; then
# have neither and want - prompt for system/submodule install # have neither and want - prompt for system/submodule install
error_exit "DTC not present. Your options:" \ error_exit "DTC (libfdt) not present. Your options:" \
" (1) Preferred: Install the DTC devel package" \ " (1) Preferred: Install the DTC (libfdt) devel package" \
" (2) Fetch the DTC submodule, using:" \ " (2) Fetch the DTC submodule, using:" \
" git submodule update --init dtc" " git submodule update --init dtc"
else else
@ -2689,7 +2691,7 @@ EOF
glx=yes glx=yes
else else
if test "$glx" = "yes" ; then if test "$glx" = "yes" ; then
feature_not_found "glx" feature_not_found "glx" "Install GL devel (e.g. MESA)"
fi fi
glx_libs= glx_libs=
glx=no glx=no
@ -2714,7 +2716,7 @@ if test "$glusterfs" != "no" ; then
fi fi
else else
if test "$glusterfs" = "yes" ; then if test "$glusterfs" = "yes" ; then
feature_not_found "GlusterFS backend support" feature_not_found "GlusterFS backend support" "Install glusterfs-api devel"
fi fi
glusterfs="no" glusterfs="no"
fi fi
@ -3034,7 +3036,7 @@ if test "$docs" != "no" ; then
docs=yes docs=yes
else else
if test "$docs" = "yes" ; then if test "$docs" = "yes" ; then
feature_not_found "docs" feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
fi fi
docs=no docs=no
fi fi
@ -3083,7 +3085,7 @@ EOF
LIBS="$LIBS -liscsi" LIBS="$LIBS -liscsi"
else else
if test "$libiscsi" = "yes" ; then if test "$libiscsi" = "yes" ; then
feature_not_found "libiscsi" feature_not_found "libiscsi" "Install libiscsi devel"
fi fi
libiscsi="no" libiscsi="no"
fi fi
@ -3167,7 +3169,7 @@ EOF
spice_server_version=$($pkg_config --modversion spice-server) spice_server_version=$($pkg_config --modversion spice-server)
else else
if test "$spice" = "yes" ; then if test "$spice" = "yes" ; then
feature_not_found "spice" feature_not_found "spice" "Install spice-server and spice-protocol devel"
fi fi
spice="no" spice="no"
fi fi
@ -3217,7 +3219,7 @@ if test "$libusb" != "no" ; then
libs_softmmu="$libs_softmmu $libusb_libs" libs_softmmu="$libs_softmmu $libusb_libs"
else else
if test "$libusb" = "yes"; then if test "$libusb" = "yes"; then
feature_not_found "libusb" feature_not_found "libusb" "Install libusb devel"
fi fi
libusb="no" libusb="no"
fi fi
@ -3233,7 +3235,7 @@ if test "$usb_redir" != "no" ; then
libs_softmmu="$libs_softmmu $usb_redir_libs" libs_softmmu="$libs_softmmu $usb_redir_libs"
else else
if test "$usb_redir" = "yes"; then if test "$usb_redir" = "yes"; then
feature_not_found "usb-redir" feature_not_found "usb-redir" "Install usbredir devel"
fi fi
usb_redir="no" usb_redir="no"
fi fi
@ -4320,7 +4322,7 @@ if test "$trace_backend" = "ftrace"; then
echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
trace_default=no trace_default=no
else else
feature_not_found "ftrace(trace backend)" feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
fi fi
fi fi
echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak

View file

@ -225,7 +225,7 @@ static gboolean serial_xmit(GIOChannel *chan, GIOCondition cond, void *opaque)
if (s->tsr_retry <= 0) { if (s->tsr_retry <= 0) {
if (s->fcr & UART_FCR_FE) { 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); 0 : fifo8_pop(&s->xmit_fifo);
if (!s->xmit_fifo.num) { if (!s->xmit_fifo.num) {
s->lsr |= UART_LSR_THRE; s->lsr |= UART_LSR_THRE;

View file

@ -45,6 +45,7 @@
typedef struct ResetData { typedef struct ResetData {
SPARCCPU *cpu; SPARCCPU *cpu;
uint32_t entry; /* save kernel entry in case of reset */ uint32_t entry; /* save kernel entry in case of reset */
target_ulong sp; /* initial stack pointer */
} ResetData; } ResetData;
static void main_cpu_reset(void *opaque) static void main_cpu_reset(void *opaque)
@ -58,6 +59,7 @@ static void main_cpu_reset(void *opaque)
cpu->halted = 0; cpu->halted = 0;
env->pc = s->entry; env->pc = s->entry;
env->npc = s->entry + 4; env->npc = s->entry + 4;
env->regbase[6] = s->sp;
} }
void leon3_irq_ack(void *irq_manager, int intno) void leon3_irq_ack(void *irq_manager, int intno)
@ -133,6 +135,7 @@ static void leon3_generic_hw_init(QEMUMachineInitArgs *args)
/* Reset data */ /* Reset data */
reset_info = g_malloc0(sizeof(ResetData)); reset_info = g_malloc0(sizeof(ResetData));
reset_info->cpu = cpu; reset_info->cpu = cpu;
reset_info->sp = 0x40000000 + ram_size;
qemu_register_reset(main_cpu_reset, reset_info); qemu_register_reset(main_cpu_reset, reset_info);
/* Allocate IRQ manager */ /* Allocate IRQ manager */

View file

@ -19,6 +19,7 @@
#define QEMU_NET_CHECKSUM_H #define QEMU_NET_CHECKSUM_H
#include <stdint.h> #include <stdint.h>
struct iovec;
uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq); uint32_t net_checksum_add_cont(int len, uint8_t *buf, int seq);
uint16_t net_checksum_finish(uint32_t sum); uint16_t net_checksum_finish(uint32_t sum);

View file

@ -2177,271 +2177,81 @@ fail:
/* do_socketcall() Must return target values and target errnos. */ /* do_socketcall() Must return target values and target errnos. */
static abi_long do_socketcall(int num, abi_ulong vptr) static abi_long do_socketcall(int num, abi_ulong vptr)
{ {
abi_long ret; static const unsigned ac[] = { /* number of arguments per call */
const int n = sizeof(abi_ulong); [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) { /* first, collect the arguments in a[] according to ac[] */
case SOCKOP_socket: if (num >= 0 && num < ARRAY_SIZE(ac)) {
{ unsigned i;
abi_ulong domain, type, protocol; assert(ARRAY_SIZE(a) >= ac[num]); /* ensure we have space for args */
for (i = 0; i < ac[num]; ++i) {
if (get_user_ual(domain, vptr) if (get_user_ual(a[i], vptr + i * sizeof(abi_long)) != 0) {
|| 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)) {
return -TARGET_EFAULT; 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) /* now when we have the args, actually handle the call */
|| get_user_ual(target_addr, vptr + n) switch (num) {
|| get_user_ual(target_addrlen, vptr + 2 * n)) case SOCKOP_socket: /* domain, type, protocol */
return -TARGET_EFAULT; return do_socket(a[0], a[1], a[2]);
case SOCKOP_bind: /* sockfd, addr, addrlen */
ret = do_getsockname(sockfd, target_addr, target_addrlen); return do_bind(a[0], a[1], a[2]);
} case SOCKOP_connect: /* sockfd, addr, addrlen */
break; return do_connect(a[0], a[1], a[2]);
case SOCKOP_getpeername: case SOCKOP_listen: /* sockfd, backlog */
{ return get_errno(listen(a[0], a[1]));
abi_ulong sockfd; case SOCKOP_accept: /* sockfd, addr, addrlen */
abi_ulong target_addr, target_addrlen; return do_accept4(a[0], a[1], a[2], 0);
case SOCKOP_accept4: /* sockfd, addr, addrlen, flags */
if (get_user_ual(sockfd, vptr) return do_accept4(a[0], a[1], a[2], a[3]);
|| get_user_ual(target_addr, vptr + n) case SOCKOP_getsockname: /* sockfd, addr, addrlen */
|| get_user_ual(target_addrlen, vptr + 2 * n)) return do_getsockname(a[0], a[1], a[2]);
return -TARGET_EFAULT; case SOCKOP_getpeername: /* sockfd, addr, addrlen */
return do_getpeername(a[0], a[1], a[2]);
ret = do_getpeername(sockfd, target_addr, target_addrlen); case SOCKOP_socketpair: /* domain, type, protocol, tab */
} return do_socketpair(a[0], a[1], a[2], a[3]);
break; case SOCKOP_send: /* sockfd, msg, len, flags */
case SOCKOP_socketpair: return do_sendto(a[0], a[1], a[2], a[3], 0, 0);
{ case SOCKOP_recv: /* sockfd, msg, len, flags */
abi_ulong domain, type, protocol; return do_recvfrom(a[0], a[1], a[2], a[3], 0, 0);
abi_ulong tab; case SOCKOP_sendto: /* sockfd, msg, len, flags, addr, addrlen */
return do_sendto(a[0], a[1], a[2], a[3], a[4], a[5]);
if (get_user_ual(domain, vptr) case SOCKOP_recvfrom: /* sockfd, msg, len, flags, addr, addrlen */
|| get_user_ual(type, vptr + n) return do_recvfrom(a[0], a[1], a[2], a[3], a[4], a[5]);
|| get_user_ual(protocol, vptr + 2 * n) case SOCKOP_shutdown: /* sockfd, how */
|| get_user_ual(tab, vptr + 3 * n)) return get_errno(shutdown(a[0], a[1]));
return -TARGET_EFAULT; case SOCKOP_sendmsg: /* sockfd, msg, flags */
return do_sendrecvmsg(a[0], a[1], a[2], 1);
ret = do_socketpair(domain, type, protocol, tab); case SOCKOP_recvmsg: /* sockfd, msg, flags */
} return do_sendrecvmsg(a[0], a[1], a[2], 0);
break; case SOCKOP_setsockopt: /* sockfd, level, optname, optval, optlen */
case SOCKOP_send: return do_setsockopt(a[0], a[1], a[2], a[3], a[4]);
{ case SOCKOP_getsockopt: /* sockfd, level, optname, optval, optlen */
abi_ulong sockfd; return do_getsockopt(a[0], a[1], a[2], a[3], a[4]);
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;
default: default:
gemu_log("Unsupported socketcall: %d\n", num); gemu_log("Unsupported socketcall: %d\n", num);
ret = -TARGET_ENOSYS; return -TARGET_ENOSYS;
break;
} }
return ret;
} }
#endif #endif

View file

@ -20,7 +20,7 @@ sub Syntax
print STDERR <<STOP; print STDERR <<STOP;
Usage: $FindBin::Script [options] FILE ... 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. are passed, a reasonable guess is taken.
Options: Options:

View file

@ -350,7 +350,7 @@ static void test_i440fx_firmware(FirmwareTestFixture *fixture,
qtest_start(cmdline); qtest_start(cmdline);
g_free(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 * the QMP handshake completes). We must unlink the firmware blob right
* here, because any assertion firing below would leak it in the * here, because any assertion firing below would leak it in the
* filesystem. This is also the reason why we recreate the blob every time * filesystem. This is also the reason why we recreate the blob every time

55
vl.c
View file

@ -27,64 +27,13 @@
#include <time.h> #include <time.h>
#include <errno.h> #include <errno.h>
#include <sys/time.h> #include <sys/time.h>
#include <zlib.h>
#include "qemu/bitmap.h"
/* Needed early for CONFIG_BSD etc. */
#include "config-host.h" #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 #ifdef CONFIG_SECCOMP
#include "sysemu/seccomp.h" #include "sysemu/seccomp.h"
#endif #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) #if defined(CONFIG_VDE)
#include <libvdeplug.h> #include <libvdeplug.h>
#endif #endif
@ -135,6 +84,7 @@ int main(int argc, char **argv)
#include "exec/gdbstub.h" #include "exec/gdbstub.h"
#include "qemu/timer.h" #include "qemu/timer.h"
#include "sysemu/char.h" #include "sysemu/char.h"
#include "qemu/bitmap.h"
#include "qemu/cache-utils.h" #include "qemu/cache-utils.h"
#include "sysemu/blockdev.h" #include "sysemu/blockdev.h"
#include "hw/block/block.h" #include "hw/block/block.h"
@ -172,9 +122,6 @@ int main(int argc, char **argv)
#include "qapi/string-input-visitor.h" #include "qapi/string-input-visitor.h"
#include "qom/object_interfaces.h" #include "qom/object_interfaces.h"
//#define DEBUG_NET
//#define DEBUG_SLIRP
#define DEFAULT_RAM_SIZE 128 #define DEFAULT_RAM_SIZE 128
#define MAX_VIRTIO_CONSOLES 1 #define MAX_VIRTIO_CONSOLES 1