diff options
author | Greg Clayton <gclayton@apple.com> | 2011-04-07 22:46:35 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-04-07 22:46:35 +0000 |
commit | eb0103f2d08a13812614da6f4dc3f6bb80c7aa21 (patch) | |
tree | dbf5eb8c26e985bc82f53cb4030cee1f0bbfba11 /lldb/source/Plugins/Platform/MacOSX | |
parent | 165a07adf94e4b81e7ed110158688b1426fe9f76 (diff) | |
download | bcm5719-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.cpp | 27 | ||||
-rw-r--r-- | lldb/source/Plugins/Platform/MacOSX/PlatformRemoteiOS.cpp | 80 |
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; |