cranelift: Implement TLS on aarch64 Mach-O (Apple Silicon) (#5434)
* Implement TLS on Aarch64 Mach-O * Add aarch64 macho TLS filetest * Address review comments - `Aarch64` instead of `AArch64` in comments - Remove unnecessary guard in tls_value lowering - Remove unnecessary regalloc metadata in emission * Use x1 as temporary register in emission - Instead of passing in a temporary register to use when emitting the TLS code, just use `x1`, as it's already in the clobber set. This also keeps the size of `aarch64::inst::Inst` at 32 bytes. - Update filetest accordingly * Update aarch64 mach-o TLS filetest
This commit is contained in:
@@ -654,6 +654,36 @@ impl ObjectModule {
|
||||
32,
|
||||
)
|
||||
}
|
||||
Reloc::MachOAarch64TlsAdrPage21 => {
|
||||
assert_eq!(
|
||||
self.object.format(),
|
||||
object::BinaryFormat::MachO,
|
||||
"MachOAarch64TlsAdrPage21 is not supported for this file format"
|
||||
);
|
||||
(
|
||||
RelocationKind::MachO {
|
||||
value: object::macho::ARM64_RELOC_TLVP_LOAD_PAGE21,
|
||||
relative: true,
|
||||
},
|
||||
RelocationEncoding::Generic,
|
||||
21,
|
||||
)
|
||||
}
|
||||
Reloc::MachOAarch64TlsAdrPageOff12 => {
|
||||
assert_eq!(
|
||||
self.object.format(),
|
||||
object::BinaryFormat::MachO,
|
||||
"MachOAarch64TlsAdrPageOff12 is not supported for this file format"
|
||||
);
|
||||
(
|
||||
RelocationKind::MachO {
|
||||
value: object::macho::ARM64_RELOC_TLVP_LOAD_PAGEOFF12,
|
||||
relative: false,
|
||||
},
|
||||
RelocationEncoding::Generic,
|
||||
12,
|
||||
)
|
||||
}
|
||||
Reloc::Aarch64TlsGdAdrPage21 => {
|
||||
assert_eq!(
|
||||
self.object.format(),
|
||||
|
||||
Reference in New Issue
Block a user