• 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:
    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
     - executable folder (to allow running qemu-{img,io} in the build
     - ../ 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: 's avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: 's avatarFam Zheng <famz@redhat.com>
    Signed-off-by: 's avatarPaolo Bonzini <pbonzini@redhat.com>
module-common.c 114 Bytes