components/llvm/patches/022-google-test-harness-22643565.patch
changeset 6512 92717ce71105
parent 6511 d283aa33e131
child 6513 ea2097ba7d67
equal deleted inserted replaced
6511:d283aa33e131 6512:92717ce71105
     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