[Lldb-commits] [PATCH] Refactor POSIXThread::GetRegisterContext and use i386 register context

Ed Maste emaste at freebsd.org
Thu Feb 13 09:47:13 PST 2014


  Add missing breaks lost while trying to "clean up"

Hi tfiala,

http://llvm-reviews.chandlerc.com/D2765

CHANGE SINCE LAST DIFF
  http://llvm-reviews.chandlerc.com/D2765?vs=7061&id=7063#toc

Files:
  source/Plugins/Process/POSIX/POSIXThread.cpp

Index: source/Plugins/Process/POSIX/POSIXThread.cpp
===================================================================
--- source/Plugins/Process/POSIX/POSIXThread.cpp
+++ source/Plugins/Process/POSIX/POSIXThread.cpp
@@ -157,22 +157,29 @@
                         reg_interface = new RegisterContextFreeBSD_mips64(target_arch);
                         break;
                     default:
-                        assert(false && "OS not supported");
                         break;
                 }
-
-                if (reg_interface)
-                {
-                    RegisterContextPOSIXProcessMonitor_mips64 *reg_ctx = new RegisterContextPOSIXProcessMonitor_mips64(*this, 0, reg_interface);
-                    m_posix_thread = reg_ctx;
-                    m_reg_context_sp.reset(reg_ctx);
-                }
                 break;
             }
 
             case ArchSpec::eCore_x86_32_i386:
             case ArchSpec::eCore_x86_32_i486:
             case ArchSpec::eCore_x86_32_i486sx:
+            {
+                switch (target_arch.GetTriple().getOS())
+                {
+                    case llvm::Triple::FreeBSD:
+                        reg_interface = new RegisterContextFreeBSD_i386(target_arch);
+                        break;
+                    case llvm::Triple::Linux:
+                        reg_interface = new RegisterContextLinux_i386(target_arch);
+                        break;
+                    default:
+                        break;
+                }
+                break;
+            }
+
             case ArchSpec::eCore_x86_64_x86_64:
             {
                 switch (target_arch.GetTriple().getOS())
@@ -184,21 +191,37 @@
                         reg_interface = new RegisterContextLinux_x86_64(target_arch);
                         break;
                     default:
-                        assert(false && "OS not supported");
                         break;
                 }
+                break;
+            }
+            default:
+                break;
+        }
 
-                if (reg_interface)
-                {
-                    RegisterContextPOSIXProcessMonitor_x86_64 *reg_ctx = new RegisterContextPOSIXProcessMonitor_x86_64(*this, 0, reg_interface);
-                    m_posix_thread = reg_ctx;
-                    m_reg_context_sp.reset(reg_ctx);
-                }
+        assert(reg_interface && "CPU type or OS not supported!");
+
+        switch (target_arch.GetCore())
+        {
+            case ArchSpec::eCore_mips64:
+            {
+                RegisterContextPOSIXProcessMonitor_mips64 *reg_ctx = new RegisterContextPOSIXProcessMonitor_mips64(*this, 0, reg_interface);
+                m_posix_thread = reg_ctx;
+                m_reg_context_sp.reset(reg_ctx);
                 break;
             }
 
+            case ArchSpec::eCore_x86_32_i386:
+            case ArchSpec::eCore_x86_32_i486:
+            case ArchSpec::eCore_x86_32_i486sx:
+            case ArchSpec::eCore_x86_64_x86_64:
+            {
+                RegisterContextPOSIXProcessMonitor_x86_64 *reg_ctx = new RegisterContextPOSIXProcessMonitor_x86_64(*this, 0, reg_interface);
+                m_posix_thread = reg_ctx;
+                m_reg_context_sp.reset(reg_ctx);
+                break;
+            }
             default:
-                assert(false && "CPU type not supported!");
                 break;
         }
     }
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2765.2.patch
Type: text/x-patch
Size: 3441 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20140213/bec58ee4/attachment.bin>


More information about the lldb-commits mailing list