-
Notifications
You must be signed in to change notification settings - Fork 754
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Software compiled with -fsanitize=address fails to run with the error message "ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD". This commit fixes the issue by ignoring the [vdso] loaded shared library instead of linux-vdso.so. PR: 267751 Reported by: yuri
- Loading branch information
1 parent
20320b8
commit 2714142
Showing
2 changed files
with
19 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
Since the vDSO shared librares on Linux and FreeBSD are called | ||
differently, the initialization order check fails on FreeBSD. | ||
This patch fixes it by ignoring [vdso] instead of linux-vdso.so. | ||
|
||
GCC gets the original file from the LLVM Project, so this patch should | ||
probably be upstreamed directly to the LLVM Project rather than to GCC. | ||
|
||
--- libsanitizer/asan/asan_linux.cpp.orig 2022-11-23 10:52:45 UTC | ||
+++ libsanitizer/asan/asan_linux.cpp | ||
@@ -135,7 +135,7 @@ static int FindFirstDSOCallback(struct dl_phdr_info *i | ||
return 0; | ||
|
||
// Ignore vDSO | ||
- if (internal_strncmp(info->dlpi_name, "linux-", sizeof("linux-") - 1) == 0) | ||
+ if (internal_strncmp(info->dlpi_name, "[vdso]", sizeof("[vdso]") - 1) == 0) | ||
return 0; | ||
|
||
#if SANITIZER_FREEBSD || SANITIZER_NETBSD |