aot_create_comp_context: disable small data section

I observed errors like the following when trying to upgrade our
LLVM from 15 to 19.

```
AOT module load failed: resolve symbol .srodata.cst8 failed
```

The concept itself has been available since LLVM 9.
I don't know what exactly happened to trigger the use of it.

cf. https://reviews.llvm.org/D57493
This commit is contained in:
YAMAMOTO Takashi 2025-05-01 19:45:19 +09:00
parent 0c9dd5a346
commit 14be14f337

View File

@ -2617,6 +2617,15 @@ aot_create_comp_context(const AOTCompData *comp_data, aot_comp_option_t option)
goto fail; goto fail;
} }
#if LLVM_VERSION_MAJOR >= 9
/* Disable small data section as our emitter/loader doesn't support it.
* https://reviews.llvm.org/D57493 */
LLVMAddModuleFlag(
comp_ctx->module, LLVMModuleFlagBehaviorWarning, "SmallDataLimit",
strlen("SmallDataLimit"),
LLVMValueAsMetadata(LLVMConstInt(LLVMInt32Type(), 0, false)));
#endif
#if WASM_ENABLE_DEBUG_AOT != 0 #if WASM_ENABLE_DEBUG_AOT != 0
if (!(comp_ctx->debug_builder = LLVMCreateDIBuilder(comp_ctx->module))) { if (!(comp_ctx->debug_builder = LLVMCreateDIBuilder(comp_ctx->module))) {
aot_set_last_error("create LLVM Debug Infor builder failed."); aot_set_last_error("create LLVM Debug Infor builder failed.");