diff options
| -rw-r--r-- | compiler/Android.mk | 28 | ||||
| -rw-r--r-- | compiler/elf_writer_mclinker.cc | 6 | ||||
| -rw-r--r-- | compiler/elf_writer_mclinker.h | 2 | ||||
| -rw-r--r-- | runtime/Android.mk | 2 |
4 files changed, 35 insertions, 3 deletions
diff --git a/compiler/Android.mk b/compiler/Android.mk index 4340929e9b..25dfb0a192 100644 --- a/compiler/Android.mk +++ b/compiler/Android.mk @@ -196,6 +196,34 @@ $$(ENUM_OPERATOR_OUT_GEN): $$(GENERATED_SRC_DIR)/%_operator_out.cc : $(LOCAL_PAT LOCAL_SHARED_LIBRARIES += libbcc libbcinfo libLLVM ifeq ($(ART_USE_PORTABLE_COMPILER),true) LOCAL_CFLAGS += -DART_USE_PORTABLE_COMPILER=1 + ifeq ($$(art_target_or_host),target) + ifeq ($(TARGET_ARCH),arm) + LOCAL_STATIC_LIBRARIES += libmcldARMInfo libmcldARMTarget + else # TARGET_ARCH != arm + ifeq ($(TARGET_ARCH),x86) + LOCAL_STATIC_LIBRARIES += libmcldX86Info libmcldX86Target + else # TARGET_ARCH != x86 + ifeq ($(TARGET_ARCH),x86_64) + LOCAL_STATIC_LIBRARIES += libmcldX86Info libmcldX86Target + else # TARGET_ARCH != x86_64 + ifeq ($(TARGET_ARCH),mips) + LOCAL_STATIC_LIBRARIES += libmcldMipsInfo libmcldMipsTarget + else # TARGET_ARCH != mips + ifeq ($(TARGET_ARCH),aarch64) + $$(info TODOAArch64: $$(LOCAL_PATH)/Android.mk Add AArch64 specific MCLinker libraries) + else # TARGET_ARCH != aarch64 + $$(error unsupported TARGET_ARCH=$(TARGET_ARCH)) + endif # TARGET_ARCH != aarch64 + endif # TARGET_ARCH != mips + endif # TARGET_ARCH != x86_64 + endif # TARGET_ARCH != x86 + endif # TARGET_ARCH != arm + else # host + LOCAL_STATIC_LIBRARIES += libmcldARMInfo libmcldARMTarget + LOCAL_STATIC_LIBRARIES += libmcldX86Info libmcldX86Target + LOCAL_STATIC_LIBRARIES += libmcldMipsInfo libmcldMipsTarget + endif + LOCAL_STATIC_LIBRARIES += libmcldCore libmcldObject libmcldADT libmcldFragment libmcldTarget libmcldCodeGen libmcldLDVariant libmcldMC libmcldSupport libmcldLD endif LOCAL_C_INCLUDES += $(ART_C_INCLUDES) art/runtime diff --git a/compiler/elf_writer_mclinker.cc b/compiler/elf_writer_mclinker.cc index f3fef23247..cdfb88149c 100644 --- a/compiler/elf_writer_mclinker.cc +++ b/compiler/elf_writer_mclinker.cc @@ -22,6 +22,7 @@ #include <mcld/IRBuilder.h> #include <mcld/Linker.h> #include <mcld/LinkerConfig.h> +#include <mcld/LinkerScript.h> #include <mcld/MC/ZOption.h> #include <mcld/Module.h> #include <mcld/Support/Path.h> @@ -142,13 +143,14 @@ void ElfWriterMclinker::Init() { } // Based on alone::Linker::config - module_.reset(new mcld::Module(linker_config_->options().soname())); + linker_script_.reset(new mcld::LinkerScript()); + module_.reset(new mcld::Module(linker_config_->options().soname(), *linker_script_.get())); CHECK(module_.get() != NULL); ir_builder_.reset(new mcld::IRBuilder(*module_.get(), *linker_config_.get())); CHECK(ir_builder_.get() != NULL); linker_.reset(new mcld::Linker()); CHECK(linker_.get() != NULL); - linker_->config(*linker_config_.get()); + linker_->emulate(*linker_script_.get(), *linker_config_.get()); } void ElfWriterMclinker::AddOatInput(std::vector<uint8_t>& oat_contents) { diff --git a/compiler/elf_writer_mclinker.h b/compiler/elf_writer_mclinker.h index a0cd7f0bb6..8ee7231f79 100644 --- a/compiler/elf_writer_mclinker.h +++ b/compiler/elf_writer_mclinker.h @@ -29,6 +29,7 @@ class LDSection; class LDSymbol; class Linker; class LinkerConfig; +class LinkerScript; class Module; } // namespace mcld @@ -74,6 +75,7 @@ class ElfWriterMclinker : public ElfWriter { // Setup by Init() UniquePtr<mcld::LinkerConfig> linker_config_; + UniquePtr<mcld::LinkerScript> linker_script_; UniquePtr<mcld::Module> module_; UniquePtr<mcld::IRBuilder> ir_builder_; UniquePtr<mcld::Linker> linker_; diff --git a/runtime/Android.mk b/runtime/Android.mk index 353f160037..237e9300bd 100644 --- a/runtime/Android.mk +++ b/runtime/Android.mk @@ -236,8 +236,8 @@ else $(error unsupported TARGET_ARCH=$(TARGET_ARCH)) endif # TARGET_ARCH != aarch64 endif # TARGET_ARCH != mips -endif # TARGET_ARCH != x86 endif # TARGET_ARCH != x86_64 +endif # TARGET_ARCH != x86 endif # TARGET_ARCH != arm |