[llvm-commits] [compiler-rt] r170429 - in /compiler-rt/trunk/lib/tsan/rtl: tsan_fd.cc tsan_fd.h tsan_interceptors.cc tsan_stat.cc tsan_stat.h

David Blaikie dblaikie at gmail.com
Tue Dec 18 15:50:09 PST 2012


On Tue, Dec 18, 2012 at 4:35 AM, Dmitry Vyukov <dvyukov at google.com> wrote:
> Author: dvyukov
> Date: Tue Dec 18 06:35:31 2012
> New Revision: 170429
>
> URL: http://llvm.org/viewvc/llvm-project?rev=170429&view=rev
> Log:
> tsan: add signalfd() and inotify_init() interceptors
>
> Modified:
>     compiler-rt/trunk/lib/tsan/rtl/tsan_fd.cc
>     compiler-rt/trunk/lib/tsan/rtl/tsan_fd.h
>     compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
>     compiler-rt/trunk/lib/tsan/rtl/tsan_stat.cc
>     compiler-rt/trunk/lib/tsan/rtl/tsan_stat.h
>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_fd.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_fd.cc?rev=170429&r1=170428&r2=170429&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_fd.cc (original)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_fd.cc Tue Dec 18 06:35:31 2012
> @@ -90,11 +90,12 @@
>    FdDesc *d = fddesc(thr, pc, fd);
>    // As a matter of fact, we don't intercept all close calls.
>    // See e.g. libc __res_iclose().
> -  if (d->sync)
> +  if (d->sync) {
>      unref(thr, pc, d->sync);
> +    d->sync = 0;
> +  }
>    if (flags()->io_sync == 0) {
>      unref(thr, pc, s);
> -    d->sync = 0;
>    } else if (flags()->io_sync == 1) {
>      d->sync = s;
>    } else if (flags()->io_sync == 2) {
> @@ -189,6 +190,16 @@
>    init(thr, pc, fd, allocsync());
>  }
>
> +void FdSignalCreate(ThreadState *thr, uptr pc, int fd) {
> +  DPrintf("#%d: FdSignalCreate(%d)\n", thr->tid, fd);
> +  init(thr, pc, fd, 0);
> +}
> +
> +void FdInotifyCreate(ThreadState *thr, uptr pc, int fd) {
> +  DPrintf("#%d: FdInotifyCreate(%d)\n", thr->tid, fd);
> +  init(thr, pc, fd, 0);
> +}
> +
>  void FdPollCreate(ThreadState *thr, uptr pc, int fd) {
>    DPrintf("#%d: FdPollCreate(%d)\n", thr->tid, fd);
>    init(thr, pc, fd, allocsync());
>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_fd.h
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_fd.h?rev=170429&r1=170428&r2=170429&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_fd.h (original)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_fd.h Tue Dec 18 06:35:31 2012
> @@ -46,6 +46,8 @@
>  void FdDup(ThreadState *thr, uptr pc, int oldfd, int newfd);
>  void FdPipeCreate(ThreadState *thr, uptr pc, int rfd, int wfd);
>  void FdEventCreate(ThreadState *thr, uptr pc, int fd);
> +void FdSignalCreate(ThreadState *thr, uptr pc, int fd);
> +void FdInotifyCreate(ThreadState *thr, uptr pc, int fd);
>  void FdPollCreate(ThreadState *thr, uptr pc, int fd);
>  void FdSocketCreate(ThreadState *thr, uptr pc, int fd);
>  void FdSocketAccept(ThreadState *thr, uptr pc, int fd, int newfd);
>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc?rev=170429&r1=170428&r2=170429&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc (original)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_interceptors.cc Tue Dec 18 06:35:31 2012
> @@ -1128,6 +1128,31 @@
>    return fd;
>  }
>
> +TSAN_INTERCEPTOR(int, signalfd, int fd, void *mask, int flags) {
> +  SCOPED_TSAN_INTERCEPTOR(signalfd, fd, mask, flags);
> +  FdClose(thr, pc, fd);
> +  fd = REAL(signalfd)(fd, mask, flags);
> +  if (fd >= 0)
> +    FdSignalCreate(thr, pc, fd);
> +  return fd;
> +}
> +
> +TSAN_INTERCEPTOR(int, inotify_init) {

This (& some other recent commits) seems to be breaking a clang
self-hosting -Werror build:

llvm/src/projects/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1140:35:
error: must specify at least one argument for '...' parameter of
variadic macro [-Werror,-Wgnu]
TSAN_INTERCEPTOR(int, inotify_init) {
                                  ^

Could you fix/revert ASAP, please?

Thanks,
- David

> +  SCOPED_TSAN_INTERCEPTOR(inotify_init);
> +  int fd = REAL(inotify_init)();
> +  if (fd >= 0)
> +    FdInotifyCreate(thr, pc, fd);
> +  return fd;
> +}
> +
> +TSAN_INTERCEPTOR(int, inotify_init1, int flags) {
> +  SCOPED_TSAN_INTERCEPTOR(inotify_init1, flags);
> +  int fd = REAL(inotify_init1)(flags);
> +  if (fd >= 0)
> +    FdInotifyCreate(thr, pc, fd);
> +  return fd;
> +}
> +
>  TSAN_INTERCEPTOR(int, socket, int domain, int type, int protocol) {
>    SCOPED_TSAN_INTERCEPTOR(socket, domain, type, protocol);
>    int fd = REAL(socket)(domain, type, protocol);
> @@ -1743,6 +1768,9 @@
>    TSAN_INTERCEPT(dup2);
>    TSAN_INTERCEPT(dup3);
>    TSAN_INTERCEPT(eventfd);
> +  TSAN_INTERCEPT(signalfd);
> +  TSAN_INTERCEPT(inotify_init);
> +  TSAN_INTERCEPT(inotify_init1);
>    TSAN_INTERCEPT(socket);
>    TSAN_INTERCEPT(socketpair);
>    TSAN_INTERCEPT(connect);
>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_stat.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_stat.cc?rev=170429&r1=170428&r2=170429&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_stat.cc (original)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_stat.cc Tue Dec 18 06:35:31 2012
> @@ -189,6 +189,9 @@
>    name[StatInt_dup2]                     = "  dup2                            ";
>    name[StatInt_dup3]                     = "  dup3                            ";
>    name[StatInt_eventfd]                  = "  eventfd                         ";
> +  name[StatInt_signalfd]                 = "  signalfd                        ";
> +  name[StatInt_inotify_init]             = "  inotify_init                    ";
> +  name[StatInt_inotify_init1]            = "  inotify_init1                   ";
>    name[StatInt_socket]                   = "  socket                          ";
>    name[StatInt_socketpair]               = "  socketpair                      ";
>    name[StatInt_connect]                  = "  connect                         ";
>
> Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_stat.h
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_stat.h?rev=170429&r1=170428&r2=170429&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/tsan/rtl/tsan_stat.h (original)
> +++ compiler-rt/trunk/lib/tsan/rtl/tsan_stat.h Tue Dec 18 06:35:31 2012
> @@ -184,6 +184,9 @@
>    StatInt_dup2,
>    StatInt_dup3,
>    StatInt_eventfd,
> +  StatInt_signalfd,
> +  StatInt_inotify_init,
> +  StatInt_inotify_init1,
>    StatInt_socket,
>    StatInt_socketpair,
>    StatInt_connect,
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits



More information about the llvm-commits mailing list