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).
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)
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).