The lldb unwinder can now use the unwind information from the compact-unwind
authorJason Molenda <jmolenda@apple.com>
Mon, 8 Dec 2014 03:09:00 +0000 (03:09 +0000)
committerJason Molenda <jmolenda@apple.com>
Mon, 8 Dec 2014 03:09:00 +0000 (03:09 +0000)
commite589e7e3368701245a32dbeb7d7d94a91072c015
tree23a9d9618b359595eba4913ffcc271155be8110d
parent2b6e66267283215c7c5078d1df997df1380084f7
The lldb unwinder can now use the unwind information from the compact-unwind
section for x86_64 and i386 targets on Darwin systems.  Currently only the
compact unwind encoding for normal frame-using functions is supported but it
will be easy handle frameless functions when I have a bit more free time to
test it.  The LSDA and personality routines for functions are also retrieved
correctly for functions from the compact unwind section.

This new code is very fresh -- it passes the lldb testsuite and I've done
by-hand inspection of many functions and am getting correct behavior for all
of them.  There may need to be some bug fixing over the next couple weeks as
I exercise and test it further.  But I think it's fine right now so I'm
committing it.

<rdar://problem/13220837>

llvm-svn: 223625
17 files changed:
lldb/include/lldb/Symbol/CompactUnwindInfo.h [new file with mode: 0644]
lldb/include/lldb/Symbol/FuncUnwinders.h
lldb/include/lldb/Symbol/UnwindTable.h
lldb/include/lldb/lldb-enumerations.h
lldb/include/lldb/lldb-forward.h
lldb/lldb.xcodeproj/project.pbxproj
lldb/source/Commands/CommandObjectTarget.cpp
lldb/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
lldb/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
lldb/source/Plugins/UnwindAssembly/x86/UnwindAssembly-x86.cpp
lldb/source/Symbol/CMakeLists.txt
lldb/source/Symbol/CompactUnwindInfo.cpp [new file with mode: 0644]
lldb/source/Symbol/FuncUnwinders.cpp
lldb/source/Symbol/ObjectFile.cpp
lldb/source/Symbol/UnwindTable.cpp
lldb/source/lldb.cpp
lldb/tools/compact-unwind/compact-unwind-dumper.c