The UnwindTable (one per module) used to hand out shared pointers
authorJason Molenda <jmolenda@apple.com>
Fri, 23 May 2014 00:08:09 +0000 (00:08 +0000)
committerJason Molenda <jmolenda@apple.com>
Fri, 23 May 2014 00:08:09 +0000 (00:08 +0000)
commitf5e8a14bd67d01065674ce955e27703d78ae88be
treee8ec5b2bed2dd5b520a7d317e3d66a344a58e2b2
parentcbb8438bb3b2a1f69b3bc9d5e0676b45f06a8876
The UnwindTable (one per module) used to hand out shared pointers
to its unwind assembly profiler to all of the FuncUnwinders (one
per symbol) under it.  If lldb is running multiple targets, you
could get two different FuncUnwinders in the same Module trying
to use the same llvm disassembler simultaneously and that may be
a re-entrancy problem.

Instead, the UnwindTable has the unwind assembly profiler and when
the FuncUnwinders want to use it, they get exclusive access to
the assembly profiler until they're done using it.
<rdar://problem/16992332>

llvm-svn: 209488
lldb/include/lldb/Symbol/FuncUnwinders.h
lldb/include/lldb/Symbol/UnwindTable.h
lldb/source/Symbol/FuncUnwinders.cpp
lldb/source/Symbol/UnwindTable.cpp