[Lldb-commits] [PATCH] D21221: Fix for PrintStackTraces

Jason Molenda via lldb-commits lldb-commits at lists.llvm.org
Wed Jun 15 01:40:02 PDT 2016

jasonmolenda added a comment.

Regarding the part of the patch where eh_frame is used unconditionally on Linux systems, I'm hesitant to make a change like that (beyond the notes I mentioned earlier about how I'd do it in FuncUnwinders instead of down in RegisterContextLLDB).  Modern gcc's put out eh_frame with prologue and epilogue descriptions on x86_64 - but there's no guarantee that eh_frame we see on a linux or bsd system will come from a modern gcc.  For instance, clang (last I checked) does not emit epilogue information in the eh_frame (as did gcc until a few years ago).  gdb does pretty well relying exclusively on eh_frame, but the design of the lldb unwinder was to do better than gdb, by using multiple sources of unwind information.

Of all the unwind info sources, eh_frame is the most frustrating, IMO.  It *can* be everything a debugger could ever need -- but it isn't guaranteed to be that.   It's only guaranteed to be enough for exception handling, which is a very different set of requirements from what a debugger needs.  And there's no reliable way for a debugger to tell how descriptive an eh_frame entry is.


More information about the lldb-commits mailing list