aboutsummaryrefslogtreecommitdiff
path: root/compiler_wrapper/stackprotector_flags.go
blob: 246057206d4266ae49c61809e6fe33dc9a5ea648 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 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

func processStackProtectorFlags(builder *commandBuilder) {
	fstackMap := map[string]bool{"-D__KERNEL__": true, "-fno-stack-protector": true, "-nodefaultlibs": true,
		"-nostdlib": true}

	fstack := false
	if builder.target.abi != "eabi" {
		for _, arg := range builder.args {
			if arg.fromUser && fstackMap[arg.value] {
				fstack = true
				break
			}
		}
	}
	if fstack {
		builder.addPreUserArgs("-fno-stack-protector")
		builder.transformArgs(func(arg builderArg) string {
			if !arg.fromUser && arg.value == "-fstack-protector-strong" {
				return ""
			}
			return arg.value
		})
	}
}