[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
Kostya Serebryany
kcc at google.com
Tue Dec 18 19:30:35 PST 2012
That's because by default we are building the run-time with the host
compiler (gcc) and don't see this.
Alexey, what's the story about using the fresh clang for compiler-rt?
--kcc
On Wed, Dec 19, 2012 at 3:50 AM, David Blaikie <dblaikie at gmail.com> wrote:
> 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
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121219/7a074227/attachment.html>
More information about the llvm-commits
mailing list