#include <cerrno>
#include <cstdarg>
-#if (defined (__arm__) || defined (__arm64__)) && defined (__APPLE__)
+#if (defined (__arm__) || defined (__arm64__) || defined (__aarch64__)) && defined (__APPLE__)
#include <SpringBoardServices/SpringBoardServer.h>
#endif
if (framework_pos)
{
framework_pos += strlen("LLDB.framework");
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
// Shallow bundle
*framework_pos = '\0';
#else
lldb::pid_t
Host::LaunchApplication (const FileSpec &app_file_spec)
{
-#if defined (__arm__) || defined(__arm64__)
+#if defined (__arm__) || defined(__arm64__) || defined(__aarch64__)
return LLDB_INVALID_PROCESS_ID;
#else
char app_path[PATH_MAX];
}
return false;
}
-#if !defined(__arm__) && !defined(__arm64__)
+#if !defined(__arm__) && !defined(__arm64__) && !defined(__aarch64__)
//static lldb::pid_t
//LaunchInNewTerminalWithCommandFile
return error;
}
-#endif // #if !defined(__arm__)
+#endif // #if !defined(__arm__) && !defined(__arm64__) && !defined(__aarch64__)
// On MacOSX CrashReporter will display a string for each shared library if
bool
Host::OpenFileInExternalEditor (const FileSpec &file_spec, uint32_t line_no)
{
-#if defined(__arm__) || defined(__arm64__)
+#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
return false;
#else
// We attach this to an 'odoc' event to specify a particular selection
}
return true;
-#endif // #if !defined(__arm__)
+#endif // #if !defined(__arm__) && !defined(__arm64__) && !defined(__aarch64__)
}
if (launch_info.GetFlags().Test (eLaunchFlagLaunchInTTY))
{
-#if !defined(__arm__) && !defined(__arm64__)
+#if !defined(__arm__) && !defined(__arm64__) && !defined(__aarch64__)
return LaunchInNewTerminalWithAppleScript (exe_path, launch_info);
#else
error.SetErrorString ("launching a process in a new terminal is not supported on iOS devices");
using namespace lldb_private;
using namespace llvm::MachO;
-#if !defined (__arm__) && !defined (__arm64__) // No DebugSymbols on the iOS devices
+#if !defined (__arm__) && !defined (__arm64__) && !defined (__aarch64__) // No DebugSymbols on the iOS devices
extern "C" {
CFURLRef DBGCopyFullDSYMURLForUUID (CFUUIDRef uuid, CFURLRef exec_url);
if (out_dsym_fspec)
out_dsym_fspec->Clear();
-#if !defined (__arm__) && !defined (__arm64__) // No DebugSymbols on the iOS devices
+#if !defined (__arm__) && !defined (__arm64__) && !defined (__aarch64__) // No DebugSymbols on the iOS devices
const UUID *uuid = module_spec.GetUUIDPtr();
const ArchSpec *arch = module_spec.GetArchitecturePtr();
}
}
}
-#endif // #if !defined (__arm__)
+#endif // #if !defined (__arm__) && !defined (__arm64__) && !defined (__aarch64__)
return items_found;
}
if (cmd_obj_sp)
{
alias_arguments_vector_sp.reset (new OptionArgVector);
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
ProcessAliasOptionsArgs (cmd_obj_sp, "--", alias_arguments_vector_sp);
#else
ProcessAliasOptionsArgs (cmd_obj_sp, "--shell=" LLDB_DEFAULT_SHELL " --", alias_arguments_vector_sp);
#include "ObjectFileMachO.h"
-#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__))
+#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
// GetLLDBSharedCacheUUID() needs to call dlsym()
#include <dlfcn.h>
#endif
bool data_was_read = false;
-#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__))
+#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
if (m_header.flags & 0x80000000u && process->GetAddressByteSize() == sizeof (void*))
{
// This mach-o memory file is in the dyld shared cache. If this
}
}
-#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__))
+#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
// Some recent builds of the dyld_shared_cache (hereafter: DSC) have been optimized by moving LOCAL
// symbols out of the memory mapped portion of the DSC. The symbol information has all been retained,
ObjectFileMachO::GetLLDBSharedCacheUUID ()
{
UUID uuid;
-#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__))
+#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
uint8_t *(*dyld_get_all_image_infos)(void);
dyld_get_all_image_infos = (uint8_t*(*)()) dlsym (RTLD_DEFAULT, "_dyld_get_all_image_infos");
if (dyld_get_all_image_infos)
bool
PlatformDarwinKernel::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch)
{
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
return ARMGetSupportedArchitectureAtIndex (idx, arch);
#else
return x86GetSupportedArchitectureAtIndex (idx, arch);
bool
PlatformMacOSX::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch)
{
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
return ARMGetSupportedArchitectureAtIndex (idx, arch);
#else
return x86GetSupportedArchitectureAtIndex (idx, arch);
uint32_t
RegisterContextDarwin_arm64::NumSupportedHardwareWatchpoints ()
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
// autodetect how many watchpoints are supported dynamically...
static uint32_t g_num_supported_hw_watchpoints = UINT32_MAX;
if (g_num_supported_hw_watchpoints == UINT32_MAX)
// TOOD: need a better way to detect when "long double" types are
// the same bytes size as "double"
-#if !defined(__arm__) && !defined(__arm64__) && !defined(_MSC_VER) && !defined(__mips__)
+#if !defined(__arm__) && !defined(__arm64__) && !defined(__aarch64__) && !defined(_MSC_VER) && !defined(__mips__)
case sizeof (long double):
if (sizeof (long double) == sizeof(uint32_t))
{
}
#if defined(__APPLE__)
-#if defined(__arm__) || defined(__arm64__)
+#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
// For iOS devices, we are connected through a USB Mux so we never pretend
// to actually have a hostname as far as the remote lldb that is connecting
// to this lldb-platform is concerned
response.PutCString ("hostname:");
response.PutCStringAsRawHex8("127.0.0.1");
response.PutChar(';');
-#else // #if defined(__arm__) || defined(__arm64__)
+#else // #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
if (Host::GetHostname (s))
{
response.PutCString ("hostname:");
response.PutCStringAsRawHex8(s.c_str());
response.PutChar(';');
}
-#endif // #if defined(__arm__) || defined(__arm64__)
+#endif // #if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
#else // #if defined(__APPLE__)
if (Host::GetHostname (s))
#define HIGH_PORT (49151u)
#endif
-#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__))
+#if defined(__APPLE__) && (defined(__arm__) || defined(__arm64__) || defined(__aarch64__))
static bool rand_initialized = false;
static inline uint16_t
debugserver_launch_info.SetMonitorProcessCallback (MonitorDebugserverProcess, this, false);
debugserver_launch_info.SetUserID(process_info.GetUserID());
-#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__))
+#if defined (__APPLE__) && (defined (__arm__) || defined (__arm64__) || defined (__aarch64__))
// On iOS, still do a local connection using a random port
const char *hostname = "127.0.0.1";
uint16_t port = get_random_port ();
#import <Foundation/Foundation.h>
#if defined(__APPLE__)
-#if defined(__arm__) || defined(__arm64__)
+#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
#define IOS
#endif
#endif
#if defined (__i386__) || defined (__x86_64__)
DNBArchImplI386::Initialize();
DNBArchImplX86_64::Initialize();
-#elif defined (__arm__) || defined (__arm64__)
+#elif defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
DNBArchMachARM::Initialize();
DNBArchMachARM64::Initialize();
#endif
return DNBArchProtocol::SetArchitecture (CPU_TYPE_I386);
else if ((strcasecmp (arch, "x86_64") == 0) || (strcasecmp (arch, "x86_64h") == 0))
return DNBArchProtocol::SetArchitecture (CPU_TYPE_X86_64);
- else if (strstr (arch, "arm64") == arch || strstr (arch, "armv8") == arch)
+ else if (strstr (arch, "arm64") == arch || strstr (arch, "armv8") == arch || strstr (arch, "aarch64") == arch)
return DNBArchProtocol::SetArchitecture (CPU_TYPE_ARM64);
else if (strstr (arch, "arm") == arch)
return DNBArchProtocol::SetArchitecture (CPU_TYPE_ARM);
//----------------------------------------------------------------------
// Define nub_addr_t and the invalid address value from the architecture
//----------------------------------------------------------------------
-#if defined (__x86_64__) || defined (__ppc64__) || defined (__arm64__)
+#if defined (__x86_64__) || defined (__ppc64__) || defined (__arm64__) || defined (__aarch64__)
//----------------------------------------------------------------------
// 64 bit address architectures
DNBArchProtocol::SetArchitecture(CPU_TYPE_X86_64);
else
DNBArchProtocol::SetArchitecture(CPU_TYPE_I386);
-#elif defined (__arm__) || defined (__arm64__)
+#elif defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
if (m_is_64_bit)
DNBArchProtocol::SetArchitecture(CPU_TYPE_ARM64);
else
//
//===----------------------------------------------------------------------===//
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
#include "MacOSX/arm/DNBArchImpl.h"
#include "MacOSX/MachProcess.h"
return KERN_SUCCESS;
// Read the registers from our thread
-#if defined (ARM_DEBUG_STATE32) && defined (__arm64__)
+#if defined (ARM_DEBUG_STATE32) && (defined (__arm64__) || defined (__aarch64__))
mach_msg_type_number_t count = ARM_DEBUG_STATE32_COUNT;
kern_return_t kret = ::thread_get_state(m_thread->MachPortNumber(), ARM_DEBUG_STATE32, (thread_state_t)&m_state.dbg, &count);
#else
DNBArchMachARM::SetDBGState(bool also_set_on_task)
{
int set = e_regSetDBG;
-#if defined (ARM_DEBUG_STATE32) && defined (__arm64__)
+#if defined (ARM_DEBUG_STATE32) && (defined (__arm64__) || defined (__aarch64__))
kern_return_t kret = ::thread_set_state (m_thread->MachPortNumber(), ARM_DEBUG_STATE32, (thread_state_t)&m_state.dbg, ARM_DEBUG_STATE32_COUNT);
if (also_set_on_task)
{
// an armv8 device, regardless of whether it was built for arch arm or arch arm64,
// it needs to use the MDSCR_EL1 SS bit to single instruction step.
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
if (enable)
{
DNBLogThreadedIf(LOG_STEP, "%s: Setting MDSCR_EL1 Single Step bit at pc 0x%llx", __FUNCTION__, (uint64_t) m_state.context.gpr.__pc);
}
else
{
-#if !defined (__arm64__)
+#if !defined (__arm64__) && !defined (__aarch64__)
// Read the DBGDIDR to get the number of available hardware breakpoints
// However, in some of our current armv7 processors, hardware
// breakpoints/watchpoints were not properly connected. So detect those
}
else
{
-#if !defined (__arm64__)
+#if !defined (__arm64__) && !defined (__aarch64__)
// Read the DBGDIDR to get the number of available hardware breakpoints
// However, in some of our current armv7 processors, hardware
// breakpoints/watchpoints were not properly connected. So detect those
// armv8 device, armv7 processes can watch dwords. But on a genuine armv7
// device I tried, only word watchpoints are supported.
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
#define WATCHPOINTS_ARE_DWORD 1
#else
#undef WATCHPOINTS_ARE_DWORD
#ifndef __DebugNubArchMachARM_h__
#define __DebugNubArchMachARM_h__
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
#include "DNBArch.h"
virtual bool StepNotComplete ();
virtual uint32_t GetHardwareWatchpointHit(nub_addr_t &addr);
-#if defined (ARM_DEBUG_STATE32) && defined (__arm64__)
+#if defined (ARM_DEBUG_STATE32) && (defined (__arm64__) || defined (__aarch64__))
typedef arm_debug_state32_t DBG;
#else
typedef arm_debug_state_t DBG;
e_regSetGPR = ARM_THREAD_STATE,
e_regSetVFP = ARM_VFP_STATE,
e_regSetEXC = ARM_EXCEPTION_STATE,
-#if defined (ARM_DEBUG_STATE32) && defined (__arm64__)
+#if defined (ARM_DEBUG_STATE32) && (defined (__arm64__) || defined (__aarch64__))
e_regSetDBG = ARM_DEBUG_STATE32,
#else
e_regSetDBG = ARM_DEBUG_STATE,
//
//===----------------------------------------------------------------------===//
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
#include "MacOSX/arm64/DNBArchImplARM64.h"
kern_return_t kret = ::thread_get_state(m_thread->MachPortNumber(), ARM_NEON_STATE64, (thread_state_t)&m_state.context.vfp, &count);
if (DNBLogEnabledForAny (LOG_THREAD))
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
DNBLogThreaded("thread_get_state(0x%4.4x, %u, &vfp, %u) => 0x%8.8x (count = %u) regs"
"\n q0 = 0x%16.16llx%16.16llx"
"\n q1 = 0x%16.16llx%16.16llx"
const char *g_invalidate_v30[] {"v30", "d30", "s30", NULL };
const char *g_invalidate_v31[] {"v31", "d31", "s31", NULL };
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
#define VFP_V_OFFSET_IDX(idx) (offsetof (DNBArchMachARM64::FPU, __v) + (idx * 16) + offsetof (DNBArchMachARM64::Context, vfp))
#else
#define VFP_V_OFFSET_IDX(idx) (offsetof (DNBArchMachARM64::FPU, opaque) + (idx * 16) + offsetof (DNBArchMachARM64::Context, vfp))
if (reg >= vfp_v0 && reg <= vfp_v31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&value->value.v_uint8, &m_state.context.vfp.__v[reg - vfp_v0], 16);
#else
memcpy (&value->value.v_uint8, ((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_v0) * 16), 16);
}
else if (reg == vfp_fpsr)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&value->value.uint32, &m_state.context.vfp.__fpsr, 4);
#else
memcpy (&value->value.uint32, ((uint8_t *) &m_state.context.vfp.opaque) + (32 * 16) + 0, 4);
}
else if (reg == vfp_fpcr)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&value->value.uint32, &m_state.context.vfp.__fpcr, 4);
#else
memcpy (&value->value.uint32, ((uint8_t *) &m_state.context.vfp.opaque) + (32 * 16) + 4, 4);
}
else if (reg >= vfp_s0 && reg <= vfp_s31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&value->value.v_uint8, &m_state.context.vfp.__v[reg - vfp_s0], 4);
#else
memcpy (&value->value.v_uint8, ((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_s0) * 16), 4);
}
else if (reg >= vfp_d0 && reg <= vfp_d31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&value->value.v_uint8, &m_state.context.vfp.__v[reg - vfp_d0], 8);
#else
memcpy (&value->value.v_uint8, ((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_d0) * 16), 8);
case e_regSetVFP:
if (reg >= vfp_v0 && reg <= vfp_v31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&m_state.context.vfp.__v[reg - vfp_v0], &value->value.v_uint8, 16);
#else
memcpy (((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_v0) * 16), &value->value.v_uint8, 16);
}
else if (reg == vfp_fpsr)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&m_state.context.vfp.__fpsr, &value->value.uint32, 4);
#else
memcpy (((uint8_t *) &m_state.context.vfp.opaque) + (32 * 16) + 0, &value->value.uint32, 4);
}
else if (reg == vfp_fpcr)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&m_state.context.vfp.__fpcr, &value->value.uint32, 4);
#else
memcpy (((uint8_t *) m_state.context.vfp.opaque) + (32 * 16) + 4, &value->value.uint32, 4);
}
else if (reg >= vfp_s0 && reg <= vfp_s31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&m_state.context.vfp.__v[reg - vfp_s0], &value->value.v_uint8, 4);
#else
memcpy (((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_s0) * 16), &value->value.v_uint8, 4);
}
else if (reg >= vfp_d0 && reg <= vfp_d31)
{
-#if defined (__arm64__)
+#if defined (__arm64__) || defined (__aarch64__)
memcpy (&m_state.context.vfp.__v[reg - vfp_d0], &value->value.v_uint8, 8);
#else
memcpy (((uint8_t *) &m_state.context.vfp.opaque) + ((reg - vfp_d0) * 16), &value->value.v_uint8, 8);
#endif // #if defined (ARM_THREAD_STATE64_COUNT)
-#endif // #if defined (__arm__)
+#endif // #if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
#ifndef __DNBArchImplARM64_h__
#define __DNBArchImplARM64_h__
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
#include <map>
#include <mach/thread_status.h>
#define RNB_ARCH "ppc"
-#elif defined (__arm64__)
+#elif defined (__arm64__) || defined (__aarch64__)
#define RNB_ARCH "arm64"
static cpu_type_t
best_guess_cpu_type ()
{
-#if defined (__arm__) || defined (__arm64__)
+#if defined (__arm__) || defined (__arm64__) || defined (__aarch64__)
if (sizeof (char *) == 8)
{
return CPU_TYPE_ARM64;
}
#elif defined (__arm__)
rep << "ptrsize:4;";
-#elif defined (__arm64__) && defined (ARM_UNIFIED_THREAD_STATE)
+#elif (defined (__arm64__) || defined (__aarch64__)) && defined (ARM_UNIFIED_THREAD_STATE)
nub_thread_t thread = DNBProcessGetCurrentThreadMachPort (pid);
kern_return_t kr;
arm_unified_thread_state_t gp_regs;