Add Rust fuzzing support.

Add a rust_fuzz module which builds a libfuzzer binary that enabes
asan+sancov. This relies on the libfuzzer-sys crate.

Bug: 147140513
Test: Local rust_fuzz example builds, fuzzes with asan+sancov.
Change-Id: I57db3b8d25869791824ccfab768d13b0bb9d42fa
This commit is contained in:
Ivan Lozano
2020-02-11 08:24:25 -05:00
parent f98384ad80
commit 6cd99e6ab4
15 changed files with 524 additions and 7 deletions

View File

@@ -34,6 +34,8 @@ type Toolchain interface {
Supported() bool
Bionic() bool
LibclangRuntimeLibraryArch() string
}
type toolchainBase struct {
@@ -106,6 +108,36 @@ func (toolchainBase) Supported() bool {
return false
}
func (toolchainBase) LibclangRuntimeLibraryArch() string {
return ""
}
func LibFuzzerRuntimeLibrary(t Toolchain) string {
return LibclangRuntimeLibrary(t, "fuzzer")
}
func LibclangRuntimeLibrary(t Toolchain, library string) string {
arch := t.LibclangRuntimeLibraryArch()
if arch == "" {
return ""
}
if !t.Bionic() {
return "libclang_rt." + library + "-" + arch
}
return "libclang_rt." + library + "-" + arch + "-android"
}
func LibRustRuntimeLibrary(t Toolchain, library string) string {
arch := t.LibclangRuntimeLibraryArch()
if arch == "" {
return ""
}
if !t.Bionic() {
return "librustc_rt." + library + "-" + arch
}
return "librustc_rt." + library + "-" + arch + "-android"
}
func toolchainBaseFactory() Toolchain {
return &toolchainBase{}
}