diff options
| -rw-r--r-- | cmds/installd/Android.bp | 41 | ||||
| -rw-r--r-- | cmds/installd/Android.mk | 38 | ||||
| -rw-r--r-- | cmds/installd/art_helper/Android.bp | 12 | ||||
| -rw-r--r-- | cmds/installd/art_helper/art_image_values.cpp | 37 | ||||
| -rw-r--r-- | cmds/installd/art_helper/art_image_values.h | 34 | ||||
| -rw-r--r-- | cmds/installd/otapreopt.cpp | 13 |
6 files changed, 127 insertions, 48 deletions
diff --git a/cmds/installd/Android.bp b/cmds/installd/Android.bp index 94c3102b27..9d0d8ba8b7 100644 --- a/cmds/installd/Android.bp +++ b/cmds/installd/Android.bp @@ -108,10 +108,8 @@ cc_library_static { "-Wall", "-Werror" ], - clang: true, - srcs: [ - "otapreopt_parameters.cpp"], + srcs: ["otapreopt_parameters.cpp"], export_include_dirs: ["."], @@ -123,4 +121,39 @@ cc_library_static { ], } -subdirs = ["tests"] +// +// OTA Executable +// + +cc_binary { + name: "otapreopt", + cflags: [ + "-Wall", + "-Werror" + ], + + srcs: [ + "dexopt.cpp", + "globals.cpp", + "otapreopt.cpp", + "utils.cpp", + ], + + header_libs: ["dex2oat_headers"], + + static_libs: [ + "libartimagevalues", + "libdiskusage", + "libotapreoptparameters", + ], + + shared_libs: [ + "libbase", + "libcrypto", + "libcutils", + "liblog", + "liblogwrap", + "libselinux", + "libutils", + ], +} diff --git a/cmds/installd/Android.mk b/cmds/installd/Android.mk index a4f95da939..30de0b3ae6 100644 --- a/cmds/installd/Android.mk +++ b/cmds/installd/Android.mk @@ -1,43 +1,5 @@ LOCAL_PATH := $(call my-dir) -# -# OTA Executable -# - -include $(CLEAR_VARS) -LOCAL_MODULE := otapreopt -LOCAL_CFLAGS := -Wall -Werror - -# Base & ASLR boundaries for boot image creation. -ifndef LIBART_IMG_HOST_MIN_BASE_ADDRESS_DELTA - LOCAL_LIBART_IMG_HOST_MIN_BASE_ADDRESS_DELTA := -0x1000000 -else - LOCAL_LIBART_IMG_HOST_MIN_BASE_ADDRESS_DELTA := $(LIBART_IMG_HOST_MIN_BASE_ADDRESS_DELTA) -endif -ifndef LIBART_IMG_HOST_MAX_BASE_ADDRESS_DELTA - LOCAL_LIBART_IMG_HOST_MAX_BASE_ADDRESS_DELTA := 0x1000000 -else - LOCAL_LIBART_IMG_HOST_MAX_BASE_ADDRESS_DELTA := $(LIBART_IMG_HOST_MAX_BASE_ADDRESS_DELTA) -endif -LOCAL_CFLAGS += -DART_BASE_ADDRESS=$(LIBART_IMG_HOST_BASE_ADDRESS) -LOCAL_CFLAGS += -DART_BASE_ADDRESS_MIN_DELTA=$(LOCAL_LIBART_IMG_HOST_MIN_BASE_ADDRESS_DELTA) -LOCAL_CFLAGS += -DART_BASE_ADDRESS_MAX_DELTA=$(LOCAL_LIBART_IMG_HOST_MAX_BASE_ADDRESS_DELTA) - -LOCAL_SRC_FILES := otapreopt.cpp otapreopt_parameters.cpp globals.cpp utils.cpp dexopt.cpp -LOCAL_HEADER_LIBRARIES := dex2oat_headers -LOCAL_SHARED_LIBRARIES := \ - libbase \ - libcrypto \ - libcutils \ - liblog \ - liblogwrap \ - libselinux \ - libutils \ - -LOCAL_STATIC_LIBRARIES := libdiskusage -LOCAL_CLANG := true -include $(BUILD_EXECUTABLE) - # OTA slot script include $(CLEAR_VARS) diff --git a/cmds/installd/art_helper/Android.bp b/cmds/installd/art_helper/Android.bp new file mode 100644 index 0000000000..c47dd722f9 --- /dev/null +++ b/cmds/installd/art_helper/Android.bp @@ -0,0 +1,12 @@ +// Inherit image values. +art_global_defaults { + name: "libartimagevalues_defaults", +} + +cc_library_static { + name: "libartimagevalues", + defaults: ["libartimagevalues_defaults"], + srcs: ["art_image_values.cpp"], + export_include_dirs: ["."], + cflags: ["-Wconversion"], +} diff --git a/cmds/installd/art_helper/art_image_values.cpp b/cmds/installd/art_helper/art_image_values.cpp new file mode 100644 index 0000000000..a139049d9f --- /dev/null +++ b/cmds/installd/art_helper/art_image_values.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "art_image_values.h" + +namespace android { +namespace installd { +namespace art { + +uint32_t GetImageBaseAddress() { + return ART_BASE_ADDRESS; +} +int32_t GetImageMinBaseAddressDelta() { + return ART_BASE_ADDRESS_MIN_DELTA; +} +int32_t GetImageMaxBaseAddressDelta() { + return ART_BASE_ADDRESS_MAX_DELTA; +} + +static_assert(ART_BASE_ADDRESS_MIN_DELTA < ART_BASE_ADDRESS_MAX_DELTA, "Inconsistent setup"); + +} // namespace art +} // namespace installd +} // namespace android diff --git a/cmds/installd/art_helper/art_image_values.h b/cmds/installd/art_helper/art_image_values.h new file mode 100644 index 0000000000..20c44c953f --- /dev/null +++ b/cmds/installd/art_helper/art_image_values.h @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef FRAMEWORKS_NATIVE_CMDS_INSTALLD_ART_HELPER_ART_IMAGE_VALUES_H +#define FRAMEWORKS_NATIVE_CMDS_INSTALLD_ART_HELPER_ART_IMAGE_VALUES_H + +#include <cstdint> + +namespace android { +namespace installd { +namespace art { + +uint32_t GetImageBaseAddress(); +int32_t GetImageMinBaseAddressDelta(); +int32_t GetImageMaxBaseAddressDelta(); + +} // namespace art +} // namespace installd +} // namespace android + +#endif // FRAMEWORKS_NATIVE_CMDS_INSTALLD_ART_HELPER_ART_IMAGE_VALUES_H diff --git a/cmds/installd/otapreopt.cpp b/cmds/installd/otapreopt.cpp index 7291ef3afa..73098f80e4 100644 --- a/cmds/installd/otapreopt.cpp +++ b/cmds/installd/otapreopt.cpp @@ -32,6 +32,7 @@ #include <android-base/macros.h> #include <android-base/stringprintf.h> #include <android-base/strings.h> +#include <art_image_values.h> #include <cutils/fs.h> #include <cutils/properties.h> #include <dex2oat_return_codes.h> @@ -441,8 +442,8 @@ private: cmd.push_back(StringPrintf("--instruction-set=%s", isa)); - int32_t base_offset = ChooseRelocationOffsetDelta(ART_BASE_ADDRESS_MIN_DELTA, - ART_BASE_ADDRESS_MAX_DELTA); + int32_t base_offset = ChooseRelocationOffsetDelta(art::GetImageMinBaseAddressDelta(), + art::GetImageMaxBaseAddressDelta()); cmd.push_back(StringPrintf("--base-offset-delta=%d", base_offset)); std::string error_msg; @@ -466,9 +467,9 @@ private: } cmd.push_back(StringPrintf("--oat-file=%s", oat_path.c_str())); - int32_t base_offset = ChooseRelocationOffsetDelta(ART_BASE_ADDRESS_MIN_DELTA, - ART_BASE_ADDRESS_MAX_DELTA); - cmd.push_back(StringPrintf("--base=0x%x", ART_BASE_ADDRESS + base_offset)); + int32_t base_offset = ChooseRelocationOffsetDelta(art::GetImageMinBaseAddressDelta(), + art::GetImageMaxBaseAddressDelta()); + cmd.push_back(StringPrintf("--base=0x%x", art::GetImageBaseAddress() + base_offset)); cmd.push_back(StringPrintf("--instruction-set=%s", isa)); @@ -610,7 +611,7 @@ private: // If the dexopt failed, we may have a stale boot image from a previous OTA run. // Then regenerate and retry. if (WEXITSTATUS(dexopt_result) == - static_cast<int>(art::dex2oat::ReturnCode::kCreateRuntime)) { + static_cast<int>(::art::dex2oat::ReturnCode::kCreateRuntime)) { if (!PrepareBootImage(/* force */ true)) { LOG(ERROR) << "Forced boot image creating failed. Original error return was " << dexopt_result; |