diff options
| -rw-r--r-- | lldb/include/lldb/API/SBAddress.h | 2 | ||||
| -rw-r--r-- | lldb/include/lldb/API/SBInstruction.h | 3 | ||||
| -rw-r--r-- | lldb/include/lldb/Core/Address.h | 2 | ||||
| -rw-r--r-- | lldb/include/lldb/Core/Disassembler.h | 8 | ||||
| -rw-r--r-- | lldb/include/lldb/Symbol/ObjectFile.h | 2 | ||||
| -rw-r--r-- | lldb/include/lldb/Target/Target.h | 4 | ||||
| -rw-r--r-- | lldb/include/lldb/lldb-enumerations.h | 21 | ||||
| -rw-r--r-- | lldb/include/lldb/lldb-private-enumerations.h | 21 | ||||
| -rw-r--r-- | lldb/scripts/Python/interface/SBAddress.i | 3 | ||||
| -rw-r--r-- | lldb/scripts/Python/interface/SBInstruction.i | 5 | ||||
| -rw-r--r-- | lldb/source/API/SBAddress.cpp | 7 | ||||
| -rw-r--r-- | lldb/source/API/SBInstruction.cpp | 8 | ||||
| -rw-r--r-- | lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h | 2 | ||||
| -rw-r--r-- | lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp | 4 | ||||
| -rw-r--r-- | lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h | 2 |
15 files changed, 60 insertions, 34 deletions
diff --git a/lldb/include/lldb/API/SBAddress.h b/lldb/include/lldb/API/SBAddress.h index 49a32ff8390..48626c7af89 100644 --- a/lldb/include/lldb/API/SBAddress.h +++ b/lldb/include/lldb/API/SBAddress.h @@ -100,6 +100,8 @@ public: lldb::SBLineEntry GetLineEntry (); + lldb::AddressClass + GetAddressClass (); protected: diff --git a/lldb/include/lldb/API/SBInstruction.h b/lldb/include/lldb/API/SBInstruction.h index e23144869ca..cdc4040c756 100644 --- a/lldb/include/lldb/API/SBInstruction.h +++ b/lldb/include/lldb/API/SBInstruction.h @@ -39,6 +39,9 @@ public: SBAddress GetAddress(); + lldb::AddressClass + GetAddressClass (); + const char * GetMnemonic (lldb::SBTarget target); diff --git a/lldb/include/lldb/Core/Address.h b/lldb/include/lldb/Core/Address.h index 23dac87e979..423bafa69c4 100644 --- a/lldb/include/lldb/Core/Address.h +++ b/lldb/include/lldb/Core/Address.h @@ -250,7 +250,7 @@ public: DumpStyle fallback_style = DumpStyleInvalid, uint32_t addr_byte_size = UINT32_MAX) const; - AddressClass + lldb::AddressClass GetAddressClass () const; //------------------------------------------------------------------ diff --git a/lldb/include/lldb/Core/Disassembler.h b/lldb/include/lldb/Core/Disassembler.h index 8553ded8211..5bd6b9c8a97 100644 --- a/lldb/include/lldb/Core/Disassembler.h +++ b/lldb/include/lldb/Core/Disassembler.h @@ -30,7 +30,7 @@ class Instruction { public: Instruction (const Address &address, - AddressClass addr_class = eAddressClassInvalid); + lldb::AddressClass addr_class = lldb::eAddressClassInvalid); virtual ~Instruction(); @@ -64,7 +64,7 @@ public: virtual void CalculateMnemonicOperandsAndComment (ExecutionContextScope *exe_scope) = 0; - AddressClass + lldb::AddressClass GetAddressClass (); void @@ -72,7 +72,7 @@ public: { // 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 @@ protected: // 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; diff --git a/lldb/include/lldb/Symbol/ObjectFile.h b/lldb/include/lldb/Symbol/ObjectFile.h index 6d7ccfb3d5a..3144096ff28 100644 --- a/lldb/include/lldb/Symbol/ObjectFile.h +++ b/lldb/include/lldb/Symbol/ObjectFile.h @@ -200,7 +200,7 @@ public: /// 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); //------------------------------------------------------------------ diff --git a/lldb/include/lldb/Target/Target.h b/lldb/include/lldb/Target/Target.h index 62d7b41a5f6..9f5568580f9 100644 --- a/lldb/include/lldb/Target/Target.h +++ b/lldb/include/lldb/Target/Target.h @@ -597,7 +597,7 @@ public: /// 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 @@ public: /// 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 diff --git a/lldb/include/lldb/lldb-enumerations.h b/lldb/include/lldb/lldb-enumerations.h index 6447f9d398a..8e1bc97ab98 100644 --- a/lldb/include/lldb/lldb-enumerations.h +++ b/lldb/include/lldb/lldb-enumerations.h @@ -626,6 +626,27 @@ namespace lldb { 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 diff --git a/lldb/include/lldb/lldb-private-enumerations.h b/lldb/include/lldb/lldb-private-enumerations.h index 8b5b03f2fd3..3b6fc8a8a8e 100644 --- a/lldb/include/lldb/lldb-private-enumerations.h +++ b/lldb/include/lldb/lldb-private-enumerations.h @@ -37,27 +37,6 @@ typedef enum AddressType } 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 diff --git a/lldb/scripts/Python/interface/SBAddress.i b/lldb/scripts/Python/interface/SBAddress.i index eeccff03332..0bc0c53f794 100644 --- a/lldb/scripts/Python/interface/SBAddress.i +++ b/lldb/scripts/Python/interface/SBAddress.i @@ -93,6 +93,9 @@ public: lldb::addr_t offset); + lldb::AddressClass + GetAddressClass (); + %feature("docstring", " //------------------------------------------------------------------ /// GetSymbolContext() and the following can lookup symbol information for a given address. diff --git a/lldb/scripts/Python/interface/SBInstruction.i b/lldb/scripts/Python/interface/SBInstruction.i index 01cebb1590c..3c0d65ef842 100644 --- a/lldb/scripts/Python/interface/SBInstruction.i +++ b/lldb/scripts/Python/interface/SBInstruction.i @@ -27,9 +27,12 @@ public: bool IsValid(); - SBAddress + lldb::SBAddress GetAddress(); + lldb::AddressClass + GetAddressClass (); + const char * GetMnemonic (lldb::SBTarget target); diff --git a/lldb/source/API/SBAddress.cpp b/lldb/source/API/SBAddress.cpp index 8e7560930db..6013fd38cf2 100644 --- a/lldb/source/API/SBAddress.cpp +++ b/lldb/source/API/SBAddress.cpp @@ -313,4 +313,11 @@ SBAddress::GetLineEntry () return sb_line_entry; } +AddressClass +SBAddress::GetAddressClass () +{ + if (m_opaque_ap.get()) + return m_opaque_ap->GetAddressClass(); + return eAddressClassInvalid; +} diff --git a/lldb/source/API/SBInstruction.cpp b/lldb/source/API/SBInstruction.cpp index 0a7bb73fa6f..996b01debc0 100644 --- a/lldb/source/API/SBInstruction.cpp +++ b/lldb/source/API/SBInstruction.cpp @@ -237,3 +237,11 @@ SBInstruction::TestEmulation (lldb::SBStream &output_stream, const char *test_f 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; +} diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h index 7e3af766892..3150ff641f8 100644 --- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h +++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVM.h @@ -20,7 +20,7 @@ class InstructionLLVM : public lldb_private::Instruction { public: InstructionLLVM (const lldb_private::Address &addr, - lldb_private::AddressClass addr_class, + lldb::AddressClass addr_class, EDDisassemblerRef disassembler, llvm::Triple::ArchType arch_type); diff --git a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp index 408f87b1d79..a41ff6e77f3 100644 --- a/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp +++ b/lldb/source/Plugins/Disassembler/llvm/DisassemblerLLVMC.cpp @@ -32,7 +32,7 @@ class InstructionLLVMC : public lldb_private::Instruction 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 @@ protected: } 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) diff --git a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h index 0790c6c6de6..e6a4931de1d 100644 --- a/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h +++ b/lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.h @@ -88,7 +88,7 @@ public: virtual size_t GetAddressByteSize () const; - virtual lldb_private::AddressClass + virtual lldb::AddressClass GetAddressClass (lldb::addr_t file_addr); virtual lldb_private::Symtab * |

