]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | //===-- sanitizer_procmaps_test.cc ----------------------------------------===// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | // | |
10 | // This file is a part of ThreadSanitizer/AddressSanitizer runtime. | |
11 | // | |
12 | //===----------------------------------------------------------------------===// | |
92a42be0 SL |
13 | #if !defined(_WIN32) // There are no /proc/maps on Windows. |
14 | ||
1a4d82fc JJ |
15 | #include "sanitizer_common/sanitizer_procmaps.h" |
16 | #include "gtest/gtest.h" | |
17 | ||
18 | #include <stdlib.h> | |
19 | ||
20 | static void noop() {} | |
21 | extern const char *argv0; | |
22 | ||
23 | namespace __sanitizer { | |
24 | ||
25 | #if SANITIZER_LINUX && !SANITIZER_ANDROID | |
26 | TEST(MemoryMappingLayout, CodeRange) { | |
27 | uptr start, end; | |
28 | bool res = GetCodeRangeForFile("[vdso]", &start, &end); | |
29 | EXPECT_EQ(res, true); | |
30 | EXPECT_GT(start, 0U); | |
31 | EXPECT_LT(start, end); | |
32 | } | |
33 | #endif | |
34 | ||
35 | TEST(MemoryMappingLayout, DumpListOfModules) { | |
36 | const char *last_slash = strrchr(argv0, '/'); | |
37 | const char *binary_name = last_slash ? last_slash + 1 : argv0; | |
38 | MemoryMappingLayout memory_mapping(false); | |
39 | const uptr kMaxModules = 100; | |
92a42be0 | 40 | LoadedModule modules[kMaxModules]; |
1a4d82fc JJ |
41 | uptr n_modules = memory_mapping.DumpListOfModules(modules, kMaxModules, 0); |
42 | EXPECT_GT(n_modules, 0U); | |
43 | bool found = false; | |
44 | for (uptr i = 0; i < n_modules; ++i) { | |
45 | if (modules[i].containsAddress((uptr)&noop)) { | |
46 | // Verify that the module name is sane. | |
47 | if (strstr(modules[i].full_name(), binary_name) != 0) | |
48 | found = true; | |
49 | } | |
92a42be0 | 50 | modules[i].clear(); |
1a4d82fc JJ |
51 | } |
52 | EXPECT_TRUE(found); | |
1a4d82fc JJ |
53 | } |
54 | ||
55 | } // namespace __sanitizer | |
92a42be0 | 56 | #endif // !defined(_WIN32) |