mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-23 19:17:17 +00:00
AArch64_BE Elf support for MC-JIT runtime dynamic linker
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204816 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
53ccc093bf
commit
a634d0a570
@ -490,7 +490,7 @@ void RuntimeDyldImpl::addRelocationForSymbol(const RelocationEntry &RE,
|
||||
}
|
||||
|
||||
uint8_t *RuntimeDyldImpl::createStubFunction(uint8_t *Addr) {
|
||||
if (Arch == Triple::aarch64) {
|
||||
if (Arch == Triple::aarch64 || Arch == Triple::aarch64_be) {
|
||||
// This stub has to be able to access the full address space,
|
||||
// since symbol lookup won't necessarily find a handy, in-range,
|
||||
// PLT stub for functions which could be anywhere.
|
||||
|
@ -844,6 +844,7 @@ void RuntimeDyldELF::resolveRelocation(const SectionEntry &Section,
|
||||
(uint32_t)(Addend & 0xffffffffL));
|
||||
break;
|
||||
case Triple::aarch64:
|
||||
case Triple::aarch64_be:
|
||||
resolveAArch64Relocation(Section, Offset, Value, Type, Addend);
|
||||
break;
|
||||
case Triple::arm: // Fall through.
|
||||
|
@ -283,7 +283,8 @@ void MCObjectFileInfo::InitELFMCObjectFileInfo(Triple T) {
|
||||
TTypeEncoding = (CMModel == CodeModel::Small)
|
||||
? dwarf::DW_EH_PE_udata4 : dwarf::DW_EH_PE_absptr;
|
||||
}
|
||||
} else if (T.getArch() == Triple::aarch64) {
|
||||
} else if (T.getArch() == Triple::aarch64 ||
|
||||
T.getArch() == Triple::aarch64_be ) {
|
||||
// The small model guarantees static code/data size < 4GB, but not where it
|
||||
// will be in memory. Most of these could end up >2GB away so even a signed
|
||||
// pc-relative 32-bit address is insufficient, theoretically.
|
||||
|
@ -1,4 +1,5 @@
|
||||
; RUN: llc -mtriple=aarch64-none-linux-gnu -relocation-model=pic -o - %s | FileCheck %s
|
||||
; RUN: llc -mtriple=aarch64_be-none-linux-gnu -relocation-model=pic -o - %s | FileCheck %s
|
||||
|
||||
; Make sure exception-handling PIC code can be linked correctly. An alternative
|
||||
; to the sequence described below would have .gcc_except_table itself writable
|
||||
|
Loading…
x
Reference in New Issue
Block a user