<div dir="ltr">Thanks Bill.<div><br></div><div style>- Lang.</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Jun 7, 2013 at 1:30 PM, Bill Wendling <span dir="ltr"><<a href="mailto:wendling@apple.com" target="_blank">wendling@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I reverted it...<br>
<span class="HOEnZb"><font color="#888888"><br>
-bw<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On Jun 7, 2013, at 11:51 AM, Evgeniy Stepanov <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>> wrote:<br>
<br>
> I'm having technical issues. I wonder if someone could revert this<br>
> change for me?<br>
><br>
> On Fri, Jun 7, 2013 at 10:32 PM, Evgeniy Stepanov<br>
> <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>> wrote:<br>
>> I'll revert in a minute.<br>
>><br>
>> On Fri, Jun 7, 2013 at 10:11 PM, Lang Hames <<a href="mailto:lhames@gmail.com">lhames@gmail.com</a>> wrote:<br>
>>> Hi Evgeniy,<br>
>>><br>
>>> Looks like this patch broke some of the bots, e.g.<br>
>>> <a href="http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/2695" target="_blank">http://lab.llvm.org:8013/builders/clang-x86_64-darwin11-nobootstrap-RAincremental/builds/2695</a><br>

>>><br>
>>> Could you please fix or revert it?<br>
>>><br>
>>> Thanks!<br>
>>><br>
>>> - Lang.<br>
>>><br>
>>><br>
>>> On Fri, Jun 7, 2013 at 8:49 AM, Evgeniy Stepanov <<a href="mailto:eugeni.stepanov@gmail.com">eugeni.stepanov@gmail.com</a>><br>
>>> wrote:<br>
>>>><br>
>>>> Author: eugenis<br>
>>>> Date: Fri Jun  7 10:49:38 2013<br>
>>>> New Revision: 183529<br>
>>>><br>
>>>> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=183529&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=183529&view=rev</a><br>
>>>> Log:<br>
>>>> [sanitizer] Handle SIOCGIFCONF ioctl.<br>
>>>><br>
>>>> Added:<br>
>>>>    compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc   (with props)<br>
>>>> Modified:<br>
>>>><br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc<br>
>>>><br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc<br>
>>>><br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h<br>
>>>><br>
>>>> Added: compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc<br>
>>>> URL:<br>
>>>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc?rev=183529&view=auto" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc?rev=183529&view=auto</a><br>

>>>><br>
>>>> ==============================================================================<br>
>>>> --- compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc (added)<br>
>>>> +++ compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc Fri Jun  7<br>
>>>> 10:49:38 2013<br>
>>>> @@ -0,0 +1,33 @@<br>
>>>> +// RUN: %clangxx_msan -m64 -O0 -g %s -o %t && %t<br>
>>>> +// RUN: %clangxx_msan -m64 -O3 -g %s -o %t && %t<br>
>>>> +<br>
>>>> +// RUN: %clangxx_msan -DPOSITIVE -m64 -O0 -g %s -o %t && %t 2>&1 |<br>
>>>> FileCheck %s<br>
>>>> +// RUN: %clangxx_msan -DPOSITIVE -m64 -O3 -g %s -o %t && %t 2>&1 |<br>
>>>> FileCheck %s<br>
>>>> +<br>
>>>> +#include <assert.h><br>
>>>> +#include <stdlib.h><br>
>>>> +#include <net/if.h><br>
>>>> +#include <stdio.h><br>
>>>> +#include <string.h><br>
>>>> +#include <sys/ioctl.h><br>
>>>> +#include <sys/socket.h><br>
>>>> +#include <unistd.h><br>
>>>> +<br>
>>>> +int main(int argc, char **argv) {<br>
>>>> +  int fd = socket(AF_INET, SOCK_STREAM, 0);<br>
>>>> +<br>
>>>> +  struct ifreq ifreqs[20];<br>
>>>> +  struct ifconf ifc;<br>
>>>> +  ifc.ifc_ifcu.ifcu_req = ifreqs;<br>
>>>> +#ifndef POSITIVE<br>
>>>> +  ifc.ifc_len = sizeof(ifreqs);<br>
>>>> +#endif<br>
>>>> +  int res = ioctl(fd, SIOCGIFCONF, (void *)&ifc);<br>
>>>> +  // CHECK: UMR in ioctl{{.*}} at offset 0<br>
>>>> +  // CHECK: WARNING: MemorySanitizer: use-of-uninitialized-value<br>
>>>> +  // CHECK: #{{.*}} in main {{.*}}ioctl_custom.cc:[[@LINE-3]]<br>
>>>> +  assert(res == 0);<br>
>>>> +  for (int i = 0; i < ifc.ifc_len / sizeof(*ifc.ifc_ifcu.ifcu_req); ++i)<br>
>>>> +    printf("%d  %zu  %s\n", i, strlen(ifreqs[i].ifr_name),<br>
>>>> ifreqs[i].ifr_name);<br>
>>>> +  return 0;<br>
>>>> +}<br>
>>>><br>
>>>> Propchange: compiler-rt/trunk/lib/msan/lit_tests/ioctl_custom.cc<br>
>>>><br>
>>>> ------------------------------------------------------------------------------<br>
>>>>    svn:eol-style = LF<br>
>>>><br>
>>>> Modified:<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc<br>
>>>> URL:<br>
>>>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc?rev=183529&r1=183528&r2=183529&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc?rev=183529&r1=183528&r2=183529&view=diff</a><br>

