From efbdeeea6ac6ac7e6a33ba9034d0d26a2da2c92e Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Wed, 29 Aug 2018 11:21:52 +0200 Subject: [PATCH 1/6] Implement per-process target SDK version override. Change-Id: I65bbdbe96541d8aacdd4de125cdb9c1435129413 This is only partial cherry-pick. Value won't be set via Android.bp --- linker/linker.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/linker/linker.cpp b/linker/linker.cpp index b59df7302..ccdb131ca 100644 --- a/linker/linker.cpp +++ b/linker/linker.cpp @@ -4217,7 +4217,18 @@ std::vector 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(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 created_namespaces; created_namespaces.reserve(namespaces.size()); -- 2.17.1