1*7594170eSAndroid Build Coastguard Worker# Copyright (C) 2023 The Android Open Source Project 2*7594170eSAndroid Build Coastguard Worker# 3*7594170eSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*7594170eSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*7594170eSAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*7594170eSAndroid Build Coastguard Worker# 7*7594170eSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*7594170eSAndroid Build Coastguard Worker# 9*7594170eSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*7594170eSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*7594170eSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*7594170eSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*7594170eSAndroid Build Coastguard Worker# limitations under the License. 14*7594170eSAndroid Build Coastguard Worker 15*7594170eSAndroid Build Coastguard Workerload(":cc_constants.bzl", "transition_constants") 16*7594170eSAndroid Build Coastguard Worker 17*7594170eSAndroid Build Coastguard Worker# This logic checks for the enablement of sanitizers to update the relevant 18*7594170eSAndroid Build Coastguard Worker# config_setting for the purpose of controlling the addition of sanitizer 19*7594170eSAndroid Build Coastguard Worker# blocklists. 20*7594170eSAndroid Build Coastguard Worker# TODO: b/294868620 - This whole file can be removed when completing the bug 21*7594170eSAndroid Build Coastguard Workerdef apply_sanitizer_enablement_transition(features): 22*7594170eSAndroid Build Coastguard Worker if "android_cfi" in features and "-android_cfi" not in features: 23*7594170eSAndroid Build Coastguard Worker return True 24*7594170eSAndroid Build Coastguard Worker for feature in features: 25*7594170eSAndroid Build Coastguard Worker if feature.startswith("ubsan_"): 26*7594170eSAndroid Build Coastguard Worker return True 27*7594170eSAndroid Build Coastguard Worker return False 28*7594170eSAndroid Build Coastguard Worker 29*7594170eSAndroid Build Coastguard Workerdef _drop_sanitizer_enablement_transition_impl(_, __): 30*7594170eSAndroid Build Coastguard Worker return { 31*7594170eSAndroid Build Coastguard Worker transition_constants.sanitizers_enabled_key: False, 32*7594170eSAndroid Build Coastguard Worker } 33*7594170eSAndroid Build Coastguard Worker 34*7594170eSAndroid Build Coastguard Workerdrop_sanitizer_enablement_transition = transition( 35*7594170eSAndroid Build Coastguard Worker implementation = _drop_sanitizer_enablement_transition_impl, 36*7594170eSAndroid Build Coastguard Worker inputs = [], 37*7594170eSAndroid Build Coastguard Worker outputs = [transition_constants.sanitizers_enabled_key], 38*7594170eSAndroid Build Coastguard Worker) 39