// Copyright 2019 The ChromiumOS 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
	for _, arg := range builder.args {
		// TODO: This should probably be -fsanitize= to not match on
		// e.g. -fsanitize-blocklist
		if arg.fromUser {
			if strings.HasPrefix(arg.value, "-fsanitize") {
				hasSanitizeFlags = 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
		})
	}
}
