summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/Android.bp2
-rw-r--r--build/art.go31
-rw-r--r--libnativeloader/Android.bp2
-rw-r--r--libnativeloader/native_loader_test.cpp28
4 files changed, 44 insertions, 19 deletions
diff --git a/build/Android.bp b/build/Android.bp
index 8d8b7e9629..9305bc6fff 100644
--- a/build/Android.bp
+++ b/build/Android.bp
@@ -137,8 +137,6 @@ art_global_defaults {
target: {
android: {
cflags: [
- "-DART_TARGET",
-
// To use oprofile_android --callgraph, uncomment this and recompile with
// mmma -j art
// "-fno-omit-frame-pointer",
diff --git a/build/art.go b/build/art.go
index 6e9e9fda6e..4d491dcb75 100644
--- a/build/art.go
+++ b/build/art.go
@@ -132,11 +132,6 @@ func deviceFlags(ctx android.LoadHookContext) []string {
)
cflags = append(cflags, "-DART_BASE_ADDRESS="+ctx.Config().LibartImgDeviceBaseAddress())
- if ctx.Config().IsEnvTrue("ART_TARGET_LINUX") {
- cflags = append(cflags, "-DART_TARGET_LINUX")
- } else {
- cflags = append(cflags, "-DART_TARGET_ANDROID")
- }
minDelta := ctx.Config().GetenvWithDefault("LIBART_IMG_TARGET_MIN_BASE_ADDRESS_DELTA", "-0x1000000")
maxDelta := ctx.Config().GetenvWithDefault("LIBART_IMG_TARGET_MAX_BASE_ADDRESS_DELTA", "0x1000000")
cflags = append(cflags, "-DART_BASE_ADDRESS_MIN_DELTA="+minDelta)
@@ -207,6 +202,26 @@ func globalDefaults(ctx android.LoadHookContext) {
ctx.AppendProperties(p)
}
+// Hook that adds flags that are implicit for all cc_art_* modules.
+func addImplicitFlags(ctx android.LoadHookContext) {
+ type props struct {
+ Target struct {
+ Android struct {
+ Cflags []string
+ }
+ }
+ }
+
+ p := &props{}
+ if ctx.Config().IsEnvTrue("ART_TARGET_LINUX") {
+ p.Target.Android.Cflags = []string{"-DART_TARGET", "-DART_TARGET_LINUX"}
+ } else {
+ p.Target.Android.Cflags = []string{"-DART_TARGET", "-DART_TARGET_ANDROID"}
+ }
+
+ ctx.AppendProperties(p)
+}
+
func debugDefaults(ctx android.LoadHookContext) {
type props struct {
Cflags []string
@@ -381,6 +396,7 @@ func artHostTestApexBundleFactory() android.Module {
func artGlobalDefaultsFactory() android.Module {
module := artDefaultsFactory()
+ android.AddLoadHook(module, addImplicitFlags)
android.AddLoadHook(module, globalDefaults)
return module
@@ -422,6 +438,7 @@ func artLibrary() android.Module {
installCodegenCustomizer(module, staticAndSharedLibrary)
+ android.AddLoadHook(module, addImplicitFlags)
android.AddInstallHook(module, addTestcasesFile)
return module
}
@@ -431,12 +448,14 @@ func artStaticLibrary() android.Module {
installCodegenCustomizer(module, staticLibrary)
+ android.AddLoadHook(module, addImplicitFlags)
return module
}
func artBinary() android.Module {
module := cc.BinaryFactory()
+ android.AddLoadHook(module, addImplicitFlags)
android.AddLoadHook(module, customLinker)
android.AddLoadHook(module, prefer32Bit)
android.AddInstallHook(module, addTestcasesFile)
@@ -448,6 +467,7 @@ func artTest() android.Module {
installCodegenCustomizer(module, binary)
+ android.AddLoadHook(module, addImplicitFlags)
android.AddLoadHook(module, customLinker)
android.AddLoadHook(module, prefer32Bit)
android.AddInstallHook(module, testInstall)
@@ -459,6 +479,7 @@ func artTestLibrary() android.Module {
installCodegenCustomizer(module, staticAndSharedLibrary)
+ android.AddLoadHook(module, addImplicitFlags)
android.AddLoadHook(module, prefer32Bit)
android.AddInstallHook(module, testInstall)
return module
diff --git a/libnativeloader/Android.bp b/libnativeloader/Android.bp
index 47735febcc..6a79169858 100644
--- a/libnativeloader/Android.bp
+++ b/libnativeloader/Android.bp
@@ -103,7 +103,7 @@ cc_library_headers {
export_header_lib_headers: ["jni_headers"],
}
-cc_test {
+art_cc_test {
name: "libnativeloader_test",
srcs: [
"native_loader_test.cpp",
diff --git a/libnativeloader/native_loader_test.cpp b/libnativeloader/native_loader_test.cpp
index e64e1a518c..81109b6008 100644
--- a/libnativeloader/native_loader_test.cpp
+++ b/libnativeloader/native_loader_test.cpp
@@ -20,6 +20,7 @@
#include <memory>
#include <unordered_map>
+#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
@@ -95,14 +96,17 @@ class Platform {
// These represents built-in namespaces created by the linker according to ld.config.txt
static std::unordered_map<std::string, Platform::mock_namespace_handle> namespaces = {
- {"system", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("system"))},
- {"default", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("default"))},
- {"com_android_i18n", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("com_android_i18n"))},
- {"sphal", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("sphal"))},
- {"vndk", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("vndk"))},
- {"vndk_product", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("vndk_product"))},
- {"com_android_neuralnetworks", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("com_android_neuralnetworks"))},
- {"com_android_os_statsd", TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("com_android_os_statsd"))},
+#define NAMESPACE_ENTRY(ns) {ns, TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE(ns))}
+ NAMESPACE_ENTRY("com_android_i18n"),
+ NAMESPACE_ENTRY("com_android_neuralnetworks"),
+ NAMESPACE_ENTRY("com_android_os_statsd"),
+ NAMESPACE_ENTRY("com_android_art"),
+ NAMESPACE_ENTRY("default"),
+ NAMESPACE_ENTRY("sphal"),
+ NAMESPACE_ENTRY("system"),
+ NAMESPACE_ENTRY("vndk"),
+ NAMESPACE_ENTRY("vndk_product"),
+#undef NAMESPACE_ENTRY
};
// The actual gmock object
@@ -116,7 +120,9 @@ class MockPlatform : public Platform {
if (namespaces.find(name) != namespaces.end()) {
return namespaces[name];
}
- return TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE("(namespace not found"));
+ std::string msg = android::base::StringPrintf("(namespace %s not found)", name);
+ // The strdup'ed string will leak, but the test is already failing if we get here.
+ return TO_MOCK_NAMESPACE(TO_ANDROID_NAMESPACE(strdup(msg.c_str())));
}));
}
@@ -438,7 +444,7 @@ class NativeLoaderTest_Create : public NativeLoaderTest {
jstring err = CreateClassLoaderNamespace(
env(), target_sdk_version, env()->NewStringUTF(class_loader.c_str()), is_shared,
env()->NewStringUTF(dex_path.c_str()), env()->NewStringUTF(library_path.c_str()),
- env()->NewStringUTF(permitted_path.c_str()));
+ env()->NewStringUTF(permitted_path.c_str()), /*uses_library_list=*/ nullptr);
// no error
EXPECT_EQ(err, nullptr) << "Error is: " << std::string(ScopedUtfChars(env(), err).c_str());
@@ -579,7 +585,7 @@ TEST_P(NativeLoaderTest_Create, TwoApks) {
env(), second_app_target_sdk_version, env()->NewStringUTF(second_app_class_loader.c_str()),
second_app_is_shared, env()->NewStringUTF(second_app_dex_path.c_str()),
env()->NewStringUTF(second_app_library_path.c_str()),
- env()->NewStringUTF(second_app_permitted_path.c_str()));
+ env()->NewStringUTF(second_app_permitted_path.c_str()), /*uses_library_list=*/ nullptr);
// success
EXPECT_EQ(err, nullptr) << "Error is: " << std::string(ScopedUtfChars(env(), err).c_str());