[compiler-rt] r299884 - [msan] Choose in runtime if IPv4 or IPv6 are supported.

Hal Finkel via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 12 16:07:29 PDT 2017


FYI: This is failing on my build cluster. I see output like this:

[ RUN      ] IpTests/MemorySanitizerIpTest.accept/0
/home/hfinkel/public/src/llvm/projects/compiler-rt/lib/msan/tests/msan_test.cc:972: 
Failure
       Expected: 0
To be equal to: res
       Which is: -1
[  FAILED  ] IpTests/MemorySanitizerIpTest.accept/0, where GetParam() = 
10 (3 ms)

...

     MemorySanitizer-Unit :: 
Msan-x86_64-Test/IpTests/MemorySanitizerIpTest.accept/0
     MemorySanitizer-Unit :: 
Msan-x86_64-Test/IpTests/MemorySanitizerIpTest.accept/1
     MemorySanitizer-Unit :: 
Msan-x86_64-Test/IpTests/MemorySanitizerIpTest.recvmsg/0
     MemorySanitizer-Unit :: 
Msan-x86_64-Test/IpTests/MemorySanitizerIpTest.recvmsg/1
     MemorySanitizer-Unit :: 
Msan-x86_64-with-call-Test/IpTests/MemorySanitizerIpTest.accept/0
     MemorySanitizer-Unit :: 
Msan-x86_64-with-call-Test/IpTests/MemorySanitizerIpTest.accept/1
     MemorySanitizer-Unit :: 
Msan-x86_64-with-call-Test/IpTests/MemorySanitizerIpTest.recvmsg/0
     MemorySanitizer-Unit :: 
Msan-x86_64-with-call-Test/IpTests/MemorySanitizerIpTest.recvmsg/1

The call to bind() is failing (i.e. returning -1).

On 04/10/2017 04:03 PM, Vitaly Buka via llvm-commits wrote:
> Author: vitalybuka
> Date: Mon Apr 10 16:03:18 2017
> New Revision: 299884
>
> URL: http://llvm.org/viewvc/llvm-project?rev=299884&view=rev
> Log:
> [msan] Choose in runtime if IPv4 or IPv6 are supported.
>
> Summary: This reverts commit cab5051c691ce27a7ffac41e8e76ceb222ad9549.

Which commit is this?

  -Hal

>
> Reviewers: eugenis
>
> Subscribers: mgorny, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D31894
>
> Modified:
>      compiler-rt/trunk/lib/msan/tests/CMakeLists.txt
>      compiler-rt/trunk/lib/msan/tests/msan_test.cc
>
> Modified: compiler-rt/trunk/lib/msan/tests/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/CMakeLists.txt?rev=299884&r1=299883&r2=299884&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/tests/CMakeLists.txt (original)
> +++ compiler-rt/trunk/lib/msan/tests/CMakeLists.txt Mon Apr 10 16:03:18 2017
> @@ -35,6 +35,7 @@ set(MSAN_UNITTEST_COMMON_CFLAGS
>     -Wno-zero-length-array
>     -Wno-uninitialized
>     -Werror=sign-compare
> +  -Wno-gnu-zero-variadic-macro-arguments
>   )
>   set(MSAN_UNITTEST_INSTRUMENTED_CFLAGS
>     ${MSAN_UNITTEST_COMMON_CFLAGS}
>
> Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=299884&r1=299883&r2=299884&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
> +++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Mon Apr 10 16:03:18 2017
> @@ -902,9 +902,7 @@ class SocketAddr4 : public SocketAddr {
>       sai_.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
>     }
>   
> -  sockaddr *ptr() override {
> -    return reinterpret_cast<sockaddr *>(&sai_);
> -  }
> +  sockaddr *ptr() override { return reinterpret_cast<sockaddr *>(&sai_); }
>   
>     size_t size() const override { return sizeof(sai_); }
>   
> @@ -912,14 +910,60 @@ class SocketAddr4 : public SocketAddr {
>     sockaddr_in sai_;
>   };
>   
> -template <class... Args>
> -std::unique_ptr<SocketAddr> CreateSockAddr(Args... args) {
> -  return std::unique_ptr<SocketAddr>(new SocketAddr4(args...));
> +class SocketAddr6 : public SocketAddr {
> + public:
> +  SocketAddr6() { EXPECT_POISONED(sai_); }
> +  explicit SocketAddr6(uint16_t port) {
> +    memset(&sai_, 0, sizeof(sai_));
> +    sai_.sin6_family = AF_INET6;
> +    sai_.sin6_port = port;
> +    sai_.sin6_addr = in6addr_loopback;
> +  }
> +
> +  sockaddr *ptr() override { return reinterpret_cast<sockaddr *>(&sai_); }
> +
> +  size_t size() const override { return sizeof(sai_); }
> +
> + private:
> +  sockaddr_in6 sai_;
> +};
> +
> +class MemorySanitizerIpTest : public ::testing::TestWithParam<int> {
> + public:
> +  void SetUp() override {
> +    ASSERT_TRUE(GetParam() == AF_INET || GetParam() == AF_INET6);
> +  }
> +
> +  template <class... Args>
> +  std::unique_ptr<SocketAddr> CreateSockAddr(Args... args) const {
> +    if (GetParam() == AF_INET)
> +      return std::unique_ptr<SocketAddr>(new SocketAddr4(args...));
> +    return std::unique_ptr<SocketAddr>(new SocketAddr6(args...));
> +  }
> +
> +  int CreateSocket(int socket_type) const {
> +    return socket(GetParam(), socket_type, 0);
> +  }
> +};
> +
> +std::vector<int> GetAvailableIpSocketFamilies() {
> +  std::vector<int> result;
> +
> +  for (int i : std::vector<int>(AF_INET, AF_INET6)) {
> +    int s = socket(i, SOCK_STREAM, 0);
> +    if (s > 0) {
> +      result.push_back(i);
> +      close(s);
> +    }
> +  }
> +
> +  return result;
>   }
>   
> -int CreateSocket(int socket_type) { return socket(AF_INET, socket_type, 0); }
> +INSTANTIATE_TEST_CASE_P(IpTests, MemorySanitizerIpTest,
> +                        ::testing::ValuesIn(GetAvailableIpSocketFamilies()));
>   
> -TEST(MemorySanitizer, accept) {
> +TEST_P(MemorySanitizerIpTest, accept) {
>     int listen_socket = CreateSocket(SOCK_STREAM);
>     ASSERT_LT(0, listen_socket);
>   
> @@ -963,7 +1007,7 @@ TEST(MemorySanitizer, accept) {
>     close(listen_socket);
>   }
>   
> -TEST(MemorySanitizer, recvmsg) {
> +TEST_P(MemorySanitizerIpTest, recvmsg) {
>     int server_socket = CreateSocket(SOCK_DGRAM);
>     ASSERT_LT(0, server_socket);
>   
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits

-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-commits mailing list