// Copyright 2019 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package main

import (
	"strings"
)

func processSanitizerFlags(builder *commandBuilder) {
	hasSanitizeFlags := false
	hasSanitizeFuzzerFlags := false
	for _, arg := range builder.args {
		// TODO: This should probably be -fsanitize= to not match on
		// e.g. -fsanitize-blacklist
		if arg.fromUser && strings.HasPrefix(arg.value, "-fsanitize") {
			hasSanitizeFlags = true
			if strings.Contains(arg.value, "fuzzer") {
				hasSanitizeFuzzerFlags = true
			}
		}
	}
	if hasSanitizeFlags {
		// Flags not supported by sanitizers (ASan etc.)
		unsupportedSanitizerFlags := map[string]bool{
			"-D_FORTIFY_SOURCE=1": true,
			"-D_FORTIFY_SOURCE=2": true,
			"-Wl,--no-undefined":  true,
			"-Wl,-z,defs":         true,
		}

		builder.transformArgs(func(arg builderArg) string {
			// TODO: This is a bug in the old wrapper to not filter
			// non user args for gcc. Fix this once we don't compare to the old wrapper anymore.
			if (builder.target.compilerType != gccType || arg.fromUser) &&
				unsupportedSanitizerFlags[arg.value] {
				return ""
			}
			return arg.value
		})
		if hasSanitizeFuzzerFlags && builder.target.compilerType == clangType {
			fuzzerFlagsToAdd := []string{
				// TODO: This flag should be removed once fuzzer works with new pass manager
				"-fno-experimental-new-pass-manager",
			}
			builder.addPreUserArgs(fuzzerFlagsToAdd...)
		}
	}
}
