Eliminate the static constructors and locks from DynamicLibrary.cpp.
authorChris Lattner <sabre@nondot.org>
Tue, 7 Jul 2009 18:17:07 +0000 (18:17 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 7 Jul 2009 18:17:07 +0000 (18:17 +0000)
commita9b7d60d67b054541cb8507d697eb94beee32f18
treec9435c5582bf802d722abc4bbe0e8a3d6972528d
parent72501b4a2138fcb32f8a6d71054bb1139d8b04b5
Eliminate the static constructors and locks from DynamicLibrary.cpp.
This fixes PR4512 and eliminating static ctors is always good.  Losing
thread safety is unfortunate, but the code is just incredibly poorly
designed.

If someone is interested, the "right" solution is to split
DynamicLibrary.cpp into two separate pieces: a stateless piece in
libsystem, and a simple support file in libsupport that has the
"state" (e.g.  AddSymbol) in managed static objects.

Doing this would both fix memory leaks we already have, as well as make
the code thread safe again.  it would also make sense to move all the
unix specific code in System/DynamicLibrary.cpp into
System/Unix/DynamicLibrary.inc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74927 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/System/DynamicLibrary.h
lib/System/DynamicLibrary.cpp