[Lldb-commits] [lldb] r154633 - in /lldb/trunk: include/lldb/ include/lldb/API/ include/lldb/Core/ include/lldb/Symbol/ include/lldb/Target/ scripts/Python/interface/ source/API/ source/Plugins/Disassembler/llvm/ source/Plugins/ObjectFile/Mach-O/
Greg Clayton
gclayton at apple.com
Thu Apr 12 17:07:35 PDT 2012
Author: gclayton
Date: Thu Apr 12 19:07:34 2012
New Revision: 154633
URL: http://llvm.org/viewvc/llvm-project?rev=154633&view=rev
Log:
Expose GetAddressClass() from both the SBAddress and SBInstruction so clients can tell the difference between ARM/Thumb opcodes when disassembling ARM.
Modified:
lldb/trunk/include/lldb/API/SBAddress.h
lldb/trunk/include/lldb/API/SBInstruction.h
lldb/trunk/include/lldb/Core/Address.h
lldb/trunk/include/lldb/Core/Disassembler.h
lldb/trunk/include/lldb/Symbol/ObjectFile.h
lldb/trunk/include/lldb/Target/Target.h
lldb/trunk/include/lldb/lldb-enumerations.h
lldb/trunk/include/lldb/lldb-private-enumerations.h
lldb/trunk/scripts/Python/interface/SBAddress.i
lldb/trunk/scripts/Python/interface/SBInstruction.i
lldb/trunk/source/API/SBAddress.cpp
lldb/trunk/source/API/SBInstruction.cpp
lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h
lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
Modified: lldb/trunk/include/lldb/API/SBAddress.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBAddress.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBAddress.h (original)
+++ lldb/trunk/include/lldb/API/SBAddress.h Thu Apr 12 19:07:34 2012
@@ -100,6 +100,8 @@
lldb::SBLineEntry
GetLineEntry ();
+ lldb::AddressClass
+ GetAddressClass ();
protected:
Modified: lldb/trunk/include/lldb/API/SBInstruction.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/API/SBInstruction.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/API/SBInstruction.h (original)
+++ lldb/trunk/include/lldb/API/SBInstruction.h Thu Apr 12 19:07:34 2012
@@ -39,6 +39,9 @@
SBAddress
GetAddress();
+ lldb::AddressClass
+ GetAddressClass ();
+
const char *
GetMnemonic (lldb::SBTarget target);
Modified: lldb/trunk/include/lldb/Core/Address.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Address.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Address.h (original)
+++ lldb/trunk/include/lldb/Core/Address.h Thu Apr 12 19:07:34 2012
@@ -250,7 +250,7 @@
DumpStyle fallback_style = DumpStyleInvalid,
uint32_t addr_byte_size = UINT32_MAX) const;
- AddressClass
+ lldb::AddressClass
GetAddressClass () const;
//------------------------------------------------------------------
Modified: lldb/trunk/include/lldb/Core/Disassembler.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/Disassembler.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Core/Disassembler.h (original)
+++ lldb/trunk/include/lldb/Core/Disassembler.h Thu Apr 12 19:07:34 2012
@@ -30,7 +30,7 @@
{
public:
Instruction (const Address &address,
- AddressClass addr_class = eAddressClassInvalid);
+ lldb::AddressClass addr_class = lldb::eAddressClassInvalid);
virtual
~Instruction();
@@ -64,7 +64,7 @@
virtual void
CalculateMnemonicOperandsAndComment (ExecutionContextScope *exe_scope) = 0;
- AddressClass
+ lldb::AddressClass
GetAddressClass ();
void
@@ -72,7 +72,7 @@
{
// Invalidate the address class to lazily discover
// it if we need to.
- m_address_class = eAddressClassInvalid;
+ m_address_class = lldb::eAddressClassInvalid;
m_address = addr;
}
@@ -130,7 +130,7 @@
// The usual value will be eAddressClassCode, but often when
// disassembling memory, you might run into data. This can
// help us to disassemble appropriately.
- AddressClass m_address_class;
+ lldb::AddressClass m_address_class;
Opcode m_opcode; // The opcode for this instruction
std::string m_opcode_name;
std::string m_mnemocics;
Modified: lldb/trunk/include/lldb/Symbol/ObjectFile.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Symbol/ObjectFile.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Symbol/ObjectFile.h (original)
+++ lldb/trunk/include/lldb/Symbol/ObjectFile.h Thu Apr 12 19:07:34 2012
@@ -200,7 +200,7 @@
/// architecture (and object for archives). Returns zero if no
/// architecture or object has been selected.
//------------------------------------------------------------------
- virtual AddressClass
+ virtual lldb::AddressClass
GetAddressClass (lldb::addr_t file_addr);
//------------------------------------------------------------------
Modified: lldb/trunk/include/lldb/Target/Target.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Target.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Target/Target.h (original)
+++ lldb/trunk/include/lldb/Target/Target.h Thu Apr 12 19:07:34 2012
@@ -597,7 +597,7 @@
/// returned.
//------------------------------------------------------------------
lldb::addr_t
- GetCallableLoadAddress (lldb::addr_t load_addr, AddressClass addr_class = lldb_private::eAddressClassInvalid) const;
+ GetCallableLoadAddress (lldb::addr_t load_addr, lldb::AddressClass addr_class = lldb::eAddressClassInvalid) const;
//------------------------------------------------------------------
/// Get \a load_addr as an opcode for this target.
@@ -612,7 +612,7 @@
/// returned.
//------------------------------------------------------------------
lldb::addr_t
- GetOpcodeLoadAddress (lldb::addr_t load_addr, AddressClass addr_class = lldb_private::eAddressClassInvalid) const;
+ GetOpcodeLoadAddress (lldb::addr_t load_addr, lldb::AddressClass addr_class = lldb::eAddressClassInvalid) const;
protected:
void
Modified: lldb/trunk/include/lldb/lldb-enumerations.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-enumerations.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/lldb-enumerations.h (original)
+++ lldb/trunk/include/lldb/lldb-enumerations.h Thu Apr 12 19:07:34 2012
@@ -626,6 +626,27 @@
eFrameCompareOlder
} FrameComparison;
+ //----------------------------------------------------------------------
+ // Address Class
+ //
+ // A way of classifying an address used for disassembling and setting
+ // breakpoints. Many object files can track exactly what parts of their
+ // object files are code, data and other information. This is of course
+ // above and beyond just looking at the section types. For example, code
+ // might contain PC relative data and the object file might be able to
+ // tell us that an address in code is data.
+ //----------------------------------------------------------------------
+ typedef enum AddressClass
+ {
+ eAddressClassInvalid,
+ eAddressClassUnknown,
+ eAddressClassCode,
+ eAddressClassCodeAlternateISA,
+ eAddressClassData,
+ eAddressClassDebug,
+ eAddressClassRuntime
+ } AddressClass;
+
} // namespace lldb
Modified: lldb/trunk/include/lldb/lldb-private-enumerations.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-private-enumerations.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/include/lldb/lldb-private-enumerations.h (original)
+++ lldb/trunk/include/lldb/lldb-private-enumerations.h Thu Apr 12 19:07:34 2012
@@ -37,27 +37,6 @@
} AddressType;
//----------------------------------------------------------------------
-// Address Class
-//
-// A way of classifying an address used for disassembling and setting
-// breakpoints. Many object files can track exactly what parts of their
-// object files are code, data and other information. This is of course
-// above and beyond just looking at the section types. For example, code
-// might contain PC relative data and the object file might be able to
-// tell us that an address in code is data.
-//----------------------------------------------------------------------
-typedef enum AddressClass
-{
- eAddressClassInvalid,
- eAddressClassUnknown,
- eAddressClassCode,
- eAddressClassCodeAlternateISA,
- eAddressClassData,
- eAddressClassDebug,
- eAddressClassRuntime
-} AddressClass;
-
-//----------------------------------------------------------------------
// Votes - Need a tri-state, yes, no, no opinion...
//----------------------------------------------------------------------
typedef enum Vote
Modified: lldb/trunk/scripts/Python/interface/SBAddress.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Python/interface/SBAddress.i?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/scripts/Python/interface/SBAddress.i (original)
+++ lldb/trunk/scripts/Python/interface/SBAddress.i Thu Apr 12 19:07:34 2012
@@ -93,6 +93,9 @@
lldb::addr_t offset);
+ lldb::AddressClass
+ GetAddressClass ();
+
%feature("docstring", "
//------------------------------------------------------------------
/// GetSymbolContext() and the following can lookup symbol information for a given address.
Modified: lldb/trunk/scripts/Python/interface/SBInstruction.i
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/scripts/Python/interface/SBInstruction.i?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/scripts/Python/interface/SBInstruction.i (original)
+++ lldb/trunk/scripts/Python/interface/SBInstruction.i Thu Apr 12 19:07:34 2012
@@ -27,9 +27,12 @@
bool
IsValid();
- SBAddress
+ lldb::SBAddress
GetAddress();
+ lldb::AddressClass
+ GetAddressClass ();
+
const char *
GetMnemonic (lldb::SBTarget target);
Modified: lldb/trunk/source/API/SBAddress.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBAddress.cpp?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/source/API/SBAddress.cpp (original)
+++ lldb/trunk/source/API/SBAddress.cpp Thu Apr 12 19:07:34 2012
@@ -313,4 +313,11 @@
return sb_line_entry;
}
+AddressClass
+SBAddress::GetAddressClass ()
+{
+ if (m_opaque_ap.get())
+ return m_opaque_ap->GetAddressClass();
+ return eAddressClassInvalid;
+}
Modified: lldb/trunk/source/API/SBInstruction.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/API/SBInstruction.cpp?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/source/API/SBInstruction.cpp (original)
+++ lldb/trunk/source/API/SBInstruction.cpp Thu Apr 12 19:07:34 2012
@@ -237,3 +237,11 @@
return m_opaque_sp->TestEmulation (output_stream.get(), test_file);
}
+
+lldb::AddressClass
+SBInstruction::GetAddressClass ()
+{
+ if (m_opaque_sp.get())
+ return m_opaque_sp->GetAddressClass();
+ return eAddressClassInvalid;
+}
Modified: lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h (original)
+++ lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h Thu Apr 12 19:07:34 2012
@@ -20,7 +20,7 @@
{
public:
InstructionLLVM (const lldb_private::Address &addr,
- lldb_private::AddressClass addr_class,
+ lldb::AddressClass addr_class,
EDDisassemblerRef disassembler,
llvm::Triple::ArchType arch_type);
Modified: lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp (original)
+++ lldb/trunk/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp Thu Apr 12 19:07:34 2012
@@ -32,7 +32,7 @@
public:
InstructionLLVMC (DisassemblerLLVMC &disasm,
const lldb_private::Address &address,
- lldb_private::AddressClass addr_class) :
+ AddressClass addr_class) :
Instruction(address, addr_class),
m_is_valid(false),
m_disasm(disasm),
@@ -350,7 +350,7 @@
}
template <bool Reparse> bool Parse (const lldb_private::Address &address,
- lldb_private::AddressClass addr_class,
+ AddressClass addr_class,
const DataExtractor &extractor,
uint32_t data_offset,
lldb_private::ExecutionContextScope *exe_scope)
Modified: lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h?rev=154633&r1=154632&r2=154633&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h (original)
+++ lldb/trunk/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h Thu Apr 12 19:07:34 2012
@@ -88,7 +88,7 @@
virtual size_t
GetAddressByteSize () const;
- virtual lldb_private::AddressClass
+ virtual lldb::AddressClass
GetAddressClass (lldb::addr_t file_addr);
virtual lldb_private::Symtab *
More information about the lldb-commits
mailing list