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

Vedant Kumar via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 9 19:06:44 PST 2017


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



More information about the llvm-commits mailing list