From 631ca380e92b8e04af17831c91740160bb66ebb7 Mon Sep 17 00:00:00 2001 From: Lukasz Okraszewski Date: Wed, 11 Oct 2023 15:04:33 +0100 Subject: [PATCH 1/3] chore: add hwasan test case for legacy libs Change-Id: If9b5c1052f1262e4d48cc85685130ad0ece7ce07 --- .../tests/shared_library/hwasan/WORKSPACE | 0 .../tests/shared_library/hwasan/app/bplist | 1 + .../tests/shared_library/hwasan/app/build.bp | 14 ++ .../hwasan/app/plugins/Android.bp.in | 0 .../hwasan/out/android/Android.bp.out | 27 ++++ .../hwasan/out/android/bob_warnings.csv | 0 .../hwasan/out/android/expectedExitCode.int | 1 + .../hwasan/out/android/expectedStderr.txt | 0 .../hwasan/out/android/expectedStdout.txt | 0 .../hwasan/out/linux/build.ninja.out | 147 ++++++++++++++++++ .../hwasan/out/linux/expectedExitCode.int | 1 + .../hwasan/out/linux/expectedStderr.txt | 0 .../hwasan/out/linux/expectedStdout.txt | 0 .../tests/static_library/hwasan/WORKSPACE | 0 .../tests/static_library/hwasan/app/bplist | 1 + .../tests/static_library/hwasan/app/build.bp | 14 ++ .../hwasan/app/plugins/Android.bp.in | 0 .../hwasan/out/android/Android.bp.out | 27 ++++ .../hwasan/out/android/bob_warnings.csv | 0 .../hwasan/out/android/expectedExitCode.int | 1 + .../hwasan/out/android/expectedStderr.txt | 0 .../hwasan/out/android/expectedStdout.txt | 0 .../hwasan/out/linux/build.ninja.out | 128 +++++++++++++++ .../hwasan/out/linux/expectedExitCode.int | 1 + .../hwasan/out/linux/expectedStderr.txt | 0 .../hwasan/out/linux/expectedStdout.txt | 0 26 files changed, 363 insertions(+) create mode 100644 gendiffer/tests/shared_library/hwasan/WORKSPACE create mode 100644 gendiffer/tests/shared_library/hwasan/app/bplist create mode 100644 gendiffer/tests/shared_library/hwasan/app/build.bp create mode 100644 gendiffer/tests/shared_library/hwasan/app/plugins/Android.bp.in create mode 100644 gendiffer/tests/shared_library/hwasan/out/android/Android.bp.out create mode 100644 gendiffer/tests/shared_library/hwasan/out/android/bob_warnings.csv create mode 100644 gendiffer/tests/shared_library/hwasan/out/android/expectedExitCode.int create mode 100644 gendiffer/tests/shared_library/hwasan/out/android/expectedStderr.txt create mode 100644 gendiffer/tests/shared_library/hwasan/out/android/expectedStdout.txt create mode 100644 gendiffer/tests/shared_library/hwasan/out/linux/build.ninja.out create mode 100644 gendiffer/tests/shared_library/hwasan/out/linux/expectedExitCode.int create mode 100644 gendiffer/tests/shared_library/hwasan/out/linux/expectedStderr.txt create mode 100644 gendiffer/tests/shared_library/hwasan/out/linux/expectedStdout.txt create mode 100644 gendiffer/tests/static_library/hwasan/WORKSPACE create mode 100644 gendiffer/tests/static_library/hwasan/app/bplist create mode 100644 gendiffer/tests/static_library/hwasan/app/build.bp create mode 100644 gendiffer/tests/static_library/hwasan/app/plugins/Android.bp.in create mode 100644 gendiffer/tests/static_library/hwasan/out/android/Android.bp.out create mode 100644 gendiffer/tests/static_library/hwasan/out/android/bob_warnings.csv create mode 100644 gendiffer/tests/static_library/hwasan/out/android/expectedExitCode.int create mode 100644 gendiffer/tests/static_library/hwasan/out/android/expectedStderr.txt create mode 100644 gendiffer/tests/static_library/hwasan/out/android/expectedStdout.txt create mode 100644 gendiffer/tests/static_library/hwasan/out/linux/build.ninja.out create mode 100644 gendiffer/tests/static_library/hwasan/out/linux/expectedExitCode.int create mode 100644 gendiffer/tests/static_library/hwasan/out/linux/expectedStderr.txt create mode 100644 gendiffer/tests/static_library/hwasan/out/linux/expectedStdout.txt diff --git a/gendiffer/tests/shared_library/hwasan/WORKSPACE b/gendiffer/tests/shared_library/hwasan/WORKSPACE new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/app/bplist b/gendiffer/tests/shared_library/hwasan/app/bplist new file mode 100644 index 00000000..787cc937 --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/app/bplist @@ -0,0 +1 @@ +build.bp diff --git a/gendiffer/tests/shared_library/hwasan/app/build.bp b/gendiffer/tests/shared_library/hwasan/app/build.bp new file mode 100644 index 00000000..afcf5be6 --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/app/build.bp @@ -0,0 +1,14 @@ + + +bob_shared_library { + name: "libshared", + srcs: ["src.cpp"], + hwasan_enabled: true, +} + +bob_binary { + hwasan_enabled: true, + name: "bob_binary", + srcs: ["src.cpp"], + shared_libs: ["libshared"], +} diff --git a/gendiffer/tests/shared_library/hwasan/app/plugins/Android.bp.in b/gendiffer/tests/shared_library/hwasan/app/plugins/Android.bp.in new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/out/android/Android.bp.out b/gendiffer/tests/shared_library/hwasan/out/android/Android.bp.out new file mode 100644 index 00000000..dc96e899 --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/out/android/Android.bp.out @@ -0,0 +1,27 @@ + +genrule { + name: "_check_buildbp_updates_redacted", + srcs: ["build.bp"], + out: ["androidbp_up_to_date"], + tool_files: ["scripts/verify_hash.py"], + cmd: "python $(location scripts/verify_hash.py) --hash redacted --out $(out) -- $(in)", +} + +cc_binary { + name: "bob_binary", + srcs: ["src.cpp"], + shared_libs: ["libshared"], + sanitize: { + hwaddress: true, + }, +} + +cc_library_shared { + name: "libshared", + srcs: ["src.cpp"], + compile_multilib: "both", + sanitize: { + hwaddress: true, + }, +} + diff --git a/gendiffer/tests/shared_library/hwasan/out/android/bob_warnings.csv b/gendiffer/tests/shared_library/hwasan/out/android/bob_warnings.csv new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/out/android/expectedExitCode.int b/gendiffer/tests/shared_library/hwasan/out/android/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/out/android/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/shared_library/hwasan/out/android/expectedStderr.txt b/gendiffer/tests/shared_library/hwasan/out/android/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/out/android/expectedStdout.txt b/gendiffer/tests/shared_library/hwasan/out/android/expectedStdout.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/out/linux/build.ninja.out b/gendiffer/tests/shared_library/hwasan/out/linux/build.ninja.out new file mode 100644 index 00000000..4a9350df --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/out/linux/build.ninja.out @@ -0,0 +1,147 @@ +# ****************************************************************************** +# *** This file is generated and should not be edited *** +# ****************************************************************************** +# +# This file contains variables, rules, and pools with name prefixes indicating +# they were generated by the following Go packages: +# +# bob [from Go package bob] +# bootstrap [from Go package github.com/google/blueprint/bootstrap] +# +ninja_required_version = 1.7.0 + +g.bob.BobScriptsDir = redacted/scripts + +g.bob.BuildDir = redacted + +g.bob.SrcDir = redacted + +g.bob.toc = ${g.bob.BobScriptsDir}/library_toc.py + +g.bootstrap.BinDir = redacted/.bootstrap/bin + +g.bootstrap.buildDir = redacted + +g.bootstrap.ninjaBuildDir = redacted + +g.bootstrap.srcDir = redacted + +# Limit the parallelization of linking, which is memory intensive +pool g.bob.link + depth = 1 + +builddir = ${g.bootstrap.ninjaBuildDir} + +rule g.bob.cxx + command = ${build_wrapper} ${cxxcompiler} -c ${cflags} ${cxxflags} -MD -MF ${depfile} ${in} -o ${out} + depfile = ${out}.d + deps = gcc + description = ${out} + +rule g.bob.executable + pool = g.bob.link + command = ${build_wrapper} ${linker} ${in} -o ${out} ${ldflags} ${static_libs} -L${shared_libs_dir} ${shared_libs_flags} ${ldlibs} + description = ${out} + +rule g.bob.shared_library + pool = g.bob.link + command = ${build_wrapper} ${linker} -shared ${in} -o ${out} ${ldflags} ${static_libs} -L${shared_libs_dir} ${shared_libs_flags} ${ldlibs} + description = ${out} + +rule g.bob.shared_library_toc + command = ${g.bob.toc} ${in} -o ${out} ${tocflags} + description = Generate toc ${out} + restat = true + +rule g.bootstrap.cp + command = cp ${in} ${out} + description = cp ${out} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_binary +# Variant: target +# Type: bob_binary +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_binary_target.cflags = +m.bob_binary_target.cxxflags = + +build ${g.bob.BuildDir}/target/objects/bob_binary/src.cpp.o: g.bob.cxx $ + ${g.bob.SrcDir}/src.cpp + build_wrapper = + cflags = ${m.bob_binary_target.cflags} + cxxcompiler = g++ + cxxflags = ${m.bob_binary_target.cxxflags} + +build ${g.bob.BuildDir}/target/executable/bob_binary: g.bob.executable $ + ${g.bob.BuildDir}/target/objects/bob_binary/src.cpp.o | $ + ${g.bob.BuildDir}/target/shared/libshared.so.toc || $ + ${g.bob.BuildDir}/target/shared/libshared.so + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -lshared -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = + +build bob_binary: phony ${g.bob.BuildDir}/target/executable/bob_binary +default bob_binary + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: libshared +# Variant: target +# Type: bob_shared_library +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.libshared_target.cflags = +m.libshared_target.cxxflags = + +build ${g.bob.BuildDir}/target/objects/libshared/src.cpp.o: g.bob.cxx $ + ${g.bob.SrcDir}/src.cpp + build_wrapper = + cflags = ${m.libshared_target.cflags} + cxxcompiler = g++ + cxxflags = ${m.libshared_target.cxxflags} + +build ${g.bob.BuildDir}/target/shared/libshared.so: g.bob.shared_library $ + ${g.bob.BuildDir}/target/objects/libshared/src.cpp.o + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = + +build ${g.bob.BuildDir}/target/shared/libshared.so.toc: $ + g.bob.shared_library_toc ${g.bob.BuildDir}/target/shared/libshared.so $ + | ${g.bob.toc} + tocflags = --format elf --objdump-tool objdump + +build libshared: phony ${g.bob.BuildDir}/target/shared/libshared.so + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Singleton: bootstrap +# Factory: github.com/google/blueprint/bootstrap.Main.func4 + +rule s.bootstrap.bigbpDocs + command = ${g.bootstrap.BinDir}/minibp -p -l redacted/bplist -b ${g.bootstrap.buildDir} --docs ${out} ${g.bootstrap.srcDir}/build.bp + description = minibp docs ${out} + +build ${g.bootstrap.buildDir}/bin/minibp: g.bootstrap.cp $ + ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/bin/minibp + +build ${g.bootstrap.buildDir}/.primary/docs/minibp.html: s.bootstrap.bigbpDocs $ + | ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/.primary/docs/minibp.html + +build blueprint_docs: phony ${g.bootstrap.buildDir}/.primary/docs/minibp.html +default blueprint_docs + +build blueprint_tools: phony +default blueprint_tools + diff --git a/gendiffer/tests/shared_library/hwasan/out/linux/expectedExitCode.int b/gendiffer/tests/shared_library/hwasan/out/linux/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/shared_library/hwasan/out/linux/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/shared_library/hwasan/out/linux/expectedStderr.txt b/gendiffer/tests/shared_library/hwasan/out/linux/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/shared_library/hwasan/out/linux/expectedStdout.txt b/gendiffer/tests/shared_library/hwasan/out/linux/expectedStdout.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/WORKSPACE b/gendiffer/tests/static_library/hwasan/WORKSPACE new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/app/bplist b/gendiffer/tests/static_library/hwasan/app/bplist new file mode 100644 index 00000000..787cc937 --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/app/bplist @@ -0,0 +1 @@ +build.bp diff --git a/gendiffer/tests/static_library/hwasan/app/build.bp b/gendiffer/tests/static_library/hwasan/app/build.bp new file mode 100644 index 00000000..271b0004 --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/app/build.bp @@ -0,0 +1,14 @@ + + +bob_static_library { + name: "bob_static_library", + srcs: ["src.cpp"], + hwasan_enabled: true, +} + +bob_binary { + hwasan_enabled: true, + name: "bob_binary", + srcs: ["src.cpp"], + static_libs: ["bob_static_library"], +} diff --git a/gendiffer/tests/static_library/hwasan/app/plugins/Android.bp.in b/gendiffer/tests/static_library/hwasan/app/plugins/Android.bp.in new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/out/android/Android.bp.out b/gendiffer/tests/static_library/hwasan/out/android/Android.bp.out new file mode 100644 index 00000000..4a2a13f9 --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/out/android/Android.bp.out @@ -0,0 +1,27 @@ + +genrule { + name: "_check_buildbp_updates_redacted", + srcs: ["build.bp"], + out: ["androidbp_up_to_date"], + tool_files: ["scripts/verify_hash.py"], + cmd: "python $(location scripts/verify_hash.py) --hash redacted --out $(out) -- $(in)", +} + +cc_binary { + name: "bob_binary", + srcs: ["src.cpp"], + static_libs: ["bob_static_library"], + sanitize: { + hwaddress: true, + }, +} + +cc_library_static { + name: "bob_static_library", + srcs: ["src.cpp"], + compile_multilib: "both", + sanitize: { + hwaddress: true, + }, +} + diff --git a/gendiffer/tests/static_library/hwasan/out/android/bob_warnings.csv b/gendiffer/tests/static_library/hwasan/out/android/bob_warnings.csv new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/out/android/expectedExitCode.int b/gendiffer/tests/static_library/hwasan/out/android/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/out/android/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/static_library/hwasan/out/android/expectedStderr.txt b/gendiffer/tests/static_library/hwasan/out/android/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/out/android/expectedStdout.txt b/gendiffer/tests/static_library/hwasan/out/android/expectedStdout.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/out/linux/build.ninja.out b/gendiffer/tests/static_library/hwasan/out/linux/build.ninja.out new file mode 100644 index 00000000..e7b1a15e --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/out/linux/build.ninja.out @@ -0,0 +1,128 @@ +# ****************************************************************************** +# *** This file is generated and should not be edited *** +# ****************************************************************************** +# +# This file contains variables, rules, and pools with name prefixes indicating +# they were generated by the following Go packages: +# +# bob [from Go package bob] +# bootstrap [from Go package github.com/google/blueprint/bootstrap] +# +ninja_required_version = 1.7.0 + +g.bob.BuildDir = redacted + +g.bob.SrcDir = redacted + +g.bootstrap.BinDir = redacted/.bootstrap/bin + +g.bootstrap.buildDir = redacted + +g.bootstrap.ninjaBuildDir = redacted + +g.bootstrap.srcDir = redacted + +# Limit the parallelization of linking, which is memory intensive +pool g.bob.link + depth = 1 + +builddir = ${g.bootstrap.ninjaBuildDir} + +rule g.bob.cxx + command = ${build_wrapper} ${cxxcompiler} -c ${cflags} ${cxxflags} -MD -MF ${depfile} ${in} -o ${out} + depfile = ${out}.d + deps = gcc + description = ${out} + +rule g.bob.executable + pool = g.bob.link + command = ${build_wrapper} ${linker} ${in} -o ${out} ${ldflags} ${static_libs} -L${shared_libs_dir} ${shared_libs_flags} ${ldlibs} + description = ${out} + +rule g.bob.static_library + command = rm -f ${out} && ${build_wrapper} ${ar} -rcs ${out} ${in} + description = ${out} + +rule g.bootstrap.cp + command = cp ${in} ${out} + description = cp ${out} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_binary +# Variant: target +# Type: bob_binary +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_binary_target.cflags = +m.bob_binary_target.cxxflags = + +build ${g.bob.BuildDir}/target/objects/bob_binary/src.cpp.o: g.bob.cxx $ + ${g.bob.SrcDir}/src.cpp + build_wrapper = + cflags = ${m.bob_binary_target.cflags} + cxxcompiler = g++ + cxxflags = ${m.bob_binary_target.cxxflags} + +build ${g.bob.BuildDir}/target/executable/bob_binary: g.bob.executable $ + ${g.bob.BuildDir}/target/objects/bob_binary/src.cpp.o | $ + ${g.bob.BuildDir}/target/static/bob_static_library.a + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = ${g.bob.BuildDir}/target/static/bob_static_library.a + +build bob_binary: phony ${g.bob.BuildDir}/target/executable/bob_binary +default bob_binary + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_static_library +# Variant: target +# Type: bob_static_library +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_static_library_target.cflags = +m.bob_static_library_target.cxxflags = + +build ${g.bob.BuildDir}/target/objects/bob_static_library/src.cpp.o: g.bob.cxx $ + ${g.bob.SrcDir}/src.cpp + build_wrapper = + cflags = ${m.bob_static_library_target.cflags} + cxxcompiler = g++ + cxxflags = ${m.bob_static_library_target.cxxflags} + +build ${g.bob.BuildDir}/target/static/bob_static_library.a: $ + g.bob.static_library $ + ${g.bob.BuildDir}/target/objects/bob_static_library/src.cpp.o + ar = ar + build_wrapper = + +build bob_static_library: phony $ + ${g.bob.BuildDir}/target/static/bob_static_library.a + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Singleton: bootstrap +# Factory: github.com/google/blueprint/bootstrap.Main.func4 + +rule s.bootstrap.bigbpDocs + command = ${g.bootstrap.BinDir}/minibp -p -l redacted/bplist -b ${g.bootstrap.buildDir} --docs ${out} ${g.bootstrap.srcDir}/build.bp + description = minibp docs ${out} + +build ${g.bootstrap.buildDir}/bin/minibp: g.bootstrap.cp $ + ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/bin/minibp + +build ${g.bootstrap.buildDir}/.primary/docs/minibp.html: s.bootstrap.bigbpDocs $ + | ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/.primary/docs/minibp.html + +build blueprint_docs: phony ${g.bootstrap.buildDir}/.primary/docs/minibp.html +default blueprint_docs + +build blueprint_tools: phony +default blueprint_tools + diff --git a/gendiffer/tests/static_library/hwasan/out/linux/expectedExitCode.int b/gendiffer/tests/static_library/hwasan/out/linux/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/static_library/hwasan/out/linux/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/static_library/hwasan/out/linux/expectedStderr.txt b/gendiffer/tests/static_library/hwasan/out/linux/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/static_library/hwasan/out/linux/expectedStdout.txt b/gendiffer/tests/static_library/hwasan/out/linux/expectedStdout.txt new file mode 100644 index 00000000..e69de29b From 686d7b08e963dda27c20cedd134a7355cb16681c Mon Sep 17 00:00:00 2001 From: Lukasz Okraszewski Date: Wed, 11 Oct 2023 15:00:27 +0100 Subject: [PATCH 2/3] chore: add hwasan test case for toolchain Change-Id: I525d37b31720eb5712efd453158bac3dbdce6b92 --- gendiffer/tests/toolchain/hwasan/WORKSPACE | 0 gendiffer/tests/toolchain/hwasan/app/bplist | 1 + gendiffer/tests/toolchain/hwasan/app/build.bp | 27 +++ .../hwasan/app/plugins/Android.bp.in | 0 .../hwasan/out/android/Android.bp.out | 31 ++++ .../hwasan/out/android/bob_warnings.csv | 0 .../hwasan/out/android/expectedExitCode.int | 1 + .../hwasan/out/android/expectedStderr.txt | 0 .../hwasan/out/android/expectedStdout.txt | 0 .../hwasan/out/linux/build.ninja.out | 172 ++++++++++++++++++ .../hwasan/out/linux/expectedExitCode.int | 1 + .../hwasan/out/linux/expectedStderr.txt | 0 .../hwasan/out/linux/expectedStdout.txt | 0 13 files changed, 233 insertions(+) create mode 100644 gendiffer/tests/toolchain/hwasan/WORKSPACE create mode 100644 gendiffer/tests/toolchain/hwasan/app/bplist create mode 100644 gendiffer/tests/toolchain/hwasan/app/build.bp create mode 100644 gendiffer/tests/toolchain/hwasan/app/plugins/Android.bp.in create mode 100644 gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out create mode 100644 gendiffer/tests/toolchain/hwasan/out/android/bob_warnings.csv create mode 100644 gendiffer/tests/toolchain/hwasan/out/android/expectedExitCode.int create mode 100644 gendiffer/tests/toolchain/hwasan/out/android/expectedStderr.txt create mode 100644 gendiffer/tests/toolchain/hwasan/out/android/expectedStdout.txt create mode 100644 gendiffer/tests/toolchain/hwasan/out/linux/build.ninja.out create mode 100644 gendiffer/tests/toolchain/hwasan/out/linux/expectedExitCode.int create mode 100644 gendiffer/tests/toolchain/hwasan/out/linux/expectedStderr.txt create mode 100644 gendiffer/tests/toolchain/hwasan/out/linux/expectedStdout.txt diff --git a/gendiffer/tests/toolchain/hwasan/WORKSPACE b/gendiffer/tests/toolchain/hwasan/WORKSPACE new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/app/bplist b/gendiffer/tests/toolchain/hwasan/app/bplist new file mode 100644 index 00000000..787cc937 --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/app/bplist @@ -0,0 +1 @@ +build.bp diff --git a/gendiffer/tests/toolchain/hwasan/app/build.bp b/gendiffer/tests/toolchain/hwasan/app/build.bp new file mode 100644 index 00000000..c814daa9 --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/app/build.bp @@ -0,0 +1,27 @@ +bob_toolchain { + name: "toolchain", + // hwasan_enabled: true, not supported yet +} + +bob_library { + name: "bob_library", + srcs: [ + "main.c", + ], + build_by_default: true, +} + +bob_executable { + name: "bob_executable", + srcs: [ + "main.c", + ], +} + +bob_test { + name: "bob_test", + srcs: [ + "main.c", + ], + build_by_default: true, +} diff --git a/gendiffer/tests/toolchain/hwasan/app/plugins/Android.bp.in b/gendiffer/tests/toolchain/hwasan/app/plugins/Android.bp.in new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out b/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out new file mode 100644 index 00000000..68905716 --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out @@ -0,0 +1,31 @@ + +genrule { + name: "_check_buildbp_updates_redacted", + srcs: ["build.bp"], + out: ["androidbp_up_to_date"], + tool_files: ["scripts/verify_hash.py"], + cmd: "python $(location scripts/verify_hash.py) --hash redacted --out $(out) -- $(in)", +} + +cc_binary { + name: "bob_executable", + srcs: ["main.c"], + compile_multilib: "both", +} + +cc_library { + name: "bob_library", + host_supported: false, + device_supported: true, + srcs: ["main.c"], + compile_multilib: "both", +} + +cc_test { + name: "bob_test", + srcs: ["main.c"], + include_build_directory: false, + auto_gen_config: false, + gtest: false, +} + diff --git a/gendiffer/tests/toolchain/hwasan/out/android/bob_warnings.csv b/gendiffer/tests/toolchain/hwasan/out/android/bob_warnings.csv new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/out/android/expectedExitCode.int b/gendiffer/tests/toolchain/hwasan/out/android/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/out/android/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/toolchain/hwasan/out/android/expectedStderr.txt b/gendiffer/tests/toolchain/hwasan/out/android/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/out/android/expectedStdout.txt b/gendiffer/tests/toolchain/hwasan/out/android/expectedStdout.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/out/linux/build.ninja.out b/gendiffer/tests/toolchain/hwasan/out/linux/build.ninja.out new file mode 100644 index 00000000..196787f9 --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/out/linux/build.ninja.out @@ -0,0 +1,172 @@ +# ****************************************************************************** +# *** This file is generated and should not be edited *** +# ****************************************************************************** +# +# This file contains variables, rules, and pools with name prefixes indicating +# they were generated by the following Go packages: +# +# bob [from Go package bob] +# bootstrap [from Go package github.com/google/blueprint/bootstrap] +# +ninja_required_version = 1.7.0 + +g.bob.BuildDir = redacted + +g.bob.SrcDir = redacted + +g.bootstrap.BinDir = redacted/.bootstrap/bin + +g.bootstrap.buildDir = redacted + +g.bootstrap.ninjaBuildDir = redacted + +g.bootstrap.srcDir = redacted + +# Limit the parallelization of linking, which is memory intensive +pool g.bob.link + depth = 1 + +builddir = ${g.bootstrap.ninjaBuildDir} + +rule g.bob.cc + command = ${build_wrapper} ${ccompiler} -c ${cflags} ${conlyflags} -MD -MF ${depfile} ${in} -o ${out} + depfile = ${out}.d + deps = gcc + description = ${out} + +rule g.bob.executable + pool = g.bob.link + command = ${build_wrapper} ${linker} ${in} -o ${out} ${ldflags} ${static_libs} -L${shared_libs_dir} ${shared_libs_flags} ${ldlibs} + description = ${out} + +rule g.bob.shared_library + pool = g.bob.link + command = ${build_wrapper} ${linker} -shared ${in} -o ${out} ${ldflags} ${static_libs} -L${shared_libs_dir} ${shared_libs_flags} ${ldlibs} + description = ${out} + +rule g.bob.static_library + command = rm -f ${out} && ${build_wrapper} ${ar} -rcs ${out} ${in} + description = ${out} + +rule g.bootstrap.cp + command = cp ${in} ${out} + description = cp ${out} + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_executable +# Variant: target +# Type: bob_executable +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_executable_target.cflags = +m.bob_executable_target.conlyflags = + +build ${g.bob.BuildDir}/target/objects/bob_executable/main.c.o: g.bob.cc $ + ${g.bob.SrcDir}/main.c + build_wrapper = + ccompiler = gcc + cflags = ${m.bob_executable_target.cflags} + conlyflags = ${m.bob_executable_target.conlyflags} + +build ${g.bob.BuildDir}/target/executable/bob_executable: g.bob.executable $ + ${g.bob.BuildDir}/target/objects/bob_executable/main.c.o + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = + +build bob_executable: phony ${g.bob.BuildDir}/target/executable/bob_executable +default bob_executable + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_library +# Variant: target +# Type: bob_library +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_library_target.cflags = +m.bob_library_target.conlyflags = + +build ${g.bob.BuildDir}/target/objects/bob_library/main.c.o: g.bob.cc $ + ${g.bob.SrcDir}/main.c + build_wrapper = + ccompiler = gcc + cflags = ${m.bob_library_target.cflags} + conlyflags = ${m.bob_library_target.conlyflags} + +build ${g.bob.BuildDir}/target/shared/bob_library.so: g.bob.shared_library $ + ${g.bob.BuildDir}/target/objects/bob_library/main.c.o + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = + +build ${g.bob.BuildDir}/target/static/bob_library.a: g.bob.static_library $ + ${g.bob.BuildDir}/target/objects/bob_library/main.c.o + ar = ar + build_wrapper = + +build bob_library: phony ${g.bob.BuildDir}/target/static/bob_library.a $ + ${g.bob.BuildDir}/target/shared/bob_library.so +default bob_library + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Module: bob_test +# Variant: target +# Type: bob_test +# Factory: github.com/ARM-software/bob-build/core.Main.func1.1 +# Defined: build.bp:redacted + +m.bob_test_target.cflags = +m.bob_test_target.conlyflags = + +build ${g.bob.BuildDir}/target/objects/bob_test/main.c.o: g.bob.cc $ + ${g.bob.SrcDir}/main.c + build_wrapper = + ccompiler = gcc + cflags = ${m.bob_test_target.cflags} + conlyflags = ${m.bob_test_target.conlyflags} + +build ${g.bob.BuildDir}/target/executable/bob_test: g.bob.executable $ + ${g.bob.BuildDir}/target/objects/bob_test/main.c.o + build_wrapper = + ldflags = -Wl,--as-needed + ldlibs = + linker = g++ + shared_libs_dir = ${g.bob.BuildDir}/target/shared + shared_libs_flags = -Wl,-rpath-link,${g.bob.BuildDir}/target/shared + static_libs = + +build bob_test: phony ${g.bob.BuildDir}/target/executable/bob_test +default bob_test + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# Singleton: bootstrap +# Factory: github.com/google/blueprint/bootstrap.Main.func4 + +rule s.bootstrap.bigbpDocs + command = ${g.bootstrap.BinDir}/minibp -p -l redacted/bplist -b ${g.bootstrap.buildDir} --docs ${out} ${g.bootstrap.srcDir}/build.bp + description = minibp docs ${out} + +build ${g.bootstrap.buildDir}/bin/minibp: g.bootstrap.cp $ + ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/bin/minibp + +build ${g.bootstrap.buildDir}/.primary/docs/minibp.html: s.bootstrap.bigbpDocs $ + | ${g.bootstrap.BinDir}/minibp +default ${g.bootstrap.buildDir}/.primary/docs/minibp.html + +build blueprint_docs: phony ${g.bootstrap.buildDir}/.primary/docs/minibp.html +default blueprint_docs + +build blueprint_tools: phony +default blueprint_tools + diff --git a/gendiffer/tests/toolchain/hwasan/out/linux/expectedExitCode.int b/gendiffer/tests/toolchain/hwasan/out/linux/expectedExitCode.int new file mode 100644 index 00000000..573541ac --- /dev/null +++ b/gendiffer/tests/toolchain/hwasan/out/linux/expectedExitCode.int @@ -0,0 +1 @@ +0 diff --git a/gendiffer/tests/toolchain/hwasan/out/linux/expectedStderr.txt b/gendiffer/tests/toolchain/hwasan/out/linux/expectedStderr.txt new file mode 100644 index 00000000..e69de29b diff --git a/gendiffer/tests/toolchain/hwasan/out/linux/expectedStdout.txt b/gendiffer/tests/toolchain/hwasan/out/linux/expectedStdout.txt new file mode 100644 index 00000000..e69de29b From 220c7e13facb7bcdedd48df413c975664647801e Mon Sep 17 00:00:00 2001 From: Lukasz Okraszewski Date: Wed, 11 Oct 2023 14:49:41 +0100 Subject: [PATCH 3/3] feat(bob_toolchain): support hwasan Added support for `hwasan_enabled` property for `bob_toolchain`. Change-Id: I7ad3b3ce58da04e11657b905e5961eea98d0faac --- core/androidbp_cclibs.go | 45 +++++++++++++------ core/binary.go | 7 +-- core/library.go | 5 +++ core/library_shared.go | 4 +- core/library_static.go | 4 +- core/module_toolchain.go | 16 ++++--- gendiffer/tests/toolchain/hwasan/app/build.bp | 2 +- .../hwasan/out/android/Android.bp.out | 9 ++++ 8 files changed, 68 insertions(+), 24 deletions(-) diff --git a/core/androidbp_cclibs.go b/core/androidbp_cclibs.go index 0be9adb4..9df1fb41 100644 --- a/core/androidbp_cclibs.go +++ b/core/androidbp_cclibs.go @@ -172,15 +172,9 @@ func addMTEProps(m bpwriter.Module, props AndroidMTEProps) { } } -func addHWASANProps(m bpwriter.Module, props Build) { - memtagHeap := proptools.Bool(props.AndroidMTEProps.Mte.Memtag_heap) - if memtagHeap { - return - } - if proptools.Bool(props.Hwasan_enabled) { - g := m.NewGroup("sanitize") - g.AddBool("hwaddress", true) - } +func addHWASANProps(m bpwriter.Module) { + g := m.NewGroup("sanitize") + g.AddBool("hwaddress", true) } func addRequiredModules(mod bpwriter.Module, m ModuleLibrary, ctx blueprint.ModuleContext) { @@ -330,7 +324,7 @@ func addCcLibraryProps(mod bpwriter.Module, m ModuleLibrary, ctx blueprint.Modul } } -func addBinaryProps(mod bpwriter.Module, m ModuleBinary, ctx blueprint.ModuleContext, g *androidBpGenerator) { +func addBinaryProps(mod bpwriter.Module, m *ModuleBinary, ctx blueprint.ModuleContext, g *androidBpGenerator) { // Handle installation if _, installRel, ok := getSoongInstallPath(m.getInstallableProps()); ok { // Only setup multilib for target modules. @@ -356,8 +350,11 @@ func addBinaryProps(mod bpwriter.Module, m ModuleBinary, ctx blueprint.ModuleCon bc := GetModuleBackendConfiguration(ctx, m) if bc != nil { addMTEProps(mod, bc.GetMteProps(ctx)) + if !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } } - addHWASANProps(mod, m.Properties.Build) + } func addStaticOrSharedLibraryProps(mod bpwriter.Module, m ModuleLibrary, ctx blueprint.ModuleContext) { @@ -375,7 +372,6 @@ func addStaticOrSharedLibraryProps(mod bpwriter.Module, m ModuleLibrary, ctx blu if m.Properties.TargetType == toolchain.TgtTypeTarget && !linksToGeneratedLibrary(ctx) { mod.AddString("compile_multilib", "both") } - addHWASANProps(mod, m.Properties.Build) } func addStripProp(m bpwriter.Module) { @@ -574,7 +570,7 @@ func (g *androidBpGenerator) binaryActions(m *ModuleBinary, ctx blueprint.Module } addCcLibraryProps(mod, m.ModuleLibrary, ctx) - addBinaryProps(mod, *m, ctx, g) + addBinaryProps(mod, m, ctx, g) bc := GetModuleBackendConfiguration(ctx, m) if bc.strip() { addStripProp(mod) @@ -626,6 +622,10 @@ func (g *androidBpGenerator) sharedActions(m *ModuleSharedLibrary, ctx blueprint addStripProp(mod) } + if !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } + versionScript := g.getVersionScript(&m.ModuleLibrary, ctx) if versionScript != nil { mod.AddString("version_script", *versionScript) @@ -652,6 +652,13 @@ func (g *androidBpGenerator) staticActions(m *ModuleStaticLibrary, ctx blueprint addCcLibraryProps(mod, m.ModuleLibrary, ctx) addStaticOrSharedLibraryProps(mod, m.ModuleLibrary, ctx) + + bc := GetModuleBackendConfiguration(ctx, m) + if bc != nil { + if !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } + } } func proxyCflags(m *ModuleStrictLibrary) []string { @@ -701,6 +708,10 @@ func (g *androidBpGenerator) strictLibraryActions(m *ModuleStrictLibrary, ctx bl addProvenanceProps(ctx, mod, m) + if bc != nil && !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } + // TODO: Make addPGOProps generic and enable it if needed // addPGOProps(mod, m.Properties.Build.AndroidPGOProps) @@ -748,6 +759,10 @@ func (g *androidBpGenerator) executableTestActions(m *ModuleTest, ctx blueprint. addProvenanceProps(ctx, mod, m) + if bc != nil && !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } + // Avoid using cc_test default setup // TODO: `relative_install_path` needed - Module install directory may only be disabled if relative_install_path is set // mod.AddBool("no_named_install_directory", true) @@ -781,6 +796,10 @@ func (g *androidBpGenerator) strictBinaryActions(m *ModuleStrictBinary, ctx blue addStripProp(mod) } + if bc != nil && !proptools.Bool(bc.GetMteProps(ctx).Mte.Diag_memtag_heap) && bc.IsHwAsanEnabled() { + addHWASANProps(mod) + } + if m.Properties.TargetType == toolchain.TgtTypeTarget && !linksToGeneratedLibrary(ctx) { mod.AddString("compile_multilib", "both") } diff --git a/core/binary.go b/core/binary.go index e9357115..2774e225 100644 --- a/core/binary.go +++ b/core/binary.go @@ -16,9 +16,10 @@ type binaryInterface interface { file.Provider // A binary can provide itself as a source } -var _ binaryInterface = (*ModuleBinary)(nil) // impl check -var _ libraryInterface = (*ModuleBinary)(nil) // impl check -var _ BackendConfiguration = (*ModuleBinary)(nil) // impl check +var _ binaryInterface = (*ModuleBinary)(nil) // impl check +var _ libraryInterface = (*ModuleBinary)(nil) // impl check +var _ BackendConfiguration = (*ModuleBinary)(nil) // impl check +var _ BackendConfigurationProvider = (*ModuleBinary)(nil) // impl check func (m *ModuleBinary) OutFiles() (srcs file.Paths) { return file.Paths{file.NewPath(m.outputName(), string(m.getTarget()), file.TypeBinary|file.TypeExecutable|file.TypeInstallable)} diff --git a/core/library.go b/core/library.go index eaa7ec7b..0b4eff30 100644 --- a/core/library.go +++ b/core/library.go @@ -14,6 +14,7 @@ import ( "github.com/ARM-software/bob-build/internal/utils" "github.com/google/blueprint" + "github.com/google/blueprint/proptools" ) var depOutputsVarRegexp = regexp.MustCompile(`^\$\{(.+)_out\}$`) @@ -461,6 +462,10 @@ func (m *ModuleLibrary) GetMteProps(blueprint.ModuleContext) AndroidMTEProps { return m.Properties.AndroidMTEProps } +func (m *ModuleLibrary) IsHwAsanEnabled() bool { + return proptools.Bool(m.Properties.Build.Hwasan_enabled) +} + func (m *ModuleLibrary) IsForwardingSharedLibrary() bool { return m.Properties.isForwardingSharedLibrary() } diff --git a/core/library_shared.go b/core/library_shared.go index 54c4a79b..c7ee300f 100644 --- a/core/library_shared.go +++ b/core/library_shared.go @@ -25,7 +25,9 @@ const ( var _ linkableModule = (*ModuleSharedLibrary)(nil) var _ sharedLibProducer = (*ModuleSharedLibrary)(nil) var _ stripable = (*ModuleSharedLibrary)(nil) -var _ libraryInterface = (*ModuleSharedLibrary)(nil) // impl check +var _ libraryInterface = (*ModuleSharedLibrary)(nil) // impl check +var _ BackendConfiguration = (*ModuleSharedLibrary)(nil) // impl check +var _ BackendConfigurationProvider = (*ModuleSharedLibrary)(nil) // impl check func (m *ModuleSharedLibrary) OutFiles() (files file.Paths) { diff --git a/core/library_static.go b/core/library_static.go index 79879992..412a2d70 100644 --- a/core/library_static.go +++ b/core/library_static.go @@ -9,7 +9,9 @@ type ModuleStaticLibrary struct { ModuleLibrary } -var _ libraryInterface = (*ModuleStaticLibrary)(nil) // impl check +var _ libraryInterface = (*ModuleStaticLibrary)(nil) // impl check +var _ BackendConfiguration = (*ModuleStaticLibrary)(nil) // impl check +var _ BackendConfigurationProvider = (*ModuleStaticLibrary)(nil) // impl check func (m *ModuleStaticLibrary) GenerateBuildActions(ctx blueprint.ModuleContext) { if isEnabled(m) { diff --git a/core/module_toolchain.go b/core/module_toolchain.go index 96548394..c66c82db 100644 --- a/core/module_toolchain.go +++ b/core/module_toolchain.go @@ -9,6 +9,7 @@ import ( "github.com/ARM-software/bob-build/core/toolchain" "github.com/ARM-software/bob-build/core/toolchain/mapper" "github.com/google/blueprint" + "github.com/google/blueprint/proptools" ) type ModuleToolchainProps struct { @@ -31,6 +32,8 @@ type ModuleToolchainProps struct { Build_wrapper *string AndroidMTEProps + + Hwasan_enabled *bool } type ToolchainFlagsProps struct { @@ -64,6 +67,7 @@ type BackendConfiguration interface { stripable GetBuildWrapperAndDeps(blueprint.ModuleContext) (string, []string) GetMteProps(blueprint.ModuleContext) AndroidMTEProps + IsHwAsanEnabled() bool } // This interface provides configuration features @@ -71,11 +75,9 @@ type BackendConfigurationProvider interface { GetBackendConfiguration(blueprint.ModuleContext) BackendConfiguration } -func GetModuleBackendConfiguration(ctx blueprint.ModuleContext, m interface{}) BackendConfiguration { - if capable, ok := m.(BackendConfigurationProvider); ok { - if bc := capable.GetBackendConfiguration(ctx); bc != nil { - return bc - } +func GetModuleBackendConfiguration(ctx blueprint.ModuleContext, m BackendConfigurationProvider) BackendConfiguration { + if bc := m.GetBackendConfiguration(ctx); bc != nil { + return bc } return nil } @@ -169,6 +171,10 @@ func (m *ModuleToolchain) GetBuildWrapperAndDeps(ctx blueprint.ModuleContext) (s return "", []string{} } +func (m *ModuleToolchain) IsHwAsanEnabled() bool { + return proptools.Bool(m.Properties.Hwasan_enabled) +} + func (m *ModuleToolchain) FlagsOut() flag.Flags { lut := flag.FlagParserTable{ { diff --git a/gendiffer/tests/toolchain/hwasan/app/build.bp b/gendiffer/tests/toolchain/hwasan/app/build.bp index c814daa9..84d1a225 100644 --- a/gendiffer/tests/toolchain/hwasan/app/build.bp +++ b/gendiffer/tests/toolchain/hwasan/app/build.bp @@ -1,6 +1,6 @@ bob_toolchain { name: "toolchain", - // hwasan_enabled: true, not supported yet + hwasan_enabled: true, } bob_library { diff --git a/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out b/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out index 68905716..9edc8623 100644 --- a/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out +++ b/gendiffer/tests/toolchain/hwasan/out/android/Android.bp.out @@ -11,6 +11,9 @@ cc_binary { name: "bob_executable", srcs: ["main.c"], compile_multilib: "both", + sanitize: { + hwaddress: true, + }, } cc_library { @@ -19,6 +22,9 @@ cc_library { device_supported: true, srcs: ["main.c"], compile_multilib: "both", + sanitize: { + hwaddress: true, + }, } cc_test { @@ -27,5 +33,8 @@ cc_test { include_build_directory: false, auto_gen_config: false, gtest: false, + sanitize: { + hwaddress: true, + }, }