[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