mirror of
https://github.com/intel/llvm.git
synced 2026-01-16 05:32:28 +08:00
use lldb_private::Target::ReadMemory(...) to allow constant strings to be displayed in global variables prior on in between process execution. Centralized the variable declaration dumping into: bool Variable::DumpDeclaration (Stream *s, bool show_fullpaths, bool show_module); Fixed an issue if you used "target variable --regex <regex>" where the variable name would not be displayed, but the regular expression would. Fixed an issue when viewing global variables through "target variable" might not display correctly when doing DWARF in object files. llvm-svn: 134878
118 lines
2.7 KiB
C++
118 lines
2.7 KiB
C++
//===-- Declaration.cpp -----------------------------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "lldb/Symbol/Declaration.h"
|
|
#include "lldb/Core/Stream.h"
|
|
|
|
using namespace lldb_private;
|
|
|
|
void
|
|
Declaration::Dump(Stream *s, bool show_fullpaths) const
|
|
{
|
|
if (m_file)
|
|
{
|
|
*s << ", decl = ";
|
|
if (show_fullpaths)
|
|
*s << m_file;
|
|
else
|
|
*s << m_file.GetFilename();
|
|
if (m_line > 0)
|
|
s->Printf(":%u", m_line);
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (m_column > 0)
|
|
s->Printf(":%u", m_column);
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
if (m_line > 0)
|
|
{
|
|
s->Printf(", line = %u", m_line);
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (m_column > 0)
|
|
s->Printf(":%u", m_column);
|
|
#endif
|
|
}
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
else if (m_column > 0)
|
|
s->Printf(", column = %u", m_column);
|
|
#endif
|
|
}
|
|
}
|
|
|
|
bool
|
|
Declaration::DumpStopContext (Stream *s, bool show_fullpaths) const
|
|
{
|
|
if (m_file)
|
|
{
|
|
if (show_fullpaths || s->GetVerbose())
|
|
*s << m_file;
|
|
else
|
|
m_file.GetFilename().Dump(s);
|
|
|
|
if (m_line > 0)
|
|
s->Printf(":%u", m_line);
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (m_column > 0)
|
|
s->Printf(":%u", m_column);
|
|
#endif
|
|
return true;
|
|
}
|
|
else if (m_line > 0)
|
|
{
|
|
s->Printf(" line %u", m_line);
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (m_column > 0)
|
|
s->Printf(":%u", m_column);
|
|
#endif
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
size_t
|
|
Declaration::MemorySize() const
|
|
{
|
|
return sizeof(Declaration);
|
|
}
|
|
|
|
int
|
|
Declaration::Compare(const Declaration& a, const Declaration& b)
|
|
{
|
|
int result = FileSpec::Compare(a.m_file, b.m_file, true);
|
|
if (result)
|
|
return result;
|
|
if (a.m_line < b.m_line)
|
|
return -1;
|
|
else if (a.m_line > b.m_line)
|
|
return 1;
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (a.m_column < b.m_column)
|
|
return -1;
|
|
else if (a.m_column > b.m_column)
|
|
return 1;
|
|
#endif
|
|
return 0;
|
|
}
|
|
|
|
bool
|
|
lldb_private::operator == (const Declaration &lhs, const Declaration &rhs)
|
|
{
|
|
#ifdef LLDB_ENABLE_DECLARATION_COLUMNS
|
|
if (lhs.GetColumn () == rhs.GetColumn ())
|
|
if (lhs.GetLine () == rhs.GetLine ())
|
|
return lhs.GetFile() == rhs.GetFile();
|
|
#else
|
|
if (lhs.GetLine () == rhs.GetLine ())
|
|
return lhs.GetFile() == rhs.GetFile();
|
|
#endif
|
|
return false;
|
|
}
|
|
|