Some 32-bit arm corefiles on darwin may have their general purpose
register set indicated by ARM_THREAD_STATE32 (value 9) instead of
the old ARM_THREAD_STATE (value 1); this patch changes lldb to
accept either register set flavor code.

<rdar://problem/24246257>

llvm-svn: 258289
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 9c1e177..a3422ec 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -541,6 +541,7 @@
             lldb::offset_t next_thread_state = offset + (count * 4);
             switch (flavor)
             {
+                case GPRAltRegSet:
                 case GPRRegSet:
                     for (uint32_t i=0; i<count; ++i)
                     {
@@ -5059,7 +5060,7 @@
                         switch (m_header.cputype)
                         {
                         case llvm::MachO::CPU_TYPE_ARM:
-                           if (flavor == 1) // ARM_THREAD_STATE from mach/arm/thread_status.h
+                           if (flavor == 1 || flavor == 9) // ARM_THREAD_STATE/ARM_THREAD_STATE32 from mach/arm/thread_status.h
                            {
                                offset += 60;  // This is the offset of pc in the GPR thread state data structure.
                                start_address = m_data.GetU32(&offset);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp
index 452fb47..aa1bace 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.cpp
@@ -596,6 +596,7 @@
     switch (set)
     {
     case GPRRegSet:    return ReadGPR(force);
+    case GPRAltRegSet: return ReadGPR(force);
     case FPURegSet:    return ReadFPU(force);
     case EXCRegSet:    return ReadEXC(force);
     case DBGRegSet:    return ReadDBG(force);
@@ -613,6 +614,7 @@
         switch (set)
         {
         case GPRRegSet:    return WriteGPR();
+        case GPRAltRegSet: return WriteGPR();
         case FPURegSet:    return WriteFPU();
         case EXCRegSet:    return WriteEXC();
         case DBGRegSet:    return WriteDBG();
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
index f4d8225..4e831b5 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
@@ -162,10 +162,11 @@
 protected:
     enum
     {
-        GPRRegSet = 1, // ARM_THREAD_STATE
-        FPURegSet = 2, // ARM_VFP_STATE
-        EXCRegSet = 3, // ARM_EXCEPTION_STATE
-        DBGRegSet = 4  // ARM_DEBUG_STATE
+        GPRRegSet = 1,    // ARM_THREAD_STATE
+        GPRAltRegSet = 9, // ARM_THREAD_STATE32
+        FPURegSet = 2,    // ARM_VFP_STATE
+        EXCRegSet = 3,    // ARM_EXCEPTION_STATE
+        DBGRegSet = 4     // ARM_DEBUG_STATE
     };
 
     enum