Merge "Add test that shared libs don't propagate ubsan rt"
This commit is contained in:
@@ -572,7 +572,7 @@ func TestUbsan(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cc_binary {
|
cc_binary {
|
||||||
name: "bin_depends_ubsan",
|
name: "bin_depends_ubsan_static",
|
||||||
host_supported: true,
|
host_supported: true,
|
||||||
shared_libs: [
|
shared_libs: [
|
||||||
"libshared",
|
"libshared",
|
||||||
@@ -584,6 +584,14 @@ func TestUbsan(t *testing.T) {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cc_binary {
|
||||||
|
name: "bin_depends_ubsan_shared",
|
||||||
|
host_supported: true,
|
||||||
|
shared_libs: [
|
||||||
|
"libsharedubsan",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
cc_binary {
|
cc_binary {
|
||||||
name: "bin_no_ubsan",
|
name: "bin_no_ubsan",
|
||||||
host_supported: true,
|
host_supported: true,
|
||||||
@@ -607,6 +615,14 @@ func TestUbsan(t *testing.T) {
|
|||||||
host_supported: true,
|
host_supported: true,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cc_library_shared {
|
||||||
|
name: "libsharedubsan",
|
||||||
|
host_supported: true,
|
||||||
|
sanitize: {
|
||||||
|
undefined: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cc_library_static {
|
cc_library_static {
|
||||||
name: "libubsan",
|
name: "libubsan",
|
||||||
host_supported: true,
|
host_supported: true,
|
||||||
@@ -632,22 +648,33 @@ func TestUbsan(t *testing.T) {
|
|||||||
|
|
||||||
check := func(t *testing.T, result *android.TestResult, variant string) {
|
check := func(t *testing.T, result *android.TestResult, variant string) {
|
||||||
staticVariant := variant + "_static"
|
staticVariant := variant + "_static"
|
||||||
|
sharedVariant := variant + "_shared"
|
||||||
|
|
||||||
minimalRuntime := result.ModuleForTests("libclang_rt.ubsan_minimal", staticVariant)
|
minimalRuntime := result.ModuleForTests("libclang_rt.ubsan_minimal", staticVariant)
|
||||||
|
|
||||||
// The binaries, one with ubsan and one without
|
// The binaries, one with ubsan and one without
|
||||||
binWithUbsan := result.ModuleForTests("bin_with_ubsan", variant)
|
binWithUbsan := result.ModuleForTests("bin_with_ubsan", variant)
|
||||||
binDependsUbsan := result.ModuleForTests("bin_depends_ubsan", variant)
|
binDependsUbsan := result.ModuleForTests("bin_depends_ubsan_static", variant)
|
||||||
|
libSharedUbsan := result.ModuleForTests("libsharedubsan", sharedVariant)
|
||||||
|
binDependsUbsanShared := result.ModuleForTests("bin_depends_ubsan_shared", variant)
|
||||||
binNoUbsan := result.ModuleForTests("bin_no_ubsan", variant)
|
binNoUbsan := result.ModuleForTests("bin_no_ubsan", variant)
|
||||||
|
|
||||||
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_with_ubsan static libs",
|
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_with_ubsan static libs",
|
||||||
strings.Split(binWithUbsan.Rule("ld").Args["libFlags"], " "),
|
strings.Split(binWithUbsan.Rule("ld").Args["libFlags"], " "),
|
||||||
minimalRuntime.OutputFiles(t, "")[0].String())
|
minimalRuntime.OutputFiles(t, "")[0].String())
|
||||||
|
|
||||||
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_depends_ubsan static libs",
|
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in bin_depends_ubsan_static static libs",
|
||||||
strings.Split(binDependsUbsan.Rule("ld").Args["libFlags"], " "),
|
strings.Split(binDependsUbsan.Rule("ld").Args["libFlags"], " "),
|
||||||
minimalRuntime.OutputFiles(t, "")[0].String())
|
minimalRuntime.OutputFiles(t, "")[0].String())
|
||||||
|
|
||||||
|
android.AssertStringListContains(t, "missing libclang_rt.ubsan_minimal in libsharedubsan static libs",
|
||||||
|
strings.Split(libSharedUbsan.Rule("ld").Args["libFlags"], " "),
|
||||||
|
minimalRuntime.OutputFiles(t, "")[0].String())
|
||||||
|
|
||||||
|
android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_depends_ubsan_shared static libs",
|
||||||
|
strings.Split(binDependsUbsanShared.Rule("ld").Args["libFlags"], " "),
|
||||||
|
minimalRuntime.OutputFiles(t, "")[0].String())
|
||||||
|
|
||||||
android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_no_ubsan static libs",
|
android.AssertStringListDoesNotContain(t, "unexpected libclang_rt.ubsan_minimal in bin_no_ubsan static libs",
|
||||||
strings.Split(binNoUbsan.Rule("ld").Args["libFlags"], " "),
|
strings.Split(binNoUbsan.Rule("ld").Args["libFlags"], " "),
|
||||||
minimalRuntime.OutputFiles(t, "")[0].String())
|
minimalRuntime.OutputFiles(t, "")[0].String())
|
||||||
@@ -656,10 +683,18 @@ func TestUbsan(t *testing.T) {
|
|||||||
strings.Split(binWithUbsan.Rule("ld").Args["ldFlags"], " "),
|
strings.Split(binWithUbsan.Rule("ld").Args["ldFlags"], " "),
|
||||||
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
||||||
|
|
||||||
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan static libs",
|
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_static static libs",
|
||||||
strings.Split(binDependsUbsan.Rule("ld").Args["ldFlags"], " "),
|
strings.Split(binDependsUbsan.Rule("ld").Args["ldFlags"], " "),
|
||||||
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
||||||
|
|
||||||
|
android.AssertStringListContains(t, "missing -Wl,--exclude-libs for minimal runtime in libsharedubsan static libs",
|
||||||
|
strings.Split(libSharedUbsan.Rule("ld").Args["ldFlags"], " "),
|
||||||
|
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
||||||
|
|
||||||
|
android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_depends_ubsan_shared static libs",
|
||||||
|
strings.Split(binDependsUbsanShared.Rule("ld").Args["ldFlags"], " "),
|
||||||
|
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
||||||
|
|
||||||
android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_no_ubsan static libs",
|
android.AssertStringListDoesNotContain(t, "unexpected -Wl,--exclude-libs for minimal runtime in bin_no_ubsan static libs",
|
||||||
strings.Split(binNoUbsan.Rule("ld").Args["ldFlags"], " "),
|
strings.Split(binNoUbsan.Rule("ld").Args["ldFlags"], " "),
|
||||||
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
"-Wl,--exclude-libs="+minimalRuntime.OutputFiles(t, "")[0].Base())
|
||||||
|
Reference in New Issue
Block a user