Stop using weak symbols in libvndksupport.

These weak symbols are no longer necessary because we no longer
need to statically link libvndksupport.

Furthermore, these symbols are not really optional when libvndksupport is
dynamically linked. When the library is linked with --as-needed the linker
may drop the reference to libdl_android.so, which leads to a failure to boot.

Bug: 146456667
Change-Id: I4d2290d8d0206e0d89665d4d872a7c53b3e1531b
This commit is contained in:
Peter Collingbourne 2019-12-17 15:24:00 -08:00
parent 18c6248ffe
commit 683192270f

View file

@ -26,9 +26,7 @@
#include <initializer_list>
__attribute__((weak)) extern "C" android_namespace_t* android_get_exported_namespace(const char*);
__attribute__((weak)) extern "C" void* android_dlopen_ext(const char*, int,
const android_dlextinfo*);
extern "C" android_namespace_t* android_get_exported_namespace(const char*);
namespace {
@ -42,10 +40,8 @@ struct VendorNamespace {
static VendorNamespace get_vendor_namespace() {
static VendorNamespace result = ([] {
for (const char* name : {"sphal", "default"}) {
if (android_get_exported_namespace != nullptr) {
if (android_namespace_t* ns = android_get_exported_namespace(name)) {
return VendorNamespace{ns, name};
}
if (android_namespace_t* ns = android_get_exported_namespace(name)) {
return VendorNamespace{ns, name};
}
}
return VendorNamespace{};
@ -59,10 +55,6 @@ int android_is_in_vendor_process() {
if (getpid() == 1) {
return 0;
}
if (android_get_exported_namespace == nullptr) {
ALOGD("android_get_exported_namespace() not available. Assuming system process.");
return 0;
}
// In vendor process, 'vndk' namespace is not visible, whereas in system
// process, it is.
@ -76,10 +68,7 @@ void* android_load_sphal_library(const char* name, int flag) {
.flags = ANDROID_DLEXT_USE_NAMESPACE,
.library_namespace = vendor_namespace.ptr,
};
void* handle = nullptr;
if (android_dlopen_ext != nullptr) {
handle = android_dlopen_ext(name, flag, &dlextinfo);
}
void* handle = android_dlopen_ext(name, flag, &dlextinfo);
if (!handle) {
ALOGE("Could not load %s from %s namespace: %s.", name, vendor_namespace.name,
dlerror());