Make const result value objects able to return dynamic types.

Modified the heap.py to be able to correctly indentify the exact ivar for the "ptr_refs" command no matter how deep the ivar is in a class hierarchy. Also fixed the ability for the heap command to symbolicate the stack backtrace when MallocStackLogging is set in the environment and the "--stack" option was specified.



git-svn-id: https://llvm.org/svn/llvm-project/lldb/trunk@159883 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/examples/python/symbolication.py b/examples/python/symbolication.py
index 87eaed4..3ac6acc 100755
--- a/examples/python/symbolication.py
+++ b/examples/python/symbolication.py
@@ -408,31 +408,30 @@
             image = self.find_image_containing_load_addr (load_addr)
             if image:
                 image.add_module (self.target)
-                symbolicated_address = Address(self.target, load_addr)
-                if symbolicated_address.symbolicate (verbose):
-            
-                    if symbolicated_address.so_addr:
-                        symbolicated_addresses = list()
-                        symbolicated_addresses.append(symbolicated_address)
-                        # See if we were able to reconstruct anything?
-                        while 1:
-                            inlined_parent_so_addr = lldb.SBAddress()
-                            inlined_parent_sym_ctx = symbolicated_address.sym_ctx.GetParentOfInlinedScope (symbolicated_address.so_addr, inlined_parent_so_addr)
-                            if not inlined_parent_sym_ctx:
-                                break
-                            if not inlined_parent_so_addr:
-                                break
+            symbolicated_address = Address(self.target, load_addr)
+            if symbolicated_address.symbolicate (verbose):
+                if symbolicated_address.so_addr:
+                    symbolicated_addresses = list()
+                    symbolicated_addresses.append(symbolicated_address)
+                    # See if we were able to reconstruct anything?
+                    while 1:
+                        inlined_parent_so_addr = lldb.SBAddress()
+                        inlined_parent_sym_ctx = symbolicated_address.sym_ctx.GetParentOfInlinedScope (symbolicated_address.so_addr, inlined_parent_so_addr)
+                        if not inlined_parent_sym_ctx:
+                            break
+                        if not inlined_parent_so_addr:
+                            break
 
-                            symbolicated_address = Address(self.target, inlined_parent_so_addr.GetLoadAddress(self.target))
-                            symbolicated_address.sym_ctx = inlined_parent_sym_ctx
-                            symbolicated_address.so_addr = inlined_parent_so_addr
-                            symbolicated_address.symbolicate (verbose)
-                
-                            # push the new frame onto the new frame stack
-                            symbolicated_addresses.append (symbolicated_address)
+                        symbolicated_address = Address(self.target, inlined_parent_so_addr.GetLoadAddress(self.target))
+                        symbolicated_address.sym_ctx = inlined_parent_sym_ctx
+                        symbolicated_address.so_addr = inlined_parent_so_addr
+                        symbolicated_address.symbolicate (verbose)
             
-                        if symbolicated_addresses:
-                            return symbolicated_addresses
+                        # push the new frame onto the new frame stack
+                        symbolicated_addresses.append (symbolicated_address)
+        
+                    if symbolicated_addresses:
+                        return symbolicated_addresses
         else:
             print 'error: no target in Symbolicator'
         return None