• 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