[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:19:52 PST 2017


should be fixed by r317866

On Thu, Nov 9, 2017 at 7:08 PM, Vitaly Buka <vitalybuka at google.com> wrote:

> 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/XcodeD
>> efault.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/as
>> an/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/sa
>> nitizer_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/8d4ace61/attachment.html>


More information about the llvm-commits mailing list