mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-21 23:17:16 +00:00
ARM64: initial backend import
This adds a second implementation of the AArch64 architecture to LLVM, accessible in parallel via the "arm64" triple. The plan over the coming weeks & months is to merge the two into a single backend, during which time thorough code review should naturally occur. Everything will be easier with the target in-tree though, hence this commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205090 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -22,6 +22,9 @@ void MCObjectFileInfo::InitMachOMCObjectFileInfo(Triple T) {
|
||||
IsFunctionEHFrameSymbolPrivate = false;
|
||||
SupportsWeakOmittedEHFrame = false;
|
||||
|
||||
if (T.isOSDarwin() && T.getArch() == Triple::arm64)
|
||||
SupportsCompactUnwindWithoutEHFrame = true;
|
||||
|
||||
PersonalityEncoding = dwarf::DW_EH_PE_indirect | dwarf::DW_EH_PE_pcrel
|
||||
| dwarf::DW_EH_PE_sdata4;
|
||||
LSDAEncoding = FDEEncoding = FDECFIEncoding = dwarf::DW_EH_PE_pcrel;
|
||||
@@ -146,7 +149,8 @@ void MCObjectFileInfo::InitMachOMCObjectFileInfo(Triple T) {
|
||||
|
||||
COFFDebugSymbolsSection = 0;
|
||||
|
||||
if (T.isMacOSX() && !T.isMacOSXVersionLT(10, 6)) {
|
||||
if ((T.isMacOSX() && !T.isMacOSXVersionLT(10, 6)) ||
|
||||
(T.isOSDarwin() && T.getArch() == Triple::arm64)) {
|
||||
CompactUnwindSection =
|
||||
Ctx->getMachOSection("__LD", "__compact_unwind",
|
||||
MachO::S_ATTR_DEBUG,
|
||||
@@ -154,6 +158,8 @@ void MCObjectFileInfo::InitMachOMCObjectFileInfo(Triple T) {
|
||||
|
||||
if (T.getArch() == Triple::x86_64 || T.getArch() == Triple::x86)
|
||||
CompactUnwindDwarfEHFrameOnly = 0x04000000;
|
||||
else if (T.getArch() == Triple::arm64)
|
||||
CompactUnwindDwarfEHFrameOnly = 0x03000000;
|
||||
}
|
||||
|
||||
// Debug Information.
|
||||
@@ -763,6 +769,7 @@ void MCObjectFileInfo::InitMCObjectFileInfo(StringRef TT, Reloc::Model relocm,
|
||||
// cellspu-apple-darwin. Perhaps we should fix in Triple?
|
||||
if ((Arch == Triple::x86 || Arch == Triple::x86_64 ||
|
||||
Arch == Triple::arm || Arch == Triple::thumb ||
|
||||
Arch == Triple::arm64 ||
|
||||
Arch == Triple::ppc || Arch == Triple::ppc64 ||
|
||||
Arch == Triple::UnknownArch) &&
|
||||
(T.isOSDarwin() || T.isOSBinFormatMachO())) {
|
||||
|
||||
Reference in New Issue
Block a user