1*760c253cSXin Li// Copyright 2019 The ChromiumOS Authors 2*760c253cSXin Li// Use of this source code is governed by a BSD-style license that can be 3*760c253cSXin Li// found in the LICENSE file. 4*760c253cSXin Li 5*760c253cSXin Lipackage main 6*760c253cSXin Li 7*760c253cSXin Lifunc processStackProtectorFlags(builder *commandBuilder) { 8*760c253cSXin Li fstackMap := map[string]bool{"-D__KERNEL__": true, "-fno-stack-protector": true, "-nodefaultlibs": true, 9*760c253cSXin Li "-nostdlib": true} 10*760c253cSXin Li 11*760c253cSXin Li fstack := false 12*760c253cSXin Li if builder.target.abi != "eabi" { 13*760c253cSXin Li for _, arg := range builder.args { 14*760c253cSXin Li if arg.fromUser && fstackMap[arg.value] { 15*760c253cSXin Li fstack = true 16*760c253cSXin Li break 17*760c253cSXin Li } 18*760c253cSXin Li } 19*760c253cSXin Li } 20*760c253cSXin Li if fstack { 21*760c253cSXin Li builder.addPreUserArgs("-fno-stack-protector") 22*760c253cSXin Li builder.transformArgs(func(arg builderArg) string { 23*760c253cSXin Li if !arg.fromUser && arg.value == "-fstack-protector-strong" { 24*760c253cSXin Li return "" 25*760c253cSXin Li } 26*760c253cSXin Li return arg.value 27*760c253cSXin Li }) 28*760c253cSXin Li } 29*760c253cSXin Li} 30