[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