linux: don't assume vdso exists

AT_SYSINFO_EHDR may be defined even if no vdso is used. e.g. 32-bit ARM
processes have a vdso on 64-bit ARM cpus, but not on 32-bit cpus.

Change-Id: I4d9ce029bb47efc33ea16cb4c5c2055c1b9330c9
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/1860935
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
Joshua Peraza 2019-10-14 14:14:06 -07:00 committed by Commit Bot
parent d8f85829b0
commit 7289acb78a

View File

@ -120,8 +120,9 @@ void TestAgainstCloneOrSelf(pid_t pid) {
#if defined(AT_SYSINFO_EHDR)
LinuxVMAddress vdso_addr;
ASSERT_TRUE(aux.GetValue(AT_SYSINFO_EHDR, &vdso_addr));
EXPECT_TRUE(mappings.FindMapping(vdso_addr));
if (aux.GetValue(AT_SYSINFO_EHDR, &vdso_addr)) {
EXPECT_TRUE(mappings.FindMapping(vdso_addr));
}
#endif // AT_SYSINFO_EHDR
#if defined(AT_EXECFN)