blob: a9c5d69c903580c3e248ac804df2af9acc989e46 [file] [log] [blame]
// Copyright 2016 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Removes gallium leak warnings from x11 GL code, but defines it as a weak
// symbol, so other code can override it if they want to.
#if defined(ADDRESS_SANITIZER)
// Functions returning default options are declared weak in the tools' runtime
// libraries. To make the linker pick the strong replacements for those
// functions from this module, we explicitly force its inclusion by passing
// -Wl,-u_sanitizer_options_link_helper
extern "C" void _sanitizer_options_link_helper() {}
#define SANITIZER_HOOK_ATTRIBUTE \
extern "C" __attribute__((no_sanitize_address)) \
__attribute__((no_sanitize_memory)) __attribute__((no_sanitize_thread)) \
__attribute__((visibility("default"))) __attribute__((weak)) \
__attribute__((used))
// Newline separated list of issues to suppress, see
// http://clang.llvm.org/docs/AddressSanitizer.html#issue-suppression
// http://llvm.org/svn/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_suppressions.cc
SANITIZER_HOOK_ATTRIBUTE const char* __lsan_default_suppressions() {
return "leak:egl_gallium.so\n"
"leak:nvidia\n"
"leak:libspeechd.so\n";
}
#if defined(ASAN_SYMBOLIZER_PATH)
extern "C" const char* __asan_default_options() {
// TODO(b/278247547) : Remove detect_stack_use_after_return=0 once the issue
// with AddressSanitizerFlags in Clang is resolved.
return "detect_stack_use_after_return=0:external_symbolizer_"
"path=" ASAN_SYMBOLIZER_PATH;
}
#endif
#endif // defined(ADDRESS_SANITIZER)