Fix address adjusment in stack frame inline block lookup

When the current address is pointing 1 (unit) over the end of a
section the we have to do a section lookup after making the adjusment
of the current address.

Differential revision: http://reviews.llvm.org/D10124

llvm-svn: 238737
diff --git a/lldb/source/Target/StackFrameList.cpp b/lldb/source/Target/StackFrameList.cpp
index 43a4b5b..05923d7 100644
--- a/lldb/source/Target/StackFrameList.cpp
+++ b/lldb/source/Target/StackFrameList.cpp
@@ -355,7 +355,21 @@
                 // address, else we decrement the address by one to get the correct
                 // location.
                 if (idx > 0)
-                    curr_frame_address.Slide(-1);
+                {
+                    if (curr_frame_address.GetOffset() == 0)
+                    {
+                        // If curr_frame_address points to the first address in a section then after
+                        // adjustment it will point to an other section. In that case resolve the
+                        // address again to the correct section plus offset form.
+                        TargetSP target = m_thread.CalculateTarget();
+                        addr_t load_addr = curr_frame_address.GetOpcodeLoadAddress(target.get());
+                        curr_frame_address.SetOpcodeLoadAddress(load_addr - 1, target.get());
+                    }
+                    else
+                    {
+                        curr_frame_address.Slide(-1);
+                    }
+                }
                     
                 SymbolContext next_frame_sc;
                 Address next_frame_address;