зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1543555 - Stop using our linker to resolve libc/libm symbols when not strictly necessary. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D27019 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
349901dac4
Коммит
492bd126b6
|
@ -592,11 +592,16 @@ void ElfLoader::Init() {
|
|||
self_elf = LoadedElf::Create(info.dli_fname, info.dli_fbase);
|
||||
}
|
||||
#if defined(ANDROID)
|
||||
if (dladdr(FunctionPtr(syscall), &info) != 0) {
|
||||
libc = LoadedElf::Create(info.dli_fname, info.dli_fbase);
|
||||
}
|
||||
if (dladdr(FunctionPtr<int (*)(double)>(isnan), &info) != 0) {
|
||||
libm = LoadedElf::Create(info.dli_fname, info.dli_fbase);
|
||||
// On Android < 5.0, resolving weak symbols via dlsym doesn't work.
|
||||
// The weak symbols Gecko uses are in either libc or libm, so we
|
||||
// wrap those such that this linker does symbol resolution for them.
|
||||
if (GetAndroidSDKVersion() < 21) {
|
||||
if (dladdr(FunctionPtr(syscall), &info) != 0) {
|
||||
libc = LoadedElf::Create(info.dli_fname, info.dli_fbase);
|
||||
}
|
||||
if (dladdr(FunctionPtr<int (*)(double)>(isnan), &info) != 0) {
|
||||
libm = LoadedElf::Create(info.dli_fname, info.dli_fbase);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче