1 # - 22643565 - llvm's Google test harness needs some attention |
|
2 # For upstream - maytbe. |
|
3 --- utils/unittest/googletest/src/gtest-port.cc 2013-11-18 16:57:56.000000000 -0800 |
|
4 +++ utils/unittest/googletest/src/gtest-port.cc 2016-02-01 11:34:55.170628325 -0800 |
|
5 @@ -51,6 +51,13 @@ |
|
6 # include <mach/vm_map.h> |
|
7 #endif // GTEST_OS_MAC |
|
8 |
|
9 +#if GTEST_OS_SOLARIS |
|
10 +# include <strings.h> |
|
11 +# include <sys/types.h> |
|
12 +# include <dirent.h> |
|
13 +# include <unistd.h> |
|
14 +#endif |
|
15 + |
|
16 #include "gtest/gtest-spi.h" |
|
17 #include "gtest/gtest-message.h" |
|
18 #include "gtest/internal/gtest-internal.h" |
|
19 @@ -101,9 +108,36 @@ |
|
20 #else |
|
21 |
|
22 size_t GetThreadCount() { |
|
23 + size_t NumThreads = 1U; |
|
24 + |
|
25 +#if GTEST_OS_SOLARIS |
|
26 + char lwpdir[PATH_MAX+1]; |
|
27 + (void) std::memset(lwpdir, 0, sizeof(lwpdir)); |
|
28 + (void) std::sprintf(lwpdir, "/proc/%i/lwp/", static_cast<int>(getpid())); |
|
29 + |
|
30 + struct dirent *DE; |
|
31 + DIR *D = ::opendir(lwpdir); |
|
32 + if (!D) |
|
33 + return NumThreads; |
|
34 + |
|
35 + while ((DE = ::readdir(D)) != NULL) { |
|
36 + if (DE->d_name[0] == '.') { |
|
37 + if ((DE->d_name[1] == '\0') || |
|
38 + ((DE->d_name[1] == '.') && (DE->d_name[2] == '\0'))) |
|
39 + continue; |
|
40 + } |
|
41 + |
|
42 + NumThreads = |
|
43 + static_cast<size_t>(std::max<int>(NumThreads, std::atoi(DE->d_name))); |
|
44 + } |
|
45 + |
|
46 + ::rewinddir(D); |
|
47 + ::closedir(D); |
|
48 +#endif |
|
49 + |
|
50 // There's no portable way to detect the number of threads, so we just |
|
51 // return 0 to indicate that we cannot detect it. |
|
52 - return 0; |
|
53 + return NumThreads; |
|
54 } |
|
55 |
|
56 #endif // GTEST_OS_MAC |
|
57 --- utils/unittest/googletest/include/gtest/internal/gtest-port.h 2014-02-19 07:18:30.000000000 -0800 |
|
58 +++ utils/unittest/googletest/include/gtest/internal/gtest-port.h 2016-02-01 11:15:20.899289723 -0800 |
|
59 @@ -238,7 +238,7 @@ |
|
60 # endif // ANDROID |
|
61 #elif defined __MVS__ |
|
62 # define GTEST_OS_ZOS 1 |
|
63 -#elif defined(__sun) && defined(__SVR4) |
|
64 +#elif (defined(__sun) || defined(__sun__)) && defined(__SVR4) |
|
65 # define GTEST_OS_SOLARIS 1 |
|
66 #elif defined(_AIX) |
|
67 # define GTEST_OS_AIX 1 |
|