aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2018-08-29 11:21:52 +0200
committerMichael Bestas <mkbestas@lineageos.org>2019-12-11 19:06:38 +0200
commit7b6b6c9cb7e195cd0c67c865b885491cbad1e09c (patch)
treee2f3b07330aa6567d4bf37498888a83a073d3793
parent127d86d400a759ce29fb94a2a7af2a069fc8b80c (diff)
downloadandroid_bionic-7b6b6c9cb7e195cd0c67c865b885491cbad1e09c.tar.gz
android_bionic-7b6b6c9cb7e195cd0c67c865b885491cbad1e09c.tar.bz2
android_bionic-7b6b6c9cb7e195cd0c67c865b885491cbad1e09c.zip
Implement per-process target SDK version override.
Change-Id: I65bbdbe96541d8aacdd4de125cdb9c1435129413
-rw-r--r--linker/Android.bp3
-rw-r--r--linker/linker.cpp13
2 files changed, 15 insertions, 1 deletions
diff --git a/linker/Android.bp b/linker/Android.bp
index d1752317f..d0ff9856e 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -199,6 +199,9 @@ cc_defaults {
cppflags: ["-DUSE_LD_CONFIG_FILE"],
},
lineage: {
+ target_process_sdk_version_override: {
+ cppflags: ["-DSDK_VERSION_OVERRIDES=\"%s\""],
+ },
target_shim_libs: {
cppflags: ["-DLD_SHIM_LIBS=\"%s\""],
},
diff --git a/linker/linker.cpp b/linker/linker.cpp
index bcebb4f8d..6941fde20 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -4295,7 +4295,18 @@ std::vector<android_namespace_t*> init_default_namespaces(const char* executable
// somain and ld_preloads are added to these namespaces after LD_PRELOAD libs are linked
}
- set_application_target_sdk_version(config->target_sdk_version());
+ uint32_t target_sdk = config->target_sdk_version();
+#ifdef SDK_VERSION_OVERRIDES
+ for (const auto& entry : android::base::Split(SDK_VERSION_OVERRIDES, " ")) {
+ auto splitted = android::base::Split(entry, "=");
+ if (splitted.size() == 2 && splitted[0] == executable_path) {
+ target_sdk = static_cast<uint32_t>(std::stoul(splitted[1]));
+ break;
+ }
+ }
+ DEBUG("Target SDK for %s = %d", executable_path, target_sdk);
+#endif
+ set_application_target_sdk_version(target_sdk);
std::vector<android_namespace_t*> created_namespaces;
created_namespaces.reserve(namespaces.size());