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

Dean Michael Berris via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 9 21:11:25 PST 2017


Confirmed -- thanks, Vitaly!

Cheers

> On 10 Nov 2017, at 14:19, Vitaly Buka <vitalybuka at google.com> wrote:
> 
> should be fixed by r317866
> 
> On Thu, Nov 9, 2017 at 7:08 PM, Vitaly Buka <vitalybuka at google.com <mailto:vitalybuka at google.com>> wrote:
> Thanks. 
> Looking...
> 
> On Thu, Nov 9, 2017 at 7:06 PM, Vedant Kumar <vsk at apple.com <mailto: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 <mailto: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 <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 <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 <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 <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 <mailto:llvm-commits at lists.llvm.org>
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
> 
> 
> 

-- Dean

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171110/d41f0165/attachment.html>


More information about the llvm-commits mailing list