summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Platform/MacOSX
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-04-07 22:46:35 +0000
committerGreg Clayton <gclayton@apple.com>2011-04-07 22:46:35 +0000
commiteb0103f2d08a13812614da6f4dc3f6bb80c7aa21 (patch)
treedbf5eb8c26e985bc82f53cb4030cee1f0bbfba11 /lldb/source/Plugins/Platform/MacOSX
parent165a07adf94e4b81e7ed110158688b1426fe9f76 (diff)
downloadbcm5719-llvm-eb0103f2d08a13812614da6f4dc3f6bb80c7aa21.tar.gz
bcm5719-llvm-eb0103f2d08a13812614da6f4dc3f6bb80c7aa21.zip
Modified the ArchSpec to take an optional "Platform *" when setting the triple.
This allows you to have a platform selected, then specify a triple using "i386" and have the remaining triple items (vendor, os, and environment) set automatically. Many interpreter commands take the "--arch" option to specify an architecture triple, so now the command options needed to be able to get to the current platform, so the Options class now take a reference to the interpreter on construction. Modified the build LLVM building in the Xcode project to use the new Xcode project level user definitions: LLVM_BUILD_DIR - a path to the llvm build directory LLVM_SOURCE_DIR - a path to the llvm sources for the llvm that will be used to build lldb LLVM_CONFIGURATION - the configuration that lldb is built for (Release, Release+Asserts, Debug, Debug+Asserts). I also changed the LLVM build to not check if "lldb/llvm" is a symlink and then assume it is a real llvm build directory versus the unzipped llvm.zip package, so now you can actually have a "lldb/llvm" directory in your lldb sources. llvm-svn: 129112
Diffstat (limited to 'lldb/source/Plugins/Platform/MacOSX')
-rw-r--r--lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp27
-rw-r--r--lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp80
2 files changed, 56 insertions, 51 deletions
diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
index 3a46f0d092d..63cb4ac25ee 100644
--- a/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
+++ b/lldb/source/Plugins/Platform/MacOSX/PlatformDarwin.cpp
@@ -142,6 +142,7 @@ PlatformDarwin::GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite
{
const uint8_t *trap_opcode = NULL;
uint32_t trap_opcode_size = 0;
+ bool bp_is_thumb = false;
llvm::Triple::ArchType machine = target.GetArchitecture().GetMachine();
switch (machine)
@@ -154,22 +155,26 @@ PlatformDarwin::GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite
trap_opcode_size = sizeof(g_i386_breakpoint_opcode);
}
break;
-
+
+ case llvm::Triple::thumb:
+ bp_is_thumb = true; // Fall through...
case llvm::Triple::arm:
{
static const uint8_t g_arm_breakpoint_opcode[] = { 0xFE, 0xDE, 0xFF, 0xE7 };
static const uint8_t g_thumb_breakpooint_opcode[] = { 0xFE, 0xDE };
- lldb::BreakpointLocationSP bp_loc_sp (bp_site->GetOwnerAtIndex (0));
- if (bp_loc_sp)
+ // Auto detect arm/thumb if it wasn't explicitly specified
+ if (!bp_is_thumb)
{
- const AddressClass addr_class = bp_loc_sp->GetAddress().GetAddressClass ();
- if (addr_class == eAddressClassCodeAlternateISA)
- {
- trap_opcode = g_thumb_breakpooint_opcode;
- trap_opcode_size = sizeof(g_thumb_breakpooint_opcode);
- break;
- }
+ lldb::BreakpointLocationSP bp_loc_sp (bp_site->GetOwnerAtIndex (0));
+ if (bp_loc_sp)
+ bp_is_thumb = bp_loc_sp->GetAddress().GetAddressClass () == eAddressClassCodeAlternateISA;
+ }
+ if (bp_is_thumb)
+ {
+ trap_opcode = g_thumb_breakpooint_opcode;
+ trap_opcode_size = sizeof(g_thumb_breakpooint_opcode);
+ break;
}
trap_opcode = g_arm_breakpoint_opcode;
trap_opcode_size = sizeof(g_arm_breakpoint_opcode);
@@ -186,7 +191,7 @@ PlatformDarwin::GetSoftwareBreakpointTrapOpcode (Target &target, BreakpointSite
break;
default:
- assert(!"Unhandled architecture in ProcessMacOSX::GetSoftwareBreakpointTrapOpcode()");
+ assert(!"Unhandled architecture in PlatformDarwin::GetSoftwareBreakpointTrapOpcode()");
break;
}
diff --git a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
index 70685f751d3..2ae4a903353 100644
--- a/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
+++ b/lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp
@@ -473,14 +473,14 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
default:
switch (idx)
{
- case 0: arch.SetTriple ("armv7-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv7f-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv7k-apple-darwin"); return true;
- case 3: arch.SetTriple ("armv7s-apple-darwin"); return true;
- case 4: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 5: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 6: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 7: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv7-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv7f-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv7k-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("armv7s-apple-darwin", NULL); return true;
+ case 4: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 5: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 6: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 7: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -488,12 +488,12 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv7f:
switch (idx)
{
- case 0: arch.SetTriple ("armv7f-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv7-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 3: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 4: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 5: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv7f-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv7-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 4: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 5: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -501,12 +501,12 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv7k:
switch (idx)
{
- case 0: arch.SetTriple ("armv7k-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv7-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 3: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 4: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 5: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv7k-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv7-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 4: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 5: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -514,12 +514,12 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv7s:
switch (idx)
{
- case 0: arch.SetTriple ("armv7s-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv7-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 3: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 4: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 5: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv7s-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv7-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 4: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 5: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -527,11 +527,11 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv7:
switch (idx)
{
- case 0: arch.SetTriple ("armv7-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 3: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 4: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv7-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 4: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -539,10 +539,10 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv6:
switch (idx)
{
- case 0: arch.SetTriple ("armv6-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 2: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 3: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv6-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 3: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -550,9 +550,9 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv5:
switch (idx)
{
- case 0: arch.SetTriple ("armv5-apple-darwin"); return true;
- case 1: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 2: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv5-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 2: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
@@ -560,8 +560,8 @@ PlatformRemoteiOS::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch
case ArchSpec::eCore_arm_armv4:
switch (idx)
{
- case 0: arch.SetTriple ("armv4-apple-darwin"); return true;
- case 1: arch.SetTriple ("arm-apple-darwin"); return true;
+ case 0: arch.SetTriple ("armv4-apple-darwin", NULL); return true;
+ case 1: arch.SetTriple ("arm-apple-darwin", NULL); return true;
default: break;
}
break;
OpenPOWER on IntegriCloud