1. 20 Feb, 2014 1 commit
    • Fam Zheng's avatar
      module: implement module loading · e26110cf
      Fam Zheng authored
      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: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarFam Zheng <famz@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      e26110cf