build linker and linker64 on 64-bit architectures
Change-Id: I400bbaf5a779fc427de4c3d86c66548b0179b10d
diff --git a/linker/linker_executable.mk b/linker/linker_executable.mk
new file mode 100644
index 0000000..4902a0c
--- /dev/null
+++ b/linker/linker_executable.mk
@@ -0,0 +1,26 @@
+
+#
+# Instead of including $(BUILD_EXECUTABLE), we execute the steps to create an executable by
+# hand, as we want to insert an extra objcopy step that is not supported by the build
+# system, and is probably specific the linker only, so there's no need to modify the build
+# system for the purpose.
+#
+
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
+
+include $(BUILD_SYSTEM)/dynamic_binary.mk
+
+# See build/core/executable_internal.mk
+$(linked_module): PRIVATE_TARGET_GLOBAL_LD_DIRS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LD_DIRS)
+$(linked_module): PRIVATE_TARGET_GLOBAL_LDFLAGS := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS)
+$(linked_module): PRIVATE_TARGET_FDO_LIB := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_LIB)
+$(linked_module): PRIVATE_TARGET_LIBGCC := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_LIBGCC)
+$(linked_module): PRIVATE_TARGET_CRTBEGIN_DYNAMIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_DYNAMIC_O)
+$(linked_module): PRIVATE_TARGET_CRTBEGIN_STATIC_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTBEGIN_STATIC_O)
+$(linked_module): PRIVATE_TARGET_CRTEND_O := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
+$(linked_module): PRIVATE_TARGET_OBJCOPY := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_OBJCOPY)
+$(linked_module): $(TARGET_CRTBEGIN_STATIC_O) $(all_objects) $(all_libraries) $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_CRTEND_O)
+ $(transform-o-to-static-executable)
+ @echo "target PrefixSymbols: $(PRIVATE_MODULE) ($@)"
+ $(hide) $(PRIVATE_TARGET_OBJCOPY) --prefix-symbols=__dl_ $@