opnsense-src/contrib/llvm/tools/lldb/source/API/SBSourceManager.cpp
Ed Maste 1c3bbb013d Update LLDB snapshot to upstream r241361
Notable upstream commits (upstream revision in parens):

- Add a JSON producer to LLDB (228636)
- Don't crash on bad DWARF expression (228729)
- Add support of DWARFv3 DW_OP_form_tls_address (231342)
- Assembly profiler for MIPS64 (232619)
- Handle FreeBSD/arm64 core files (233273)
- Read/Write register for MIPS64 (233685)
- Rework LLDB system initialization (233758)
- SysV ABI for aarch64 (236098)
- MIPS software single stepping (236696)
- FreeBSD/arm live debugging support (237303)
- Assembly profiler for mips32 (237420)
- Parse function name from DWARF DW_AT_abstract_origin (238307)
- Improve LLDB prompt handling (238313)
- Add real time signals support to FreeBSDSignals (238316)
- Fix race in IOHandlerProcessSTDIO (238423)
- MIPS64 Branch instruction emulation for SW single stepping (238820)
- Improve OSType initialization in elf object file's arch_spec (239148)
- Emulation of MIPS64 floating-point branch instructions (239996)
- ABI Plugin for MIPS32 (239997)
- ABI Plugin for MIPS64 (240123)
- MIPS32 branch emulation and single stepping (240373)
- Improve instruction emulation based stack unwinding on ARM (240533)
- Add branch emulation to aarch64 instruction emulator (240769)
2015-07-04 01:02:43 +00:00

144 lines
4.8 KiB
C++

//===-- SBSourceManager.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/API/SBDebugger.h"
#include "lldb/API/SBSourceManager.h"
#include "lldb/API/SBTarget.h"
#include "lldb/API/SBStream.h"
#include "lldb/API/SBFileSpec.h"
#include "lldb/Core/Debugger.h"
#include "lldb/Core/Stream.h"
#include "lldb/Core/StreamFile.h"
#include "lldb/Core/SourceManager.h"
#include "lldb/Target/Target.h"
namespace lldb_private
{
class SourceManagerImpl
{
public:
SourceManagerImpl (const lldb::DebuggerSP &debugger_sp) :
m_debugger_wp (debugger_sp),
m_target_wp ()
{
}
SourceManagerImpl (const lldb::TargetSP &target_sp) :
m_debugger_wp (),
m_target_wp (target_sp)
{
}
SourceManagerImpl (const SourceManagerImpl &rhs)
{
if (&rhs == this)
return;
m_debugger_wp = rhs.m_debugger_wp;
m_target_wp = rhs.m_target_wp;
}
size_t
DisplaySourceLinesWithLineNumbers (const lldb_private::FileSpec &file,
uint32_t line,
uint32_t context_before,
uint32_t context_after,
const char *current_line_cstr,
lldb_private::Stream *s)
{
if (!file)
return 0;
lldb::TargetSP target_sp (m_target_wp.lock());
if (target_sp)
{
return target_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
line,
context_before,
context_after,
current_line_cstr,
s);
}
else
{
lldb::DebuggerSP debugger_sp (m_debugger_wp.lock());
if (debugger_sp)
{
return debugger_sp->GetSourceManager().DisplaySourceLinesWithLineNumbers (file,
line,
context_before,
context_after,
current_line_cstr,
s);
}
}
return 0;
}
private:
lldb::DebuggerWP m_debugger_wp;
lldb::TargetWP m_target_wp;
};
}
using namespace lldb;
using namespace lldb_private;
SBSourceManager::SBSourceManager (const SBDebugger &debugger)
{
m_opaque_ap.reset(new SourceManagerImpl (debugger.get_sp()));
}
SBSourceManager::SBSourceManager (const SBTarget &target)
{
m_opaque_ap.reset(new SourceManagerImpl (target.GetSP()));
}
SBSourceManager::SBSourceManager (const SBSourceManager &rhs)
{
if (&rhs == this)
return;
m_opaque_ap.reset(new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
}
const lldb::SBSourceManager &
SBSourceManager::operator = (const lldb::SBSourceManager &rhs)
{
m_opaque_ap.reset (new SourceManagerImpl (*(rhs.m_opaque_ap.get())));
return *this;
}
SBSourceManager::~SBSourceManager()
{
}
size_t
SBSourceManager::DisplaySourceLinesWithLineNumbers
(
const SBFileSpec &file,
uint32_t line,
uint32_t context_before,
uint32_t context_after,
const char *current_line_cstr,
SBStream &s
)
{
if (m_opaque_ap.get() == NULL)
return 0;
return m_opaque_ap->DisplaySourceLinesWithLineNumbers (file.ref(),
line,
context_before,
context_after,
current_line_cstr,
s.get());
}