diff --git a/clang/include/clang/Config/config.h.cmake b/clang/include/clang/Config/config.h.cmake index a240862c528953c466347e8970145f50edfcabf1..25dfe2bb80da3d8d3186b179a69d6efc39431a3f 100644 --- a/clang/include/clang/Config/config.h.cmake +++ b/clang/include/clang/Config/config.h.cmake @@ -38,6 +38,9 @@ /* Default architecture for SystemZ. */ #define CLANG_SYSTEMZ_DEFAULT_ARCH "${CLANG_SYSTEMZ_DEFAULT_ARCH}" +/* Default Andoird API level to use with HOS triple */ +#define CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE ${CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE} + /* Multilib suffix for libdir. */ #define CLANG_LIBDIR_SUFFIX "${CLANG_LIBDIR_SUFFIX}" diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index 295e68426752f2b973097988aaced1a5dae22011..cf642a86b81a5be80f1186744dec34ccfba0296d 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -14,6 +14,7 @@ #include "Targets.h" #include "llvm/MC/MCSectionMachO.h" +#include "clang/Config/config.h" namespace clang { namespace targets { @@ -384,6 +385,12 @@ protected: Triple.getEnvironmentVersion(Maj, Min, Rev); this->PlatformName = "android"; this->PlatformMinVersion = VersionTuple(Maj, Min, Rev); + if (Triple.isHOS()) { + Builder.defineMacro("__HOS__", "1"); +#ifdef CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE + Maj = Maj ? Maj : CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE; +#endif // CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE + } if (Maj) { Builder.defineMacro("__ANDROID_MIN_SDK_VERSION__", Twine(Maj)); // This historical but ambiguous name for the minSdkVersion macro. Keep diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 71e3df95cb1f77e7183c24311daa624bd317a369..af6d274783f006e01103f956718f10874b3553ef 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -5119,7 +5119,7 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, Args); else if (Target.getArch() == llvm::Triple::ve) TC = std::make_unique(*this, Target, Args); - else if (Target.isOHOSFamily()) + else if (Target.isOHOSFamily() || Target.isHOS()) TC = std::make_unique(*this, Target, Args); else TC = std::make_unique(*this, Target, Args); diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index ce90569494c154f1bef28759d1cd80ecf432a443..e637226ad86854bde9f838d0e554cec81646a35a 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1403,7 +1403,7 @@ static LibGccType getLibGccType(const Driver &D, const ArgList &Args) { static void AddUnwindLibrary(const ToolChain &TC, const Driver &D, ArgStringList &CmdArgs, const ArgList &Args) { ToolChain::UnwindLibType UNW = TC.GetUnwindLibType(Args); - if (TC.getTriple().isOHOSFamily() && UNW != ToolChain::UNW_None) { + if ((TC.getTriple().isHOS() || TC.getTriple().isOHOSFamily()) && UNW != ToolChain::UNW_None) { CmdArgs.push_back("-l:libunwind.a"); return; } @@ -1476,6 +1476,8 @@ void tools::AddRunTimeLibs(const ToolChain &TC, const Driver &D, case ToolChain::RLT_CompilerRT: CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins")); AddUnwindLibrary(TC, D, CmdArgs, Args); + if (TC.getTriple().isHOS()) + CmdArgs.push_back("-lm"); break; case ToolChain::RLT_Libgcc: // Make sure libgcc is not used under MSVC environment by default diff --git a/clang/lib/Driver/ToolChains/OHOS.cpp b/clang/lib/Driver/ToolChains/OHOS.cpp index 0c243a1ef723877f4454bb14891e461eb5667d47..74a6a690480af3b0f1700a507033f44de84f3b6e 100644 --- a/clang/lib/Driver/ToolChains/OHOS.cpp +++ b/clang/lib/Driver/ToolChains/OHOS.cpp @@ -88,6 +88,11 @@ static bool findOHOSMultilibs(const Driver &D, } std::string OHOS::getMultiarchTriple(const llvm::Triple &T) const { + auto GetTripleWithPostfix = + T.isOpenHOS() + ? [](const char *name) { return std::string(name) + "-ohos"; } + : [](const char *name) { return std::string(name) + "-hos"; }; + // For most architectures, just use whatever we have rather than trying to be // clever. switch (T.getArch()) { @@ -100,7 +105,7 @@ std::string OHOS::getMultiarchTriple(const llvm::Triple &T) const { // regardless of what the actual target triple is. case llvm::Triple::arm: case llvm::Triple::thumb: - return T.isOSLiteOS() ? "arm-liteos-ohos" : "arm-linux-ohos"; + return T.isOSLiteOS() ? "arm-liteos-ohos" : GetTripleWithPostfix("arm-linux"); case llvm::Triple::riscv32: return "riscv32-liteos-ohos"; case llvm::Triple::x86: @@ -108,7 +113,7 @@ std::string OHOS::getMultiarchTriple(const llvm::Triple &T) const { case llvm::Triple::x86_64: return "x86_64-linux-ohos"; case llvm::Triple::aarch64: - return "aarch64-linux-ohos"; + return GetTripleWithPostfix("aarch64-linux"); } return T.str(); } @@ -335,6 +340,9 @@ std::string OHOS::getDynamicLinker(const ArgList &Args) const { const llvm::Triple &Triple = getTriple(); const llvm::Triple::ArchType Arch = getArch(); + if (Triple.isHOS()) + return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; + assert(Triple.isMusl()); std::string ArchName; bool IsArm = false; diff --git a/clang/test/Driver/ohos.c b/clang/test/Driver/ohos.c index e20d6bfd2177d579e5ca34b8e6e035c9e18bd3fc..65dac5866bb8b51dea4857825505e32b325d80ce 100644 --- a/clang/test/Driver/ohos.c +++ b/clang/test/Driver/ohos.c @@ -52,6 +52,10 @@ // CHECK-SHARED: "-lc" // CHECK-SHARED: "-l:libunwind.a" +// RUN: %clang %s -### --target=arm-linux-hos -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=CHECK-RUNTIME,CHECK-LIBM +// RUN: %clang %s -### --target=aarch64-linux-hos -fuse-ld=lld 2>&1 \ +// RUN: | FileCheck %s -check-prefixes=CHECK-RUNTIME,CHECK-LIBM // RUN: %clang %s -### --target=arm-linux-ohos -fuse-ld=lld 2>&1 \ // RUN: | FileCheck %s -check-prefix=CHECK-RUNTIME // RUN: %clang %s -### --target=aarch64-linux-ohos -fuse-ld=lld 2>&1 \ @@ -225,6 +229,10 @@ // RUN: -resource-dir=%S/Inputs/ohos_native_tree/llvm/lib/clang/x.y.z \ // RUN: --sysroot=%S/Inputs/ohos_native_tree/sysroot -fuse-ld=lld -march=armv7-a 2>&1 \ // RUN: | FileCheck -check-prefixes=CHECK-PROFILE-RTLIB %s +// RUN: %clang %s -### -no-canonical-prefixes --target=arm-linux-hos -fprofile-instr-generate -v \ +// RUN: -resource-dir=%S/Inputs/ohos_native_tree/llvm/lib/clang/x.y.z \ +// RUN: --sysroot=%S/Inputs/ohos_native_tree/sysroot -fuse-ld=lld -march=armv7-a 2>&1 \ +// RUN: | FileCheck -check-prefixes=CHECK-PROFILE-RTLIB %s // CHECK-PROFILE-RTLIB: -u__llvm_profile_runtime // CHECK-PROFILE-RTLIB: libclang_rt.profile @@ -232,6 +240,9 @@ // RUN: %clang %s -### -o %t.o 2>&1 \ // RUN: --target=armv7-linux-ohos \ // RUN: | FileCheck --check-prefix=CHECK-OHOS-WARN-SHARED-TEXTREL %s +// RUN: %clang %s -### -o %t.o 2>&1 \ +// RUN: --target=armv7-linux-hos \ +// RUN: | FileCheck --check-prefix=CHECK-OHOS-WARN-SHARED-TEXTREL %s // CHECK-OHOS-WARN-SHARED-TEXTREL: "{{.*}}ld{{(.exe)?}}" // CHECK-OHOS-WARN-SHARED-TEXTREL: "--warn-shared-textrel" @@ -242,6 +253,12 @@ // RUN: --sysroot=%S/Inputs/ohos_native_tree/sysroot \ // RUN: -shared \ // RUN: | FileCheck --check-prefix=CHECK-OHOS-PTHREAD %s +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=arm64-linux-hos -pthread \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/ohos_native_tree/sysroot \ +// RUN: -shared \ +// RUN: | FileCheck --check-prefix=CHECK-OHOS-PTHREAD %s // CHECK-OHOS-PTHREAD-NOT: -lpthread diff --git a/clang/test/Preprocessor/ohos.c b/clang/test/Preprocessor/ohos.c index 9c3a81bbceed9d09c8aa933bf1cbe2a455af4fda..2a0f92464f28523f1fdce8733fde6818986f26b0 100644 --- a/clang/test/Preprocessor/ohos.c +++ b/clang/test/Preprocessor/ohos.c @@ -1,6 +1,9 @@ +// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=arm-linux-hos < /dev/null | FileCheck %s -match-full-lines -check-prefix=ARM-HOS-CXX // RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=arm-linux-ohos < /dev/null | FileCheck %s -match-full-lines -check-prefix=ARM-OHOS-CXX +// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=aarch64-linux-hos < /dev/null | FileCheck %s -match-full-lines -check-prefix=ARM64-HOS-CXX // RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=aarch64-linux-ohos < /dev/null | FileCheck %s -match-full-lines -check-prefix=ARM64-OHOS-CXX // RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=x86_64-linux-ohos < /dev/null | FileCheck %s -match-full-lines -check-prefix=X86_64-OHOS-CXX +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-linux-hos < /dev/null | FileCheck %s -check-prefix=HOS-DEFS // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-linux-ohos < /dev/null | FileCheck %s -check-prefix=OHOS-DEFS // ARM-HOS-CXX: #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 8U @@ -8,6 +11,9 @@ // ARM64-HOS-CXX: #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16UL // ARM64-OHOS-CXX: #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16UL // X86_64-OHOS-CXX: #define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 16UL +// HOS-DEFS: __ANDROID__ +// HOS-DEFS: __HOS__ +// HOS-DEFS-NOT: __OHOS__ // OHOS-DEFS: __OHOS_FAMILY__ // OHOS-DEFS: __OHOS__ -// OHOS-DEFS-NOT: __OHOS__ +// OHOS-DEFS-NOT: __HOS__ diff --git a/lldb/include/lldb/Host/HostInfo.h b/lldb/include/lldb/Host/HostInfo.h index fbb5bbf1e442c77e73a926fb038441e5eb03aaa0..40da69715ee5172916348fb8efe9efe2137fe15d 100644 --- a/lldb/include/lldb/Host/HostInfo.h +++ b/lldb/include/lldb/Host/HostInfo.h @@ -36,12 +36,12 @@ #include "lldb/Host/windows/HostInfoWindows.h" #define HOST_INFO_TYPE HostInfoWindows #elif defined(__linux__) || defined(__EMSCRIPTEN__) -#if defined(__ANDROID__) -#include "lldb/Host/android/HostInfoAndroid.h" -#define HOST_INFO_TYPE HostInfoAndroid -#elif defined(__OHOS_FAMILY__) +#if defined(__OHOS_FAMILY__) || defined(__HOS__) #include "lldb/Host/ohos/HostInfoOHOS.h" #define HOST_INFO_TYPE HostInfoOHOS +#elif defined(__ANDROID__) +#include "lldb/Host/android/HostInfoAndroid.h" +#define HOST_INFO_TYPE HostInfoAndroid #else #include "lldb/Host/linux/HostInfoLinux.h" #define HOST_INFO_TYPE HostInfoLinux diff --git a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp index c13203e2b961e5934262cb6ef5d0f875f2386bd6..fffd4ff7ad6ad9321ab872ae65e32d34e44e35a4 100644 --- a/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp +++ b/lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerCommon.cpp @@ -40,12 +40,10 @@ #include "ProcessGDBRemoteLog.h" #include "lldb/Utility/StringExtractorGDBRemote.h" -#ifdef __ANDROID__ -#include "lldb/Host/android/HostInfoAndroid.h" -#endif - -#if defined(__OHOS_FAMILY__) +#if defined(__OHOS_FAMILY__) || defined(__HOS__) #include "lldb/Host/ohos/HostInfoOHOS.h" +#elif defined(__ANDROID__) +#include "lldb/Host/android/HostInfoAndroid.h" #endif using namespace lldb; @@ -1281,10 +1279,10 @@ void GDBRemoteCommunicationServerCommon:: FileSpec GDBRemoteCommunicationServerCommon::FindModuleFile ( const std::string &module_path, const ArchSpec &arch) { -#ifdef __ANDROID__ - return HostInfoAndroid::ResolveLibraryPath(module_path, arch); -#elif defined(__OHOS_FAMILY__) +#if defined(__OHOS_FAMILY__) || defined(__HOS__) return HostInfoOHOS::ResolveLibraryPath(module_path, arch); +#elif defined(__ANDROID__) + return HostInfoAndroid::ResolveLibraryPath(module_path, arch); #else FileSpec file_spec(module_path); FileSystem::Instance().Resolve(file_spec); diff --git a/llvm-build/build.py b/llvm-build/build.py index dbb8644af0f075c5cc5d25142b66baf5db54ef12..2742485d54751187aaaccdb2fd8aea46558a2e60 100755 --- a/llvm-build/build.py +++ b/llvm-build/build.py @@ -43,6 +43,7 @@ class BuildConfig(): self.need_libs = self.do_build and 'libs' not in args.no_build self.need_lldb_mi = self.do_build and 'lldb-mi' not in args.no_build self.need_lldb_server = self.do_build and 'lldb-server' not in args.no_build + self.need_hos = self.do_build and args.build_hos self.no_build_arm = args.skip_build or args.no_build_arm self.no_build_aarch64 = args.skip_build or args.no_build_aarch64 @@ -57,9 +58,11 @@ class BuildConfig(): self.VERSION = None # autodetected self.OPENHOS_SFX = '-linux-ohos' + self.HOS_SFX = '-linux-hos' self.LITEOS_SFX = '-liteos-ohos' self.LLDB_PY_VERSION = '3.10' self.CLANG_VERSION = '10.0.1' + self.ANDROID_API_LEVEL = 29 logging.basicConfig(level=logging.INFO) @staticmethod @@ -100,6 +103,12 @@ class BuildConfig(): default=False, help='Omit build os target: x86_64.') + parser.add_argument( + '--build-hos', + action='store_true', + default=False, + help='Build os target: hos.') + parser.add_argument( '--no-lto', action='store_true', @@ -196,6 +205,9 @@ class BuildUtils(object): self.CMAKE_BIN_DIR = os.path.abspath( os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts/cmake', self.platform_prefix(), 'bin')) + def hos_triple(self, arch): + return arch + self.build_config.HOS_SFX + def open_ohos_triple(self, arch): return arch + self.build_config.OPENHOS_SFX @@ -380,6 +392,7 @@ class LlvmCore(BuildUtils): common_defines['CLANG_VENDOR'] = 'OHOS (%s) ' % build_name common_defines['CLANG_VENDOR_BUILD_VERSION'] = build_number + common_defines['CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE'] = str(self.build_config.ANDROID_API_LEVEL) common_defines.update(extra_defines) env = dict(self.build_config.ORIG_ENV) @@ -732,6 +745,59 @@ class SysrootComposer(BuildUtils): self.check_copy_tree(os.path.join(headers_tmp_dir, 'asm-generic'), os.path.join(ohosmusl_sysroot_dst, 'include/asm-generic')) + def install_hos_libs(self, arch, target): + cur_dir = os.getcwd() + os.chdir(self.build_config.OUT_PATH) + + ndk_root_dir = os.path.join(self.build_config.REPOROOT_DIR, 'prebuilts', 'android-ndk') + sysroot_include_dir = os.path.join(ndk_root_dir, 'sysroot', 'usr', 'include') + sysroot_libs_dir = os.path.join(ndk_root_dir, 'toolchains', 'llvm', 'prebuilt', 'linux-x86_64', + 'sysroot', 'usr', 'lib') + # full list of architectures in the ndk for correct restructuring + arch_dir_map = { + 'arm': 'arm-linux-androideabi', + 'arm64': 'aarch64-linux-android', + 'x86': 'i686-linux-android', + 'x86_64': 'x86_64-linux-android', + } + + # files from $ndk_sysroot_usr/lib/$arch_dir + unversioned_lib_files = ['libc.a', 'libdl.a', 'libm.a'] + # files from $ndk_sysroot_usr/lib/$arch_dir/$ANDROID_API_LEVEL + versioned_lib_files = [ + 'crtbegin_dynamic.o', + 'crtbegin_so.o', + 'crtbegin_static.o', + 'crtend_android.o', + 'crtend_so.o', + 'libc.so', + 'libdl.so', + 'libm.so', + ] + + arch_dir = arch_dir_map.get(arch, None) + if not arch_dir: + raise RuntimeError('Unsupported architecture for Android NDK %s (%s)' % (arch, target)) + + uapi_include_dst = self.merge_out_path('sysroot', target, 'usr', 'include') + self.check_copy_tree(sysroot_include_dir, uapi_include_dst) + self.check_copy_tree(os.path.join(sysroot_include_dir, arch_dir, 'asm'), + os.path.join(uapi_include_dst, 'asm')) + for arch_dir_to_remove in arch_dir_map.values(): + self.check_rm_tree(os.path.join(uapi_include_dst, arch_dir_to_remove)) + + uapi_lib_src = os.path.join(sysroot_libs_dir, arch_dir) + uapi_lib_src_v = os.path.join(uapi_lib_src, str(self.build_config.ANDROID_API_LEVEL)) + uapi_lib_dst = self.merge_out_path('sysroot', target, 'usr', 'lib') + self.check_rm_tree(uapi_lib_dst) + self.check_create_dir(uapi_lib_dst) + for filename in unversioned_lib_files: + self.check_copy_file(os.path.join(uapi_lib_src, filename), uapi_lib_dst) + for filename in versioned_lib_files: + self.check_copy_file(os.path.join(uapi_lib_src_v, filename), uapi_lib_dst) + + os.chdir(cur_dir) + def copy_libz_to_sysroot(self, libz_path, llvm_triple): # Install to sysroot dest_usr = self.merge_out_path('sysroot', llvm_triple, 'usr') @@ -759,14 +825,18 @@ class LlvmLibs(BuildUtils): def build_crt_libs(self, configs, llvm_install, need_lldb_server): for (arch, target) in configs: - self.sysroot_composer.build_musl(llvm_install, target) + if not target.endswith(self.build_config.HOS_SFX): + self.sysroot_composer.build_musl(llvm_install, target) if target.endswith(self.build_config.OPENHOS_SFX): self.sysroot_composer.install_linux_headers(arch, target) + if target.endswith(self.build_config.HOS_SFX): + self.sysroot_composer.install_hos_libs(arch, target) self.build_libs(need_lldb_server, llvm_install, target, precompilation=True) - self.sysroot_composer.build_musl(llvm_install, target, '-l') + if not target.endswith(self.build_config.HOS_SFX): + self.sysroot_composer.build_musl(llvm_install, target, '-l') @@ -833,6 +903,8 @@ class LlvmLibs(BuildUtils): '-march=armv7-a -mcpu=cortex-a7 -mfloat-abi=softfp -mfpu=neon-vfpv4', 'a7_softfp_neon-vfpv4'), ('arm', self.open_ohos_triple('arm'), '-march=armv7-a -mcpu=cortex-a7 -mfloat-abi=hard -mfpu=neon-vfpv4', 'a7_hard_neon-vfpv4'), + ('arm', self.hos_triple('arm'), '-march=armv7-a', ''), + ('aarch64', self.hos_triple('aarch64'), '', ''), ('aarch64', self.open_ohos_triple('aarch64'), '', ''), ('x86_64', self.open_ohos_triple('x86_64'), '', ''),] @@ -1310,6 +1382,7 @@ class LlvmLibs(BuildUtils): lldb_defines['LLVM_HOST_TRIPLE'] = llvm_triple lldb_defines['LLVM_TARGET_ARCH'] = arch lldb_defines['LLVM_TARGETS_TO_BUILD'] = self.build_config.TARGETS + lldb_defines['CLANG_DEFAULT_HOS_ANDROID_API_TRIPLE'] = str(self.build_config.ANDROID_API_LEVEL) lldb_cmake_path = os.path.join(self.build_config.LLVM_PROJECT_DIR, 'llvm') @@ -1974,9 +2047,13 @@ def main(): configs = [] if not build_config.no_build_arm: configs.append(('arm', build_utils.liteos_triple('arm'))) + if build_config.need_hos: + configs.append(('arm', build_utils.hos_triple('arm'))) configs.append(('arm', build_utils.open_ohos_triple('arm'))) if not build_config.no_build_aarch64: + if build_config.need_hos: + configs.append(('arm64', build_utils.hos_triple('aarch64'))) configs.append(('arm64', build_utils.open_ohos_triple('aarch64'))) if not build_config.no_build_x86_64: diff --git a/llvm/include/llvm/ADT/Triple.h b/llvm/include/llvm/ADT/Triple.h index cfda6ad9428142cca55870240e4e7f8c9ba22744..47d123860a93d7e4d74bb5a75a3b4870c764c311 100644 --- a/llvm/include/llvm/ADT/Triple.h +++ b/llvm/include/llvm/ADT/Triple.h @@ -698,6 +698,8 @@ public: /// LiteOS default enviroment is also OHOS, but omited on triple. bool isOHOSFamily() const { return isOpenHOS() || isOSLiteOS(); } + bool isHOS() const { return getEnvironmentName() == "hos"; } + bool isOpenHOS() const { return getEnvironment() == Triple::OpenHOS; } bool isOSLiteOS() const { return getOS() == Triple::LiteOS; } diff --git a/llvm/lib/Support/Triple.cpp b/llvm/lib/Support/Triple.cpp index c520d96db9fd4f40d47db47e631af6314f4cd818..edf75edccd79175d7c7449c56bc17c831fda02d0 100644 --- a/llvm/lib/Support/Triple.cpp +++ b/llvm/lib/Support/Triple.cpp @@ -562,6 +562,7 @@ static Triple::EnvironmentType parseEnvironment(StringRef EnvironmentName) { .StartsWith("simulator", Triple::Simulator) .StartsWith("macabi", Triple::MacABI) .StartsWith("ohos", Triple::OpenHOS) + .StartsWith("hos", Triple::Android) .Default(Triple::UnknownEnvironment); } diff --git a/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll b/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll index 0ea2e20cfa522f5d3a9af8c4c5f40e57ae835351..4ce93fe80724413db70493b1dfdee7ffd5697f45 100644 --- a/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll +++ b/llvm/test/CodeGen/AArch64/arm64-platform-reg.ll @@ -2,6 +2,7 @@ ; RUN: llc -mtriple=arm64-freebsd-gnu -mattr=+reserve-x18 -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 ; RUN: llc -mtriple=arm64-linux-gnu -o - %s | FileCheck %s ; RUN: llc -mtriple=aarch64-linux-android -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 +; RUN: llc -mtriple=aarch64-linux-hos -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 ; RUN: llc -mtriple=aarch64-linux-ohos -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 ; RUN: llc -mtriple=aarch64-fuchsia -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 ; RUN: llc -mtriple=aarch64-windows -o - %s | FileCheck %s --check-prefix=CHECK-RESERVE --check-prefix=CHECK-RESERVE-X18 diff --git a/llvm/test/CodeGen/AArch64/stack-protector-target.ll b/llvm/test/CodeGen/AArch64/stack-protector-target.ll index 0c5905da81fca7d4536045dc22c09e6063b9ff92..abf6c8736447cfd718edae3a9f15b020132b9fc0 100644 --- a/llvm/test/CodeGen/AArch64/stack-protector-target.ll +++ b/llvm/test/CodeGen/AArch64/stack-protector-target.ll @@ -1,5 +1,6 @@ ; Test target-specific stack cookie location. ; RUN: llc -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefix=ANDROID-AARCH64 %s +; RUN: llc -mtriple=aarch64-linux-hos < %s -o - | FileCheck --check-prefix=ANDROID-AARCH64 %s ; RUN: llc -mtriple=aarch64-fuchsia < %s -o - | FileCheck --check-prefixes=FUCHSIA-AARCH64-COMMON,FUCHSIA-AARCH64-USER %s ; RUN: llc -mtriple=aarch64-fuchsia -mattr=+tpidr-el1 < %s -o - | FileCheck --check-prefixes=FUCHSIA-AARCH64-COMMON,FUCHSIA-AARCH64-KERNEL %s ; RUN: llc -mtriple=aarch64-windows < %s -o - | FileCheck --check-prefix=WINDOWS-AARCH64 %s diff --git a/llvm/test/Transforms/SafeStack/AArch64/abi.ll b/llvm/test/Transforms/SafeStack/AArch64/abi.ll index 45961b767180320ae7754ee0b822db98b3adabf1..b79e44453483ca2144d7cfe028a5fe57d25936a9 100644 --- a/llvm/test/Transforms/SafeStack/AArch64/abi.ll +++ b/llvm/test/Transforms/SafeStack/AArch64/abi.ll @@ -1,4 +1,5 @@ ; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck %s +; RUN: opt -safe-stack -S -mtriple=aarch64-linux-hos < %s -o - | FileCheck %s ; RUN: opt -safe-stack -S -mtriple=aarch64-linux-ohos < %s -o - | FileCheck %s --check-prefix=OHOS diff --git a/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll b/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll index 9069ea50a4d58ac50cb04a66f66ec8056940c72f..9493113d6cd0c67d93b2d607c8e0e7a50d067fce 100644 --- a/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll +++ b/llvm/test/Transforms/SafeStack/AArch64/abi_ssp.ll @@ -1,4 +1,5 @@ ; RUN: opt -safe-stack -S -mtriple=aarch64-linux-android < %s -o - | FileCheck --check-prefixes=TLS,ANDROID %s +; RUN: opt -safe-stack -S -mtriple=aarch64-linux-hos < %s -o - | FileCheck --check-prefixes=TLS,ANDROID %s ; RUN: opt -safe-stack -S -mtriple=aarch64-linux-ohos < %s -o - | FileCheck --check-prefix=OHOS %s ; RUN: opt -safe-stack -S -mtriple=aarch64-unknown-fuchsia < %s -o - | FileCheck --check-prefixes=TLS,FUCHSIA %s