Fix removal of unreferenced ASAN API functions
When a DLL is instrumented with ASAN, there is some thunks introduced that dynamically resolved the function through the imports table and redirect the call from the DLL to the main executable. Unfortunately, unreferenced functions recently got removed by the linker. Without this fix this function is not part of the final executable: __asan_locate_address % dumpbin D:\src\chromium\src\out\ninja64\initialexe\chrome.exe /exports | grep asan_l This is making chrome to crash on startup when loading chrome_elf.dll. ASAN is failing to hook on a function and call abort, which is also failing because ASAN is still in the "tls-initialisation" phase. R=ochang@chromium.org, rnk@chromium.org, thakis@chromium.org, chrisha@chromium.org BUG= Review-Url: https://codereview.chromium.org/2710573003 Cr-Original-Commit-Position: refs/heads/master@{#451836} Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src Cr-Mirrored-Commit: 803397e04777bc734a9c028813351c2e5079faf1
This commit is contained in:
Родитель
769428e39e
Коммит
fbe2ae32dc
|
@ -344,9 +344,11 @@ config("link_executable") {
|
||||||
# Windows 64-bit. TODO(etienneb): Remove the assert when this is ready.
|
# Windows 64-bit. TODO(etienneb): Remove the assert when this is ready.
|
||||||
assert(false, "win/asan does not work in 64-bit yet")
|
assert(false, "win/asan does not work in 64-bit yet")
|
||||||
libs = [ "clang_rt.asan-x86_64.lib" ]
|
libs = [ "clang_rt.asan-x86_64.lib" ]
|
||||||
|
ldflags = [ "-wholearchive:clang_rt.asan-x86_64.lib" ]
|
||||||
} else {
|
} else {
|
||||||
assert(target_cpu == "x86", "WinASan unsupported architecture")
|
assert(target_cpu == "x86", "WinASan unsupported architecture")
|
||||||
libs = [ "clang_rt.asan-i386.lib" ]
|
libs = [ "clang_rt.asan-i386.lib" ]
|
||||||
|
ldflags = [ "-wholearchive:clang_rt.asan-i386.lib" ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче