1. 07 3月, 2014 2 次提交
    • P
      configure: Always build with -fno-common · 4c288acb
      Peter Maydell 提交于
      MacOSX doesn't pull .o files from .a archives if the symbol that it
      requires is one which the .o file defines as a common symbol.
      (Common symbols are those declared without "extern"; the linker
      will merge together common symbols with the same name, so
      redeclaring the same variable in two compilation units results in
      them referring to the same symbol rather than a compilation error).
      
      This MacOSX difference from traditional linker behaviour means that
      "make check" produces link errors:
      
      Undefined symbols for architecture x86_64:
        "_cur_mon", referenced from:
            _error_vprintf in libqemuutil.a(qemu-error.o)
            _error_printf in libqemuutil.a(qemu-error.o)
            _error_printf_unless_qmp in libqemuutil.a(qemu-error.o)
            _error_print_loc in libqemuutil.a(qemu-error.o)
            _error_report in libqemuutil.a(qemu-error.o)
      ld: symbol(s) not found for architecture x86_64
      
      in this case because "cur_mon" is a common symbol in
      libqemustub.a(mon-set-error.o).
      
      In QEMU we don't make any use at all of the common symbol
      functionality, so we can avoid this problem entirely simply
      by compiling with -fno-common. Enable this option for all
      builds, not just MacOSX, so that if we ever inadvertently
      introduce multiple definitions of some variable that will
      be immediately spotted as a build error rather than only
      breaking the MacOSX build.
      Suggested-by: NMarkus Armbruster <armbru@redhat.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Reviewed-by: NRichard Henderson <rth@twiddle.net>
      Message-id: 1393451610-24617-1-git-send-email-peter.maydell@linaro.org
      4c288acb
    • P
      configure: Make C++ test work with --enable-werror · 9c83ffd8
      Peter Maydell 提交于
      gcc's C++ compiler complains about being passed some -W options
      which make sense for C but not for C++. This means we mustn't try
      a C++ compile with QEMU_CFLAGS, but only with a filtered version
      that removes the offending options. This filtering was already being
      done for uses of C++ in the build itself, but was omitted for the
      "does C++ work?" configure test. This only showed up when doing
      builds which explicitly enabled -Werror with --enable-werror,
      because the "do the compilers work" tests were mistakenly placed
      above the "default werror based on whether compiling from git" code.
      Another error in this category is that clang warns if you ask it to
      compile C++ code from a file named "foo.c". Further, because we
      were running do_cc in a subshell in the condition part of an "if",
      the error_exit inside do_compiler wouldn't terminate configure and
      we would plunge on regardless. Fix this complex of errors:
      
      1. Move the default-werror code up so that there are no invocations
      of compile_object and friends between it and the point where we
      set $werror explicitly based on the --enable-werror command line
      option.
      
      2. Provide a mechanism for filtering QEMU_CFLAGS to create
      QEMU_CXXFLAGS, and use it for the test we run here.
      
      3. Provide a do_cxx function to run a test with the C++ compiler
      rather than doing cute tricks with subshells and do_cc.
      
      4. Use a new temporary file TMPCXX for the C++ program fragment.
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      Message-id: 1393352869-22257-1-git-send-email-peter.maydell@linaro.org
      Tested-by: NAndreas Färber <afaerber@suse.de>
      9c83ffd8
  2. 05 3月, 2014 1 次提交
    • D
      ui/sdl2 : initial port to SDL 2.0 (v2.0) · 47c03744
      Dave Airlie 提交于
      I've ported the SDL1.2 code over, and rewritten it to use the SDL2 interface.
      
      The biggest changes were in the input handling, where SDL2 has done a major
      overhaul, and I've had to include a generated translation file to get from
      SDL2 codes back to qemu compatible ones. I'm still not sure how the keyboard
      layout code works in qemu, so there may be further work if someone can point
      me a test case that works with SDL1.2 and doesn't with SDL2.
      
      Some SDL env vars we used to set are no longer used by SDL2,
      Windows, OSX support is untested,
      
      I don't think we can link to SDL1.2 and SDL2 at the same time, so I felt
      using --with-sdlabi=2.0 to select the new code should be fine, like how
      gtk does it.
      
      v1.1: fix keys in text console
      v1.2: fix shutdown, cleanups a bit of code, support ARGB cursor
      
      v2.0: merge the SDL multihead patch into this, g_new the number of consoles
      needed, wrap DCL inside per-console structure.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      
      Fixes & improvements by kraxel:
       * baum build fix
       * remove text console logic
       * adapt to new input core
       * codestyle fixups
      Signed-off-by: NGerd Hoffmann <kraxel@redhat.com>
      47c03744
  3. 01 3月, 2014 1 次提交
  4. 27 2月, 2014 1 次提交
  5. 26 2月, 2014 1 次提交
  6. 25 2月, 2014 1 次提交
    • V
      net: Disable netmap backend when not supported · 0a985b37
      Vincenzo Maffione 提交于
      This patch fixes configure so that the netmap backend is not compiled in if the
      host doesn't support an API version >= 11. A version upper bound (15) has been
      added so that the netmap API can be extended with some minor features without
      requiring QEMU code modifications.
      
      Moreover, some changes have been done to net/netmap.c in order to reflect the
      current netmap API/ABI (11).
      
      The NETMAP_WITH_LIBS macro makes possible to include some utilities (e.g.
      netmap ring macros, D(), RD() and other high level functions) through the netmap
      headers. In this way we get rid of the D and RD macro definitions in the QEMU
      code, and we open the way for further code simplifications that will be
      introduced by future patches.
      Signed-off-by: NVincenzo Maffione <v.maffione@gmail.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      0a985b37
  7. 24 2月, 2014 1 次提交
  8. 22 2月, 2014 1 次提交
    • B
      quorum: Add quorum mechanism. · 95c6bff3
      Benoît Canet 提交于
      This patchset enables the core of the quorum mechanism.
      The num_children reads are compared to get the majority version and if this
      version exists more than threshold times the guest won't see the error at all.
      
      If a block is corrupted or if an error occurs during an IO or if the quorum
      cannot be established QMP events are used to report to the management.
      
      Use gnutls's SHA-256 to compare versions.
      
      --enable-quorum must be used to enable the feature.
      Signed-off-by: NBenoit Canet <benoit@irqsave.net>
      Reviewed-by: NMax Reitz <mreitz@redhat.com>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      95c6bff3
  9. 21 2月, 2014 1 次提交
  10. 20 2月, 2014 7 次提交
    • D
      configure: Disable libtool if -fPIE does not work with it (bug #1257099) · 66518bf6
      Don Slutz 提交于
      Adjust TMPO and added TMPB, TMPL, and TMPA.  libtool needs the names
      to be fixed (TMPB).
      
      Add new functions do_libtool and libtool_prog.
      
      Add check for broken gcc and libtool.
      Signed-off-by: NDon Slutz <dslutz@verizon.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      66518bf6
    • F
      block: convert block drivers linked with libs to modules · d3399d7c
      Fam Zheng 提交于
      The converted block drivers are:
      
          curl
          iscsi
          rbd
          ssh
          glusterfs
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      d3399d7c
    • F
      module: implement module loading · e26110cf
      Fam Zheng 提交于
      This patch adds loading, stamp checking and initialization of modules.
      
      The init function of dynamic module is no longer directly called as
      __attribute__((constructor)) in static linked version, it is called
      only after passed the checking of presense of stamp symbol:
      
          qemu_stamp_$RELEASEHASH
      
      where $RELEASEHASH is generated by hashing version strings and content
      of configure script.
      
      With this, modules built from a different tree/version/configure will
      not be loaded.
      
      The module loading code requires gmodule-2.0.
      
      Modules are searched under
       - CONFIG_MODDIR
       - executable folder (to allow running qemu-{img,io} in the build
         directory)
       - ../ of executable folder (to allow running system emulator in the
         build directory)
      
      Modules are linked under their subdir respectively, then copied to top
      level of build directory for above convinience, e.g.:
          $(BUILD_DIR)/block/curl.so -> $(BUILD_DIR)/block-curl.so
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      e26110cf
    • F
      rules.mak: introduce DSO rules · 17969268
      Fam Zheng 提交于
      Add necessary rules and flags for shared object generation.
      The new rules introduced here are:
      
      1) %.o in $(common-obj-m) is compiled to %.o, then linked to %.so.
      
      2) %.mo in $(common-obj-m) is the placeholder for %.so for pattern
      matching in Makefile. It's linked to "-shared" with all its dependencies
      (multiple *.o) as input. Which means the list of depended objects must
      be specified in each sub-Makefile.objs:
      
          foo.mo-objs := bar.o baz.o qux.o
      
      in the same style with foo.o-cflags and foo.o-libs. The objects here
      will be prefixed with "$(obj)/" if it's a subdirectory Makefile.objs.
      
      3) For all files ending up in %.so, the following is added automatically:
      
          foo.o-cflags += -fPIC -DBUILD_DSO
      
      Also introduce --enable-modules in configure, the option will enable
      support of shared object build. Otherwise objects are static linked to
      executables.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      17969268
    • P
      darwin: do not use -mdynamic-no-pic · 13b6ce0e
      Paolo Bonzini 提交于
      While -mdynamic-no-pic can speed up the code somewhat, it is only used
      on the legacy PowerPC Mac OS X, and I am not sure if anyone is still
      testing that.  Disabling PIC can cause problems when enabling modules,
      so do not do that.
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      13b6ce0e
    • F
      block: use per-object cflags and libs · 6ebc91e5
      Fam Zheng 提交于
      No longer adds flags and libs for them to global variables, instead
      create config-host.mak variables like FOO_CFLAGS and FOO_LIBS, which is
      used as per object cflags and libs.
      
      This removes unwanted dependencies from libcacard.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      [Split from Fam's patch to enable modules. - Paolo]
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      6ebc91e5
    • F
      rules.mak: fix $(obj) to a real relative path · ba1183da
      Fam Zheng 提交于
      Makefile.target includes rule.mak and unnested common-obj-y, then prefix
      them with '../', this will ignore object specific QEMU_CFLAGS in subdir
      Makefile.objs:
      
          $(obj)/curl.o: QEMU_CFLAGS += $(CURL_CFLAGS)
      
      Because $(obj) here is './block', instead of '../block'. This doesn't
      hurt compiling because we basically build all .o from top Makefile,
      before entering Makefile.target, but it will affact arriving per-object
      libs support.
      
      The starting point of $(obj) is passed in as argument of unnest-vars, as
      well as nested variables, so that different Makefiles can pass in a
      right value.
      Signed-off-by: NFam Zheng <famz@redhat.com>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      ba1183da
  11. 19 2月, 2014 1 次提交
  12. 17 2月, 2014 1 次提交
    • B
      Fix QEMU build on OpenBSD on x86 archs · 46eef33b
      Brad 提交于
      This resolves the build issue with building the ROMs on OpenBSD on x86 archs.
      As of OpenBSD 5.3 the compiler builds PIE binaries by default and thus the
      whole OS/packages and so forth. The ROMs need to have PIE disabled.
      Check in configure whether the compiler supports the flags for disabling
      PIE, and if it does then use them for building the ROMs. This fixes the
      following buildbot failure:
      
      >From the OpenBSD buildbots..
        Building optionrom/multiboot.img
      ld: multiboot.o: relocation R_X86_64_16 can not be used when making a shared object; recompile with -fPIC
      
      Signed-off by: Brad Smith <brad@comstyle.com>
      Reviewed-by: NStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      46eef33b
  13. 15 2月, 2014 2 次提交
  14. 09 2月, 2014 1 次提交
    • P
      block: add native support for NFS · 6542aa9c
      Peter Lieven 提交于
      This patch adds native support for accessing images on NFS
      shares without the requirement to actually mount the entire
      NFS share on the host.
      
      NFS Images can simply be specified by an url of the form:
      nfs://<host>/<export>/<filename>[?param=value[&param2=value2[&...]]]
      
      For example:
      qemu-img create -f qcow2 nfs://10.0.0.1/qemu-images/test.qcow2
      
      You need LibNFS from Ronnie Sahlberg available at:
         git://github.com/sahlberg/libnfs.git
      for this to work.
      
      During configure it is automatically probed for libnfs and support
      is enabled on-the-fly. You can forbid or enforce libnfs support
      with --disable-libnfs or --enable-libnfs respectively.
      
      Due to NFS restrictions you might need to execute your binaries
      as root, allow them to open priviledged ports (<1024) or specify
      insecure option on the NFS server.
      
      For additional information on ROOT vs. non-ROOT operation and URL
      format + parameters see:
         https://raw.github.com/sahlberg/libnfs/master/README
      
      Supported by qemu are the uid, gid and tcp-syncnt URL parameters.
      
      LibNFS currently support NFS version 3 only.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NKevin Wolf <kwolf@redhat.com>
      6542aa9c
  15. 08 2月, 2014 1 次提交
    • C
      disas: Implement disassembly output for A64 · 999b53ec
      Claudio Fontana 提交于
      Use libvixl to implement disassembly output in debug
      logs for A64, for use with both AArch64 hosts and targets.
      Signed-off-by: NClaudio Fontana <claudio.fontana@linaro.org>
      [PMM:
       * added support for target disassembly
       * switched to custom QEMUDisassembler so the output format
         matches what QEMU expects
       * make sure we correctly fall back to "just print hex"
         if we didn't build the AArch64 disassembler because of
         lack of a C++ compiler
       * rename from 'aarch64' to 'arm-a64' because this is a
         disassembler for the A64 instruction set
       * merge aarch64.c and aarch64-cxx.cc into one C++ file
       * simplify the aarch64.c<->aarch64-cxx.cc interface]
      Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
      999b53ec
  16. 26 1月, 2014 1 次提交
  17. 22 1月, 2014 1 次提交
  18. 01 1月, 2014 2 次提交
    • S
      configure: Python tests must be done before help message · f6f0b7d9
      Stefan Weil 提交于
      The help message uses $python and displays its value, so that macro
      should be tested and set early.
      
      With this modification, configure --help displays the correct value
      (usually python -B) and no longer creates several *.pyc files.
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      f6f0b7d9
    • S
      configure: Rewrite code for help message · 08fb77ed
      Stefan Weil 提交于
      In the new form most lines of the code now look like the final output:
      there is no leading echo command and the lines are shorter.
      
      The resulting output is nearly identical: the only difference is a blank
      character which was deliberately removed:
      
      @@ -8,7 +8,7 @@
         --interp-prefix=PREFIX   where to find shared libraries, etc.
                                  use %M for cpu name [/usr/gnemul/qemu-%M]
         --target-list=LIST       set target list (default: build everything)
      -                           Available targets:  alpha-softmmu arm-softmmu
      +                           Available targets: alpha-softmmu arm-softmmu
                                  cris-softmmu i386-softmmu lm32-softmmu m68k-softmmu
                                  microblaze-softmmu microblazeel-softmmu mips-softmmu
                                  mips64-softmmu mips64el-softmmu mipsel-softmmu
      Signed-off-by: NStefan Weil <sw@weilnetz.de>
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      08fb77ed
  19. 20 12月, 2013 1 次提交
  20. 18 12月, 2013 2 次提交
  21. 09 12月, 2013 2 次提交
    • V
      net: Adding netmap network backend · 58952137
      Vincenzo Maffione 提交于
      This patch adds support for a network backend based on netmap.
      netmap is a framework for high speed packet I/O. You can use it
      to build extremely fast traffic generators, monitors, software
      switches or network middleboxes. Its companion software switch
      VALE lets you interconnect virtual machines.
      netmap and VALE are implemented as a non-intrusive kernel module,
      support NICs from multiple vendors, are part of standard FreeBSD
      distributions and available in source format for Linux too.
      
      To compile QEMU with netmap support, use the following configure
      options:
          ./configure [...] --enable-netmap --extra-cflags=-I/path/to/netmap/sys
      where "/path/to/netmap" contains the netmap source code, available at
          http://info.iet.unipi.it/~luigi/netmap/
      
      The same webpage contains more information about the netmap project
      (together with papers and presentations).
      Signed-off-by: NVincenzo Maffione <v.maffione@gmail.com>
      Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
      58952137
    • P
      block/iscsi: introduce bdrv_co_{readv, writev, flush_to_disk} · 063c3378
      Peter Lieven 提交于
      this converts read, write and flush functions from aio to coroutines
      eliminating almost 200 lines of code.
      
      The requirement for libiscsi is bumped to version 1.4.0 which was
      released in may 2012.
      Signed-off-by: NPeter Lieven <pl@kamp.de>
      Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
      063c3378
  22. 24 11月, 2013 1 次提交
  23. 22 11月, 2013 1 次提交
  24. 17 11月, 2013 1 次提交
  25. 07 11月, 2013 2 次提交
  26. 06 11月, 2013 1 次提交
  27. 26 10月, 2013 1 次提交
    • M
      configure: create fsdev/ directory · 2b170eff
      Michael Tokarev 提交于
      In some cases when building with parallelism (make -jN),
      build fails because the directory where output files are
      supposed to be does not exist.  In particular, when make
      decides to build virtfs-proxy-helper.1 before other files
      in fsdev/, build will fail with the following error:
      
      perl -Ww -- BUILDDIR/scripts/texi2pod.pl BUILDDIR/fsdev/virtfs-proxy-helper.texi fsdev/virtfs-proxy-helper.pod && pod2man --utf8 --section=1 --center=" " --release=" " fsdev/virtfs-proxy-helper.pod > fsdev/virtfs-proxy-helper.1
      opening "fsdev/virtfs-proxy-helper.pod": No such file or directory
      Signed-off-by: NMichael Tokarev <mjt@tls.msk.ru>
      Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
      2b170eff
  28. 14 10月, 2013 1 次提交