module: implement module loading
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:Paolo Bonzini <pbonzini@redhat.com> Signed-off-by:
Fam Zheng <famz@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
Showing
- Makefile 3 additions, 0 deletionsMakefile
- configure 33 additions, 9 deletionsconfigure
- include/qemu/module.h 22 additions, 1 deletioninclude/qemu/module.h
- module-common.c 10 additions, 0 deletionsmodule-common.c
- rules.mak 3 additions, 0 deletionsrules.mak
- scripts/create_config 3 additions, 0 deletionsscripts/create_config
- util/module.c 143 additions, 2 deletionsutil/module.c
module-common.c
0 → 100644
Please register or sign in to comment