>>>><br>
>>>> ==============================================================================<br>
>>>> ---<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc<br>
>>>> (original)<br>
>>>> +++<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors_ioctl.inc<br>
>>>> Fri Jun  7 10:49:38 2013<br>
>>>> @@ -66,7 +66,7 @@ static void ioctl_table_fill() {<br>
>>>>   _(0x00008903, WRITE, sizeof(int));             // FIOGETOWN<br>
>>>>   _(0x00008904, WRITE, sizeof(int));             // SIOCGPGRP<br>
>>>>   _(0x00008905, WRITE, sizeof(int));             // SIOCATMAR<br>
>>>> -  _(0x00008912, WRITE, struct_ifconf_sz);        // SIOCGIFCONF<br>
>>>> +  _(0x00008912, CUSTOM, 0);                      // SIOCGIFCONF<br>
>>>>   _(0x00008913, WRITE, struct_ifreq_sz);         // SIOCGIFFLAGS<br>
>>>>   _(0x00008914, READ, struct_ifreq_sz);          // SIOCSIFFLAGS<br>
>>>>   _(0x00008915, WRITE, struct_ifreq_sz);         // SIOCGIFADDR<br>
>>>> @@ -502,7 +502,13 @@ static void ioctl_common_pre(void *ctx,<br>
>>>>     COMMON_INTERCEPTOR_READ_RANGE(ctx, arg, desc->size);<br>
>>>>   if (desc->type != ioctl_desc::CUSTOM)<br>
>>>>     return;<br>
>>>> -  // FIXME: add some ioctls of "CUSTOM" type and handle them here.<br>
>>>> +  switch (request) {<br>
>>>> +    case 0x00008912: {  // SIOCGIFCONF<br>
>>>> +      struct __sanitizer_ifconf *ifc = (__sanitizer_ifconf *)arg;<br>
>>>> +      COMMON_INTERCEPTOR_READ_RANGE(ctx, &ifc->ifc_len,<br>
>>>> sizeof(ifc->ifc_len));<br>
>>>> +      break;<br>
>>>> +    }<br>
>>>> +  }<br>
>>>>   return;<br>
>>>> }<br>
>>>><br>
>>>> @@ -514,5 +520,12 @@ static void ioctl_common_post(void *ctx,<br>
>>>>   }<br>
>>>>   if (desc->type != ioctl_desc::CUSTOM)<br>
>>>>     return;<br>
>>>> -  return; // FIXME<br>
>>>> +  switch (request) {<br>
>>>> +    case 0x00008912: {  // SIOCGIFCONF<br>
>>>> +      struct __sanitizer_ifconf *ifc = (__sanitizer_ifconf *)arg;<br>
>>>> +      COMMON_INTERCEPTOR_WRITE_RANGE(ctx, ifc->ifc_ifcu.ifcu_req,<br>
>>>> ifc->ifc_len);<br>
>>>> +      break;<br>
>>>> +    }<br>
>>>> +  }<br>
>>>> +  return;<br>
>>>> }<br>
>>>><br>
>>>> Modified:<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc<br>
>>>> URL:<br>
>>>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc?rev=183529&r1=183528&r2=183529&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc?rev=183529&r1=183528&r2=183529&view=diff</a><br>

>>>><br>
>>>> ==============================================================================<br>
>>>> ---<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc<br>
>>>> (original)<br>
>>>> +++<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.cc<br>
>>>> Fri Jun  7 10:49:38 2013<br>
>>>> @@ -150,7 +150,6 @@ namespace __sanitizer {<br>
>>>><br>
>>>>   // ioctl arguments<br>
>>>>   unsigned struct_arpreq_sz = sizeof(struct arpreq);<br>
>>>> -  unsigned struct_ifconf_sz = sizeof(struct ifconf);<br>
>>>>   unsigned struct_ifreq_sz = sizeof(struct ifreq);<br>
>>>>   unsigned struct_termios_sz = sizeof(struct termios);<br>
>>>>   unsigned struct_winsize_sz = sizeof(struct winsize);<br>
>>>> @@ -280,4 +279,9 @@ CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_len)<br>
>>>> CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_level);<br>
>>>> CHECK_SIZE_AND_OFFSET(cmsghdr, cmsg_type);<br>
>>>><br>
>>>> +CHECK_TYPE_SIZE(ifconf);<br>
>>>> +CHECK_SIZE_AND_OFFSET(ifconf, ifc_len);<br>
>>>> +CHECK_SIZE_AND_OFFSET(ifconf, ifc_ifcu);<br>
>>>> +<br>
>>>> #endif  // SANITIZER_LINUX || SANITIZER_MAC<br>
>>>> +<br>
>>>><br>
>>>> Modified:<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h<br>
>>>> URL:<br>
>>>> <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h?rev=183529&r1=183528&r2=183529&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h?rev=183529&r1=183528&r2=183529&view=diff</a><br>

>>>><br>
>>>> ==============================================================================<br>
>>>> ---<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h<br>
>>>> (original)<br>
>>>> +++<br>
>>>> compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_limits_posix.h Fri<br>
>>>> Jun  7 10:49:38 2013<br>
>>>> @@ -149,8 +149,14 @@ namespace __sanitizer {<br>
>>>>   };<br>
>>>><br>
>>>>   // ioctl arguments<br>
>>>> +  struct __sanitizer_ifconf {<br>
>>>> +    int ifc_len;<br>
>>>> +    union {<br>
>>>> +      void *ifcu_req;<br>
>>>> +    } ifc_ifcu;<br>
>>>> +  };<br>
>>>> +<br>
>>>>   extern unsigned struct_arpreq_sz;<br>
>>>> -  extern unsigned struct_ifconf_sz;<br>
>>>>   extern unsigned struct_ifreq_sz;<br>
>>>>   extern unsigned struct_termios_sz;<br>
>>>>   extern unsigned struct_winsize_sz;<br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> llvm-commits mailing list<br>
>>>> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
>>>> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
>>><br>
>>><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
</div></div></blockquote></div><br></div>