Add apis to get package version (#3601)

Add three APIs:
- wasm_runtime_get_file_package_version
- wasm_runtime_get_module_package_version
- wasm_runtime_get_current_package_version
This commit is contained in:
Benbuck Nason
2024-07-15 17:15:59 -07:00
committed by GitHub
parent 7affac0ed3
commit 501d7d5adf
6 changed files with 102 additions and 5 deletions

View File

@ -858,11 +858,11 @@ wasm_runtime_set_default_running_mode(RunningMode running_mode)
PackageType
get_package_type(const uint8 *buf, uint32 size)
{
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
uint32 buf32 = *(uint32 *)buf;
buf = (const uint8 *)&buf32;
#endif
if (buf && size >= 4) {
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
uint32 buf32 = *(uint32 *)buf;
buf = (const uint8 *)&buf32;
#endif
if (buf[0] == '\0' && buf[1] == 'a' && buf[2] == 's' && buf[3] == 'm')
return Wasm_Module_Bytecode;
if (buf[0] == '\0' && buf[1] == 'a' && buf[2] == 'o' && buf[3] == 't')
@ -887,6 +887,62 @@ wasm_runtime_get_module_package_type(WASMModuleCommon *module)
return module->module_type;
}
uint32
wasm_runtime_get_file_package_version(const uint8 *buf, uint32 size)
{
if (buf && size >= 8) {
uint32 version;
#if (WASM_ENABLE_WORD_ALIGN_READ != 0)
uint32 buf32 = *(uint32 *)(buf + sizeof(uint32));
buf = (const uint8 *)&buf32;
version = buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24;
#else
version = buf[4] | buf[5] << 8 | buf[6] << 16 | buf[7] << 24;
#endif
return version;
}
return 0;
}
uint32
wasm_runtime_get_module_package_version(WASMModuleCommon *module)
{
if (!module) {
return 0;
}
#if WASM_ENABLE_INTERP != 0
if (module->module_type == Wasm_Module_Bytecode) {
WASMModule *wasm_module = (WASMModule *)module;
return wasm_module->package_version;
}
#endif
#if WASM_ENABLE_AOT != 0
if (module->module_type == Wasm_Module_AoT) {
AOTModule *aot_module = (AOTModule *)module;
return aot_module->package_version;
}
#endif
return 0;
}
uint32
wasm_runtime_get_current_package_version(package_type_t package_type)
{
switch (package_type) {
case Wasm_Module_Bytecode:
return WASM_CURRENT_VERSION;
case Wasm_Module_AoT:
return AOT_CURRENT_VERSION;
case Package_Type_Unknown:
default:
return 0;
}
}
#if WASM_ENABLE_AOT != 0
static uint8 *
align_ptr(const uint8 *p, uint32 b)