bytecodealliance / wasmtime

A fast and secure runtime for WebAssembly
https://wasmtime.dev/
Apache License 2.0
15.36k stars 1.3k forks source link

Cranelift: support different code models (i.e., relocation strategies and displacement limits) #1657

Open cfallin opened 4 years ago

cfallin commented 4 years ago

Right now, we do not have a notion of "code model", i.e., a set of definitions for ways in which external symbols are referenced. The code model affects which types of relocations we emit, and which address-generation strategies we use: for example, going through a global offset table (GOT) vs. embedding addresses directly, or using PC-relative addressing modes vs. not, or using instructions with differently-sized displacement limits. The closest concept that we have seems to be the colocated flag on external function references.

Ideally, we would like to add support for this as a global compiler flag so that it can influence codegen.

This came up in #1570; non-x86 architectures (such as AArch64) will need it more urgently as the displacement limits are often lower (e.g., on AArch64, +/- 128MB for calls without going through some sort of indirection or veneer).

github-actions[bot] commented 4 years ago

Subscribe to Label Action

cc @bnjbvr

This issue or pull request has been labeled: "cranelift" Thus the following users have been cc'd because of the following labels: * bnjbvr: cranelift To subscribe or unsubscribe from this label, edit the .github/subscribe-to-label.json configuration file. [Learn more.](https://github.com/bytecodealliance/subscribe-to-label-action)