[compiler-rt] r317843 - [sanitizer] Allow sanitizers to redefine implementation of signal interceptors

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 9 19:08:09 PST 2017


Thanks.
Looking...

On Thu, Nov 9, 2017 at 7:06 PM, Vedant Kumar <vsk at apple.com> wrote:

> Hi Vitaly,
>
> This breaks the ASan build on Darwin. Could you take a look?
>
> /Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/
> sanitizer_common/sanitizer_mac.cc:188:40: warning: cast from 'const void
> *' to 'sigaction *' drops const qualifier [-Wcast-qual]
>                    (struct sigaction *)act, (struct sigaction *)oldact);
>                                        ^
> 1 warning generated.
> /Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/
> sanitizer_common/sanitizer_mac.cc:188:40: warning: cast from 'const void
> *' to 'sigaction *' drops const qualifier [-Wcast-qual]
>                    (struct sigaction *)act, (struct sigaction *)oldact);
>                                        ^
> 1 warning generated.
> /Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/
> sanitizer_common/sanitizer_mac.cc:188:40: warning: cast from 'const void
> *' to 'sigaction *' drops const qualifier [-Wcast-qual]
>                    (struct sigaction *)act, (struct sigaction *)oldact);
>                                        ^
> 1 warning generated.
> [62/98] Building CXX object projects/compiler-rt/lib/
> ubsan/CMakeFiles/RTUbsan.osx.dir/ubsan_type_hash.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [63/98] Building CXX object projects/compiler-rt/lib/
> ubsan/CMakeFiles/RTUbsan.osx.dir/ubsan_type_hash_win.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [64/98] Building CXX object projects/compiler-rt/lib/ub...
> CMakeFiles/RTUbsan.osx.dir/ubsan_type_hash_itanium.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [65/98] Building CXX object projects/compiler-rt/lib/
> ubsan/CMakeFiles/RTUbsan.osx.dir/ubsan_handlers_cxx.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [66/98] Building CXX object projects/compiler-rt/lib/
> ubsan/CMakeFiles/RTUbsan.osx.dir/ubsan_diag.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [67/98] Building CXX object projects/compiler-rt/lib/asan/
> CMakeFiles/RTAsan_dynamic.osx.dir/asan_fuchsia.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [68/98] Building CXX object projects/compiler-rt/lib/as...
> /CMakeFiles/RTAsan_dynamic.osx.dir/asan_activation.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [69/98] Building CXX object projects/compiler-rt/lib/
> ubsan/CMakeFiles/RTUbsan.osx.dir/ubsan_handlers.cc.o
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> [70/98] Building CXX object projects/compiler-rt/lib/asan/
> CMakeFiles/RTAsan_dynamic.osx.dir/asan_errors.cc.o
> FAILED: projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.osx.
> dir/asan_errors.cc.o
> /Applications/Xcode.app/Contents/Developer/Toolchains/
> XcodeDefault.xctoolchain/usr/bin/c++   -DASAN_DYNAMIC=1
> -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS
> -Iprojects/compiler-rt/lib/asan -I/Users/vk/src/
> llvm.org-master/llvm/projects/compiler-rt/lib/asan -I/usr/include/libxml2
> -Iinclude -I/Users/vk/src/llvm.org-master/llvm/include
> -I/Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/asan/..
> -fPIC -fvisibility-inlines-hi
> dden -Werror=date-time -Werror=unguarded-availability-new -std=c++11
> -fmodules -fmodules-cache-path=/Volumes/Builds/llvm.org-master-R/module.cache
> -fcxx-modules -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual
> -Wmissin
> g-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default
> -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wstring-conversion
> -fcolor-diagnostics -Wall -std=c++11 -Wno-unused-parameter -O3 -DNDEBUG
> -arch i386 -arch x86
> _64 -arch x86_64h     -fPIC -fvisibility-inlines-hidden -Werror=date-time
> -Werror=unguarded-availability-new -std=c++11 -fmodules
> -fmodules-cache-path=/Volumes/Builds/llvm.org-master-R/module.cache
> -fcxx-modules -Wall -W -Wno-un
> used-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers
> -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor
> -Wdelete-non-virtual-dtor -Wstring-conversion -fcolor-diagnostics -Wall
> -std=c++11 -Wno
> -unused-parameter -stdlib=libc++ -mmacosx-version-min=10.9 -isysroot
> /Applications/Xcode.app/Contents/Developer/Platforms/
> MacOSX.platform/Developer/SDKs/MacOSX10.13.Internal.sdk -fPIC
> -fno-builtin -fno-exceptions -funwind-tables
>  -fno-stack-protector -fno-sanitize=safe-stack -fvisibility=hidden
> -fvisibility-inlines-hidden -fno-lto -O3 -gline-tables-only -fno-modules
> -Wno-gnu -Wno-variadic-macros -Wno-c99-extensions -Wno-non-virtual-dtor
> -fno-rtti -ftls-
> model=initial-exec -MD -MT projects/compiler-rt/lib/asan/
> CMakeFiles/RTAsan_dynamic.osx.dir/asan_errors.cc.o -MF
> projects/compiler-rt/lib/asan/CMakeFiles/RTAsan_dynamic.osx.dir/asan_errors.cc.o.d
> -o projects/compiler-rt/lib/asan/
> CMakeFiles/RTAsan_dynamic.osx.dir/asan_errors.cc.o -c
> /Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/
> asan/asan_errors.cc
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-fcxx-modules'
> [-Wunused-command-line-argument]
> In file included from /Users/vk/src/llvm.org-master/
> llvm/projects/compiler-rt/lib/asan/asan_errors.cc:16:
> /Applications/Xcode.app/Contents/Developer/Platforms/
> MacOSX.platform/Developer/SDKs/MacOSX10.13.Internal.sdk/usr/include/signal.h:84:5:
> error: conflicting types for 'sigaction'
> int     sigaction(int, const struct sigaction * __restrict,
>         ^
> /Users/vk/src/llvm.org-master/llvm/projects/compiler-rt/lib/
> asan/asan_interceptors.h:113:19: note: previous declaration is here
> DECLARE_REAL(int, sigaction, int signum,
>                   ^
> 1 error generated.
>
> thanks,
> vedant
>
> > On Nov 9, 2017, at 2:48 PM, Vitaly Buka via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
> >
> > Author: vitalybuka
> > Date: Thu Nov  9 14:48:54 2017
> > New Revision: 317843
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=317843&view=rev
> > Log:
> > [sanitizer] Allow sanitizers to redefine implementation of signal
> interceptors
> >
> > Reviewers: eugenis
> >
> > Subscribers: llvm-commits, kubamracek
> >
> > Differential Revision: https://reviews.llvm.org/D39870
> >
> > Modified:
> >    compiler-rt/trunk/lib/asan/asan_interceptors.h
> >    compiler-rt/trunk/lib/sanitizer_common/sanitizer_
> signal_interceptors.inc
> >
> > Modified: compiler-rt/trunk/lib/asan/asan_interceptors.h
> > URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> asan/asan_interceptors.h?rev=317843&r1=317842&r2=317843&view=diff
> > ============================================================
> ==================
> > --- compiler-rt/trunk/lib/asan/asan_interceptors.h (original)
> > +++ compiler-rt/trunk/lib/asan/asan_interceptors.h Thu Nov  9 14:48:54
> 2017
> > @@ -19,6 +19,10 @@
> > #include "interception/interception.h"
> > #include "sanitizer_common/sanitizer_platform_interceptors.h"
> >
> > +namespace __sanitizer {
> > +struct __sanitizer_sigaction;
> > +}
> > +
> > namespace __asan {
> >
> > void InitializeAsanInterceptors();
> > @@ -106,8 +110,9 @@ DECLARE_REAL(char*, strncpy, char *to, c
> > DECLARE_REAL(uptr, strnlen, const char *s, uptr maxlen)
> > DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
> > struct sigaction;
> > -DECLARE_REAL(int, sigaction, int signum, const struct sigaction *act,
> > -                             struct sigaction *oldact)
> > +DECLARE_REAL(int, sigaction, int signum,
> > +             const __sanitizer::__sanitizer_sigaction *act,
> > +             __sanitizer::__sanitizer_sigaction *oldact)
> >
> > #if !SANITIZER_MAC
> > #define ASAN_INTERCEPT_FUNC(name)
> \
> >
> > Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_
> signal_interceptors.inc
> > URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/
> sanitizer_common/sanitizer_signal_interceptors.inc?rev=
> 317843&r1=317842&r2=317843&view=diff
> > ============================================================
> ==================
> > --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_signal_interceptors.inc
> (original)
> > +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_signal_interceptors.inc
> Thu Nov  9 14:48:54 2017
> > @@ -18,10 +18,24 @@
> >
> > using namespace __sanitizer;
> >
> > +namespace __sanitizer {
> > +struct __sanitizer_sigaction;
> > +}
> > +
> > +#ifndef SIGNAL_INTERCEPTOR_SIGNAL_IMPL
> > +#define SIGNAL_INTERCEPTOR_SIGNAL_IMPL(func, signum, handler) \
> > +  { return REAL(func)(signum, handler); }
> > +#endif
> > +
> > +#ifndef SIGNAL_INTERCEPTOR_SIGACTION_IMPL
> > +#define SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact) \
> > +  { return REAL(sigaction)(signum, act, oldact); }
> > +#endif
> > +
> > #if SANITIZER_INTERCEPT_BSD_SIGNAL
> > -INTERCEPTOR(void *, bsd_signal, int signum, void *handler) {
> > +INTERCEPTOR(void *, bsd_signal, int signum, uptr handler) {
> >   if (GetHandleSignalMode(signum) == kHandleSignalExclusive) return 0;
> > -  return REAL(bsd_signal)(signum, handler);
> > +  SIGNAL_INTERCEPTOR_SIGNAL_IMPL(bsd_signal, signum, handler);
> > }
> > #define INIT_BSD_SIGNAL COMMON_INTERCEPT_FUNCTION(bsd_signal)
> > #else  // SANITIZER_INTERCEPT_BSD_SIGNAL
> > @@ -29,23 +43,23 @@ INTERCEPTOR(void *, bsd_signal, int sign
> > #endif  // SANITIZER_INTERCEPT_BSD_SIGNAL
> >
> > #if SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION
> > -INTERCEPTOR(void *, signal, int signum, void *handler) {
> > +INTERCEPTOR(void *, signal, int signum, uptr handler) {
> >   if (GetHandleSignalMode(signum) == kHandleSignalExclusive) return
> nullptr;
> > -  return REAL(signal)(signum, handler);
> > +  SIGNAL_INTERCEPTOR_SIGNAL_IMPL(signal, signum, handler);
> > }
> > #define INIT_SIGNAL COMMON_INTERCEPT_FUNCTION(signal)
> >
> > -INTERCEPTOR(int, sigaction, int signum, const struct sigaction *act,
> > -            struct sigaction *oldact) {
> > +INTERCEPTOR(int, sigaction, int signum, const __sanitizer_sigaction
> *act,
> > +            __sanitizer_sigaction *oldact) {
> >   if (GetHandleSignalMode(signum) == kHandleSignalExclusive) return 0;
> > -  return REAL(sigaction)(signum, act, oldact);
> > +  SIGNAL_INTERCEPTOR_SIGACTION_IMPL(signum, act, oldact);
> > }
> > #define INIT_SIGACTION COMMON_INTERCEPT_FUNCTION(sigaction)
> >
> > namespace __sanitizer {
> > int real_sigaction(int signum, const void *act, void *oldact) {
> > -  return REAL(sigaction)(signum, (const struct sigaction *)act,
> > -                         (struct sigaction *)oldact);
> > +  return REAL(sigaction)(signum, (const __sanitizer_sigaction *)act,
> > +                         (__sanitizer_sigaction *)oldact);
> > }
> > }  // namespace __sanitizer
> > #else  // SANITIZER_INTERCEPT_SIGNAL_AND_SIGACTION
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171109/4d435eb1/attachment.html>


More information about the llvm-commits mailing list