<rdar://problem/12602978>

RegisterContextKDP_i386 was not correctly writing registers due to missing "virtual" keywords. Added the virtual keywords and made the functions pure virtual to ensure subclasses can't get away without implementing these functions.

llvm-svn: 167066
diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
index 9d288a4..92afb42 100644
--- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
+++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
@@ -259,7 +259,7 @@
 {
 public:
     RegisterContextDarwin_arm_Mach (lldb_private::Thread &thread, const DataExtractor &data) :
-    RegisterContextDarwin_arm (thread, 0)
+        RegisterContextDarwin_arm (thread, 0)
     {
         SetRegisterDataFrom_LC_THREAD (data);
     }
@@ -316,6 +316,12 @@
     {
         return 0;
     }
+
+    virtual int
+    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg)
+    {
+        return -1;
+    }
     
     virtual int
     DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
@@ -334,6 +340,12 @@
     {
         return 0;
     }
+    
+    virtual int
+    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg)
+    {
+        return -1;
+    }
 };
 
 #define MACHO_NLIST_ARM_SYMBOL_IS_THUMB 0x0008
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
index eba341c..b8e91b7 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
@@ -284,47 +284,26 @@
         return -1;
     }
     
-    int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
     
-    int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
 
-    int
-    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg) = 0;
 
-    int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
-    int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
-    int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
 
-    int
-    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg) = 0;
 
     int
     ReadRegisterSet (uint32_t set, bool force);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h
index 773aa62..e2cde59 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h
@@ -230,40 +230,22 @@
 
     // Subclasses override these to do the actual reading.
     virtual int
-    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
-    {
-        return -1;
-    }
+    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr) = 0;
     
-    int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
 
-    int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
 
-    int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
-    int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
-    int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
 
     int
     ReadRegisterSet (uint32_t set, bool force);
diff --git a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h
index 8160cd0..a36b8cb 100644
--- a/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h
+++ b/lldb/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h
@@ -234,40 +234,22 @@
 
     // Subclasses override these to do the actual reading.
     virtual int
-    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
-    {
-        return -1;
-    }
+    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr) = 0;
     
     virtual int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
     
     virtual int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
     
     virtual int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
     virtual int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
     virtual int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
     
     int
     ReadRegisterSet (uint32_t set, bool force);