Added extensive logging of the code that is actually going
to be executed by the inferior.  This required explicit support
from RecordingMemoryManager for finding the address range
belonging to a particular function.

Also fixed a bug in DisassemblerLLVM where the disassembler
assumed there was an AddressRange available even when it was
NULL.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@109209 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index 945ef87..ba98cb5 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -140,14 +140,18 @@
     int currentOpIndex = -1;
 
     lldb_private::Process *process = exe_ctx.process;
-    addr_t base_addr = LLDB_INVALID_ADDRESS;
-    if (process && process->IsAlive())
-        base_addr = inst_addr_ptr->GetLoadAddress (process);
-    if (base_addr == LLDB_INVALID_ADDRESS)
-        base_addr = inst_addr_ptr->GetFileAddress ();
-
-    RegisterReaderArg rra(base_addr + EDInstByteSize(m_inst), m_disassembler);
-
+    std::auto_ptr<RegisterReaderArg> rra;
+    
+    if (!raw)
+    {
+        addr_t base_addr = LLDB_INVALID_ADDRESS;
+        if (process && process->IsAlive())
+            base_addr = inst_addr_ptr->GetLoadAddress (process);
+        if (base_addr == LLDB_INVALID_ADDRESS)
+            base_addr = inst_addr_ptr->GetFileAddress ();
+        
+        rra.reset(new RegisterReaderArg(base_addr + EDInstByteSize(m_inst), m_disassembler));
+    }
 
     bool printTokenized = false;
 
@@ -228,7 +232,7 @@
                                 {
                                     uint64_t operand_value;
 
-                                    if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, &rra))
+                                    if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, rra.get()))
                                     {
                                         if (EDInstIsBranch(m_inst))
                                         {