Stop linking libdl.a into static bins
libdl.a has a no-op dlopen, which breaks static libraries that need a real dlopen. Instead of automatically linking libdl.a into static executables, make it optional. Until recently, the libunwind_llvm.a unwinder, used on arm32, needed the no-op dladdr, but it's now built using -D_LIBUNWIND_USE_DLADDR=0. The HWASan run-time uses dlsym and dladdr, so add a libdl dependency for HWASan-built static binaries. We could also remove the dependency from libclang_rt.hwasan_static-*.a, but this is also easy to do. Bug: http://b/141485154 Test: bionic unit tests, device boots, verify that static and dynamic executables can throw/catch an exception Test: verify that a static executable using dlopen doesn't link (unless it adds an explicit dependency on libdl) Change-Id: Ic52c3f336b671b4ed335e99c94a64dfe8614b618
This commit is contained in:
@@ -158,7 +158,7 @@ func (binary *binaryDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
|
||||
|
||||
if binary.static() {
|
||||
if ctx.selectedStl() == "libc++_static" {
|
||||
deps.StaticLibs = append(deps.StaticLibs, "libm", "libc", "libdl")
|
||||
deps.StaticLibs = append(deps.StaticLibs, "libm", "libc")
|
||||
}
|
||||
// static libraries libcompiler_rt, libc and libc_nomalloc need to be linked with
|
||||
// --start-group/--end-group along with libgcc. If they are in deps.StaticLibs,
|
||||
|
Reference in New Issue
Block a user