<div dir="ltr">Perhaps we could just disable this warning for building this code?<br><br>Usually the argument is that we shouldn't prematurely initialize variables because it hinders analysis and runtime tools. Though the latter argument probably isn't applicable to the sanitizer runtime/interceptors itself, though.<br><br>In both cases it seems the intent is that the values you've added would never be used - so in some sense better not to have them so that we can continue to strive for that to be the case rather than having dead stores that could come alive at some point & just defer the unexpected behavior until later.<br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Nov 19, 2015 at 6:08 AM, Maxim Ostapenko via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">m.ostepenko created this revision.<br>
m.ostepenko added reviewers: kcc, samsonov.<br>
m.ostepenko added subscribers: llvm-commits, ygribov.<br>
m.ostepenko set the repository for this revision to rL LLVM.<br>
Herald added a subscriber: aemerson.<br>
<br>
Hi!<br>
<br>
Since "Use same shadow offset for aarch64"  and  "Enable optional ASan recovery" patches seem to work robustly in LLVM, I would like to perform another merge to GCC (GCC is on stage 3 now, but it is OK to perform merge now). For now, everything seems OK with library, except some warnings I got in GCC due to -Wmaybe-uninitialized switch:<br>
<br>
```<br>
/home/max/workspace/downloads/trunk/libsanitizer/asan/asan_interceptors.cc: In function ‘__sanitizer::uptr __interceptor_ptrace(int, int, void*, void*)’:<br>
/home/max/workspace/downloads/trunk/libsanitizer/asan/asan_interceptors.cc:59:29: warning: ‘local_iovec.__sanitizer::__sanitizer_iovec::iov_len’ may be used uninitialized in this function [-Wmaybe-uninitialized]<br>
     if (__offset > __offset + __size) {                                 \<br>
                             ^<br>
<br>
In file included from /home/max/workspace/downloads/trunk/libsanitizer/asan/asan_interceptors.cc:196:0:<br>
/home/max/workspace/downloads/trunk/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:2449:21: note: ‘local_iovec.__sanitizer::__sanitizer_iovec::iov_len’ was declared here<br>
   __sanitizer_iovec local_iovec;<br>
                     ^~~~~~~~~~~<br>
```<br>
<br>
This patch just adds proper default values to local variables in several places.<br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="http://reviews.llvm.org/D14817" rel="noreferrer" target="_blank">http://reviews.llvm.org/D14817</a><br>
<br>
Files:<br>
  lib/sanitizer_common/sanitizer_common_interceptors.inc<br>
  lib/sanitizer_common/sanitizer_posix.cc<br>
<br>
Index: lib/sanitizer_common/sanitizer_posix.cc<br>
===================================================================<br>
--- lib/sanitizer_common/sanitizer_posix.cc<br>
+++ lib/sanitizer_common/sanitizer_posix.cc<br>
@@ -177,6 +177,7 @@<br>
     case RdOnly: flags = O_RDONLY; break;<br>
     case WrOnly: flags = O_WRONLY | O_CREAT; break;<br>
     case RdWr: flags = O_RDWR | O_CREAT; break;<br>
+    default: flags = O_RDONLY; break;<br>
   }<br>
   fd_t res = internal_open(filename, flags, 0660);<br>
   if (internal_iserror(res, errno_p))<br>
Index: lib/sanitizer_common/sanitizer_common_interceptors.inc<br>
===================================================================<br>
--- lib/sanitizer_common/sanitizer_common_interceptors.inc<br>
+++ lib/sanitizer_common/sanitizer_common_interceptors.inc<br>
@@ -2448,7 +2448,7 @@<br>
 INTERCEPTOR(uptr, ptrace, int request, int pid, void *addr, void *data) {<br>
   void *ctx;<br>
   COMMON_INTERCEPTOR_ENTER(ctx, ptrace, request, pid, addr, data);<br>
-  __sanitizer_iovec local_iovec;<br>
+  __sanitizer_iovec local_iovec = {0, 0};<br>
<br>
   if (data) {<br>
     if (request == ptrace_setregs)<br>
<br>
<br>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>