Home | History | Annotate | Download | only in cc

Lines Matching refs:sanitize

45 	minimalRuntimeFlags = []string{"-fsanitize-minimal-runtime", "-fno-sanitize-trap=integer", "-fno-sanitize-recover=integer"}
82 Sanitize struct {
121 type sanitize struct {
132 func (sanitize *sanitize) props() []interface{} {
133 return []interface{}{&sanitize.Properties}
136 func (sanitize *sanitize) begin(ctx BaseModuleContext) {
137 s := &sanitize.Properties.Sanitize
284 sanitize.Properties.SanitizerEnabled = true
294 func (sanitize *sanitize) deps(ctx BaseModuleContext, deps Deps) Deps {
295 if !sanitize.Properties.SanitizerEnabled { // || c.static() {
300 if Bool(sanitize.Properties.Sanitize.Address) {
308 func (sanitize *sanitize) flags(ctx ModuleContext, flags Flags) Flags {
312 if ctx.Device() && sanitize.Properties.MinimalRuntimeDep {
316 if !sanitize.Properties.SanitizerEnabled {
327 if Bool(sanitize.Properties.Sanitize.All_undefined) {
330 if Bool(sanitize.Properties.Sanitize.Undefined) {
355 sanitizers = append(sanitizers, sanitize.Properties.Sanitize.Misc_undefined...)
358 if Bool(sanitize.Properties.Sanitize.Diag.Undefined) {
362 diagSanitizers = append(diagSanitizers, sanitize.Properties.Sanitize.Diag.Misc_undefined...)
364 if Bool(sanitize.Properties.Sanitize.Address) {
388 if Bool(sanitize.Properties.Sanitize.Thread) {
392 if Bool(sanitize.Properties.Sanitize.Coverage) {
396 if Bool(sanitize.Properties.Sanitize.Safestack) {
400 if Bool(sanitize.Properties.Sanitize.Cfi) {
422 if Bool(sanitize.Properties.Sanitize.Diag.Cfi) {
432 if Bool(sanitize.Properties.Sanitize.Integer_overflow) {
437 if Bool(sanitize.Properties.Sanitize.Diag.Integer_overflow) {
449 flags.CFlags = append(flags.CFlags, "-fno-sanitize-recover=all")
457 if enableMinimalRuntime(sanitize) {
466 flags.CFlags = append(flags.CFlags, "-fno-sanitize-trap="+strings.Join(diagSanitizers, ","))
470 if sanitize.Properties.Sanitize.Recover != nil {
472 strings.Join(sanitize.Properties.Sanitize.Recover, ","))
477 if Bool(sanitize.Properties.Sanitize.Address) {
479 } else if Bool(sanitize.Properties.Sanitize.Thread) {
490 sanitize.runtimeLibrary = runtimeLibrary
493 sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary
495 sanitize.androidMkRuntimeLibrary = sanitize.runtimeLibrary + vendorSuffix
499 blacklist := android.OptionalPathForModuleSrc(ctx, sanitize.Properties.Sanitize.Blacklist)
508 func (sanitize *sanitize) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
510 if sanitize.androidMkRuntimeLibrary != "" {
511 fmt.Fprintln(w, "LOCAL_SHARED_LIBRARIES += "+sanitize.androidMkRuntimeLibrary)
517 if ret.Class == "STATIC_LIBRARIES" && Bool(sanitizeSanitize.Cfi) {
522 func (sanitize *sanitize) inSanitizerDir() bool {
523 return sanitize.Properties.InSanitizerDir
526 func (sanitize *sanitize) getSanitizerBoolPtr(t sanitizerType) *bool {
529 return sanitize.Properties.Sanitize.Address
531 return sanitize.Properties.Sanitize.Thread
533 return sanitize.Properties.Sanitize.Integer_overflow
535 return sanitize.Properties.Sanitize.Cfi
541 func (sanitize *sanitize) isUnsanitizedVariant() bool {
542 return !sanitize.isSanitizerEnabled(asan) &&
543 !sanitize.isSanitizerEnabled(tsan) &&
544 !sanitize.isSanitizerEnabled(cfi)
547 func (sanitize *sanitize) isVariantOnProductionDevice() bool {
548 return !sanitize.isSanitizerEnabled(asan) &&
549 !sanitize.isSanitizerEnabled(tsan)
552 func (sanitize *sanitize) SetSanitizer(t sanitizerType, b bool) {
555 sanitize.Properties.Sanitize.Address = boolPtr(b)
557 sanitize.Properties.Sanitize.Coverage = nil
560 sanitize.Properties.Sanitize.Thread = boolPtr(b)
562 sanitize.Properties.Sanitize.Integer_overflow = boolPtr(b)
564 sanitize.Properties.Sanitize.Cfi = boolPtr(b)
565 sanitize.Properties.Sanitize.Diag.Cfi = boolPtr(b)
570 sanitize.Properties.SanitizerEnabled = true
576 func (sanitize *sanitize) isSanitizerExplicitlyDisabled(t sanitizerType) bool {
577 if sanitize == nil {
581 sanitizerVal := sanitize.getSanitizerBoolPtr(t)
590 func (sanitize *sanitize) isSanitizerEnabled(t sanitizerType) bool {
591 if sanitize == nil {
595 sanitizerVal := sanitize.getSanitizerBoolPtr(t)
602 if c, ok := mctx.Module().(*Module); ok && c.sanitize.isSanitizerEnabled(t) {
604 if d, ok := module.(*Module); ok && d.sanitize != nil &&
605 !Bool(d.sanitize.Properties.Sanitize.Never) &&
606 !d.sanitize.isSanitizerExplicitlyDisabled(t) {
608 d.sanitize.Properties.SanitizeDep = true
619 if c, ok := mctx.Module().(*Module); ok && c.sanitize != nil {
621 if d, ok := module.(*Module); ok && d.static() && d.sanitize != nil {
625 if enableMinimalRuntime(d.sanitize) {
626 c.sanitize.Properties.MinimalRuntimeDep = true
637 if c, ok := mctx.Module().(*Module); ok && c.sanitize != nil {
638 if c.isDependencyRoot() && c.sanitize.isSanitizerEnabled(t) {
640 modules[0].(*Module).sanitize.SetSanitizer(t, true)
641 } else if c.sanitize.isSanitizerEnabled(t) || c.sanitize.Properties.SanitizeDep {
644 isSanitizerEnabled := c.sanitize.isSanitizerEnabled(t)
647 modules[0].(*Module).sanitize.SetSanitizer(t, false)
648 modules[1].(*Module).sanitize.SetSanitizer(t, true)
650 modules[0].(*Module).sanitize.Properties.SanitizeDep = false
651 modules[1].(*Module).sanitize.Properties.SanitizeDep = false
681 modules[1].(*Module).sanitize.Properties.InSanitizerDir = true
682 modules[1].(*Module).sanitize.SetSanitizer(cfi, false)
693 c.sanitize.Properties.SanitizeDep = false
704 func enableMinimalRuntime(sanitize *sanitize) bool {
705 if !Bool(sanitize.Properties.Sanitize.Address) &&
706 (Bool(sanitize.Properties.Sanitize.Integer_overflow) ||
707 len(sanitize.Properties.Sanitize.Misc_undefined) > 0) &&
708 !(Bool(sanitize.Properties.Sanitize.Diag.Integer_overflow) ||
709 Bool(sanitize.Properties.Sanitize.Diag.Cfi) ||
710 len(sanitize.Properties.Sanitize.Diag.Misc_undefined) > 0) {