mohit.bhakkad updated this revision to Diff 35879.
mohit.bhakkad added a comment.

Adding a simple test to check displayed value of vector


Repository:
  rL LLVM

http://reviews.llvm.org/D13202

Files:
  source/Breakpoint/Watchpoint.cpp
  test/functionalities/watchpoint/watchpoint_on_vectors/Makefile
  
test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py
  test/functionalities/watchpoint/watchpoint_on_vectors/main.c

Index: test/functionalities/watchpoint/watchpoint_on_vectors/main.c
===================================================================
--- /dev/null
+++ test/functionalities/watchpoint/watchpoint_on_vectors/main.c
@@ -0,0 +1,14 @@
+//===-- main.c --------------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+typedef short v8i16 __attribute__ ((vector_size(16)));
+v8i16 global_vector = {1, 2, 3, 4, 5, 6, 7, 8};
+
+int main()
+{
+}
Index: test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py
===================================================================
--- /dev/null
+++ test/functionalities/watchpoint/watchpoint_on_vectors/TestValueOfVectorVariable.py
@@ -0,0 +1,56 @@
+"""
+Test displayed value of a vector variable while doing watchpoint operations
+"""
+
+import os, time
+import unittest2
+import lldb
+from lldbtest import *
+import lldbutil
+
+class TestValueOfVectorVariableTestCase(TestBase):
+
+    mydir = TestBase.compute_mydir(__file__)
+
+    @dsym_test
+    def test_value_of_vector_variable_with_dsym_using_watchpoint_set(self):
+        """Test verify displayed value of vector variable."""
+        self.buildDsym(dictionary=self.d)
+        self.setTearDownCleanup(dictionary=self.d)
+        self.value_of_vector_variable_with_watchpoint_set()
+
+    @dwarf_test
+    def test_value_of_vector_variable_with_dwarf_using_watchpoint_set(self):
+        """Test verify displayed value of vector variable."""
+        self.buildDwarf(dictionary=self.d)
+        self.setTearDownCleanup(dictionary=self.d)
+        self.value_of_vector_variable_with_watchpoint_set()
+    
+    def setUp(self):
+        # Call super's setUp().
+        TestBase.setUp(self)
+        # Our simple source filename.
+        self.source = 'main.c'
+        self.exe_name = 'a.out'
+        self.d = {'C_SOURCES': self.source, 'EXE': self.exe_name}
+
+    def value_of_vector_variable_with_watchpoint_set(self):
+        """Test verify displayed value of vector variable"""
+        exe = os.path.join(os.getcwd(), 'a.out')
+        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
+
+        # Set break to get a frame
+        self.runCmd("b main")
+            
+        # Run the program.
+        self.runCmd("run", RUN_SUCCEEDED)
+
+        # Value of a vector variable should be displayed correctly
+        self.expect("watchpoint set variable global_vector", WATCHPOINT_CREATED,
+            substrs = ['new value: (1, 2, 3, 4, 5, 6, 7, 8)'])
+
+if __name__ == '__main__':
+    import atexit
+    lldb.SBDebugger.Initialize()
+    atexit.register(lambda: lldb.SBDebugger.Terminate())
+    unittest2.main()
Index: test/functionalities/watchpoint/watchpoint_on_vectors/Makefile
===================================================================
--- /dev/null
+++ test/functionalities/watchpoint/watchpoint_on_vectors/Makefile
@@ -0,0 +1,5 @@
+LEVEL = ../../../make
+
+C_SOURCES := main.c
+
+include $(LEVEL)/Makefile.rules
Index: source/Breakpoint/Watchpoint.cpp
===================================================================
--- source/Breakpoint/Watchpoint.cpp
+++ source/Breakpoint/Watchpoint.cpp
@@ -218,14 +218,21 @@
         s->Printf("\nWatchpoint %u hit:", GetID());
         prefix = "";
     }
-    
+
     if (m_old_value_sp)
     {
-        s->Printf("\n%sold value: %s", prefix, m_old_value_sp->GetValueAsCString());
+        if (m_old_value_sp->GetValueAsCString())
+            s->Printf("\n%sold value: %s", prefix, m_old_value_sp->GetValueAsCString());
+        else
+            s->Printf("\n%sold value: %s", prefix, m_old_value_sp->GetSummaryAsCString());
     }
+
     if (m_new_value_sp)
     {
-        s->Printf("\n%snew value: %s", prefix, m_new_value_sp->GetValueAsCString());
+        if (m_new_value_sp->GetValueAsCString())
+            s->Printf("\n%snew value: %s", prefix, m_new_value_sp->GetValueAsCString());
+        else
+            s->Printf("\n%snew value: %s", prefix, m_new_value_sp->GetSummaryAsCString());
     }
 }
 
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to