Don't enforce ABI stack alignment rules on the sigtramp frame --
its stack frame is a constructed, fake thing that may not conform
correctly to these rules.  This fixes a problem where lldb couldn't
backtrace past an asynchronous signal handler (_sigtramp) frame on
a stack on Mac OS X.
<rdar://problem/15035673> 

llvm-svn: 198450
diff --git a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
index 203d4c1..ddded5a 100644
--- a/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
+++ b/lldb/source/Plugins/Process/Utility/UnwindLLDB.cpp
@@ -171,12 +171,18 @@
     }
     if (abi && !abi->CallFrameAddressIsValid(cursor_sp->cfa))
     {
-        if (log)
+        // On Mac OS X, the _sigtramp asynchronous signal trampoline frame may not have
+        // its (constructed) CFA aligned correctly -- don't do the abi alignment check for
+        // these.
+        if (reg_ctx_sp->IsSigtrampFrame() == false)
         {
-            log->Printf("%*sFrame %d did not get a valid CFA for this frame, stopping stack walk",
-                        cur_idx < 100 ? cur_idx : 100, "", cur_idx);
+            if (log)
+            {
+                log->Printf("%*sFrame %d did not get a valid CFA for this frame, stopping stack walk",
+                            cur_idx < 100 ? cur_idx : 100, "", cur_idx);
+            }
+            goto unwind_done;
         }
-        goto unwind_done;
     }
     if (!reg_ctx_sp->ReadPC (cursor_sp->start_pc))
     {