[LLDB] Fix display of value of a vector variables in watchpoint operations
Reviewers: clayborg, zturner. Subscribers: jaydeep, bhushan, sagar, nitesh.jain, brucem,lldb-commits. Differential Revision: http://reviews.llvm.org/D13202 llvm-svn: 249838
This commit is contained in:
parent
5df85cebfb
commit
18af8a20c5
|
@ -218,14 +218,31 @@ Watchpoint::DumpSnapshots(Stream *s, const char *prefix) const
|
|||
s->Printf("\nWatchpoint %u hit:", GetID());
|
||||
prefix = "";
|
||||
}
|
||||
|
||||
|
||||
if (m_old_value_sp)
|
||||
{
|
||||
s->Printf("\n%sold value: %s", prefix, m_old_value_sp->GetValueAsCString());
|
||||
const char *old_value_cstr = m_old_value_sp->GetValueAsCString();
|
||||
if (old_value_cstr && old_value_cstr[0])
|
||||
s->Printf("\n%sold value: %s", prefix, old_value_cstr);
|
||||
else
|
||||
{
|
||||
const char *old_summary_cstr = m_old_value_sp-> GetSummaryAsCString();
|
||||
if (old_summary_cstr && old_summary_cstr[0])
|
||||
s->Printf("\n%sold value: %s", prefix, old_summary_cstr);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_new_value_sp)
|
||||
{
|
||||
s->Printf("\n%snew value: %s", prefix, m_new_value_sp->GetValueAsCString());
|
||||
const char *new_value_cstr = m_new_value_sp->GetValueAsCString();
|
||||
if (new_value_cstr && new_value_cstr[0])
|
||||
s->Printf("\n%snew value: %s", prefix, new_value_cstr);
|
||||
else
|
||||
{
|
||||
const char *new_summary_cstr = m_new_value_sp-> GetSummaryAsCString();
|
||||
if (new_summary_cstr && new_summary_cstr[0])
|
||||
s->Printf("\n%snew value: %s", prefix, new_summary_cstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
LEVEL = ../../../make
|
||||
|
||||
C_SOURCES := main.c
|
||||
|
||||
include $(LEVEL)/Makefile.rules
|
|
@ -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()
|
|
@ -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()
|
||||
{
|
||||
}
|
Loading…
Reference in New Issue