[llvm-branch-commits] [clang] 2b74728 - Add Hightec toolchain description
Author: Konstantin Schwarz
Date: 2019-01-17T09:43:28+01:00
New Revision: 2b747283621473751ef40c0f2ea1fdf50c14453f
URL:
https://github.com/llvm/llvm-project/commit/2b747283621473751ef40c0f2ea1fdf50c14453f
DIFF:
https://github.com/llvm/llvm-project/commit/2b747283621473751ef40c0f2ea1fdf50c14453f.diff
LOG: Add Hightec toolchain description
Added:
clang/lib/Driver/ToolChains/HighTec.cpp
clang/lib/Driver/ToolChains/HighTec.h
clang/rlm_libs/x64_l/librlm.a
clang/rlm_libs/x64_w/rlm1233.dll
clang/rlm_libs/x64_w/rlm1233.lib
clang/tools/driver/LicenseManagerBase.cpp
clang/tools/driver/LicenseManagerBase.h
clang/tools/driver/license.h
Modified:
clang/lib/Driver/CMakeLists.txt
clang/lib/Driver/Driver.cpp
clang/lib/Frontend/InitHeaderSearch.cpp
clang/tools/driver/CMakeLists.txt
clang/tools/driver/driver.cpp
Removed:
diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt
index 2b03c9f7001f7..637907aa91fe3 100644
--- a/clang/lib/Driver/CMakeLists.txt
+++ b/clang/lib/Driver/CMakeLists.txt
@@ -45,6 +45,7 @@ add_clang_library(clangDriver
ToolChains/Fuchsia.cpp
ToolChains/Gnu.cpp
ToolChains/Haiku.cpp
+ ToolChains/HighTec.cpp
ToolChains/HIP.cpp
ToolChains/Hexagon.cpp
ToolChains/Linux.cpp
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 952a716cb6e61..1caf63bf354f7 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -26,6 +26,7 @@
#include "ToolChains/HIP.h"
#include "ToolChains/Haiku.h"
#include "ToolChains/Hexagon.h"
+#include "ToolChains/HighTec.h"
#include "ToolChains/Lanai.h"
#include "ToolChains/Linux.h"
#include "ToolChains/MSVC.h"
@@ -4282,6 +4283,12 @@ const ToolChain &Driver::getToolChain(const ArgList
&Args,
auto &TC = ToolChains[Target.str()];
if (!TC) {
+
+if (toolchains::HighTec::handlesTarget(Target)) {
+ TC = llvm::make_unique(*this, Target, Args);
+ return *TC;
+}
+
switch (Target.getOS()) {
case llvm::Triple::Haiku:
TC = llvm::make_unique(*this, Target, Args);
diff --git a/clang/lib/Driver/ToolChains/HighTec.cpp
b/clang/lib/Driver/ToolChains/HighTec.cpp
new file mode 100644
index 0..367137f771b08
--- /dev/null
+++ b/clang/lib/Driver/ToolChains/HighTec.cpp
@@ -0,0 +1,311 @@
+//===--- HighTec.cpp - HighTec ToolChain Implementation *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "HighTec.h"
+#include "Arch/ARM.h"
+#include "clang/Basic/Version.h"
+#include "clang/Basic/VirtualFileSystem.h"
+#include "clang/Driver/Compilation.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/DriverDiagnostic.h"
+#include "clang/Driver/Options.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/TargetParser.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm::opt;
+using namespace clang;
+using namespace clang::driver;
+using namespace clang::driver::tools;
+using namespace clang::driver::toolchains;
+
+static std::string getArchitecture(llvm::Triple Triple) {
+
+ llvm::StringRef Arch = llvm::Triple::getArchTypePrefix(Triple.getArch());
+ if (Arch != "")
+return Arch;
+
+ llvm_unreachable("Unknown architecture specified.");
+}
+
+static std::string getArchVersionString(StringRef Arch) {
+
+ switch (llvm::ARM::parseArch(llvm::ARM::getCanonicalArchName(Arch))) {
+default:
+ // For now, only support v7 & v8
+ return "";
+case llvm::ARM::ArchKind::ARMV8A:
+ return "v8-a";
+case llvm::ARM::ArchKind::ARMV8_1A:
+ return "v8.1-a";
+case llvm::ARM::ArchKind::ARMV8_2A:
+ return "v8-2-a";
+case llvm::ARM::ArchKind::ARMV8_3A:
+ return "v8-3-a";
+case llvm::ARM::ArchKind::ARMV8R:
+ return "v8-r";
+case llvm::ARM::ArchKind::ARMV8MBaseline:
+ return "v8-m.base";
+case llvm::ARM::ArchKind::ARMV8MMainline:
+ return "v8-m.main";
+case llvm::ARM::ArchKind::ARMV7A:
+ return "v7-a";
+case llvm::ARM::ArchKind::ARMV7R:
+ return "v7-r";
+case llvm::ARM::ArchKind::ARMV7EM:
+ return "v7e-m";
+case llvm::ARM::ArchKind::ARMV7M:
+ return "v7-m";
+case llvm::ARM::ArchKind::ARMV7S:
+ return "v7-s";
+case llvm::ARM::ArchKind::ARMV7K:
+ return "v7-k";
+case llvm::ARM::ArchKind::ARMV7VE:
+ return "v7ve";
+case llvm::ARM::ArchKind::ARMV6M:
+ return "v6-m";
+ }
+}
+
+static std::string getArchVersion(llvm::Triple Triple, const
llvm::opt::ArgList &Args) {
+
+
+ if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
+ return getArchVersionString(A->getValue());
+ } else {
+
+
[llvm-branch-commits] [clang] 043b898 - [LLVMARM-13] Add function for defining HighTec specific macros, call it from ARM targets.
Author: Konstantin Schwarz
Date: 2019-01-17T11:35:06+01:00
New Revision: 043b8986368f76ba8fa2c5e34db83537e8af6d47
URL:
https://github.com/llvm/llvm-project/commit/043b8986368f76ba8fa2c5e34db83537e8af6d47
DIFF:
https://github.com/llvm/llvm-project/commit/043b8986368f76ba8fa2c5e34db83537e8af6d47.diff
LOG: [LLVMARM-13] Add function for defining HighTec specific macros, call it
from ARM targets.
Added:
Modified:
clang/lib/Basic/Targets.cpp
clang/lib/Basic/Targets.h
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/ARM.cpp
Removed:
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 1ef2fe3b81416..5ee68fd92ce2a 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -112,6 +112,10 @@ void addMinGWDefines(const llvm::Triple &Triple, const
LangOptions &Opts,
addCygMingDefines(Opts, Builder);
}
+void addHighTecDefines(MacroBuilder &Builder) {
+ Builder.defineMacro("__HIGHTEC__");
+}
+
//===--===//
// Driver code
//===--===//
diff --git a/clang/lib/Basic/Targets.h b/clang/lib/Basic/Targets.h
index d450aa3f37ed6..3c31890c8e15b 100644
--- a/clang/lib/Basic/Targets.h
+++ b/clang/lib/Basic/Targets.h
@@ -46,6 +46,9 @@ void addMinGWDefines(const llvm::Triple &Triple, const
clang::LangOptions &Opts,
LLVM_LIBRARY_VISIBILITY
void addCygMingDefines(const clang::LangOptions &Opts,
clang::MacroBuilder &Builder);
+
+LLVM_LIBRARY_VISIBILITY
+void addHighTecDefines(clang::MacroBuilder &Builder);
} // namespace targets
} // namespace clang
#endif // LLVM_CLANG_LIB_BASIC_TARGETS_H
diff --git a/clang/lib/Basic/Targets/AArch64.cpp
b/clang/lib/Basic/Targets/AArch64.cpp
index 3444591ac5933..ddca8369b7423 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -211,6 +211,8 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions
&Opts,
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
+
+ addHighTecDefines(Builder);
}
ArrayRef AArch64TargetInfo::getTargetBuiltins() const {
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 19fcc5abea97e..8d49f124c854a 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -752,6 +752,8 @@ void ARMTargetInfo::getTargetDefines(const LangOptions
&Opts,
getTargetDefinesARMV82A(Opts, Builder);
break;
}
+
+ addHighTecDefines(Builder);
}
const Builtin::Info ARMTargetInfo::BuiltinInfo[] = {
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [lld] 716de1c - Remove repository URL from version string
Author: Konstantin Schwarz
Date: 2019-01-17T11:36:16+01:00
New Revision: 716de1cb582ea2676e1a00ed135085229d88e615
URL:
https://github.com/llvm/llvm-project/commit/716de1cb582ea2676e1a00ed135085229d88e615
DIFF:
https://github.com/llvm/llvm-project/commit/716de1cb582ea2676e1a00ed135085229d88e615.diff
LOG: Remove repository URL from version string
Added:
Modified:
clang/lib/Basic/Version.cpp
lld/Common/Version.cpp
Removed:
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp
index c2b7753d41288..bef40f9f1201c 100644
--- a/clang/lib/Basic/Version.cpp
+++ b/clang/lib/Basic/Version.cpp
@@ -25,6 +25,7 @@
namespace clang {
std::string getClangRepositoryPath() {
+ return "clang:";
#if defined(CLANG_REPOSITORY_STRING)
return CLANG_REPOSITORY_STRING;
#else
@@ -55,6 +56,7 @@ std::string getClangRepositoryPath() {
}
std::string getLLVMRepositoryPath() {
+ return "llvm: ";
#ifdef LLVM_REPOSITORY
StringRef URL(LLVM_REPOSITORY);
#else
diff --git a/lld/Common/Version.cpp b/lld/Common/Version.cpp
index 6226c9a2fac69..3ef83bbeddd18 100644
--- a/lld/Common/Version.cpp
+++ b/lld/Common/Version.cpp
@@ -30,6 +30,8 @@ static std::string getRepository() {
std::string Repo = getRepositoryPath();
std::string Rev = LLD_REVISION_STRING;
+ return " (" + Rev + ")";
+
if (Repo.empty() && Rev.empty())
return "";
if (!Repo.empty() && !Rev.empty())
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] 043b898 - [LLVMARM-13] Add function for defining HighTec specific macros, call it from ARM targets.
Author: Konstantin Schwarz
Date: 2019-01-17T11:35:06+01:00
New Revision: 043b8986368f76ba8fa2c5e34db83537e8af6d47
URL:
https://github.com/llvm/llvm-project/commit/043b8986368f76ba8fa2c5e34db83537e8af6d47
DIFF:
https://github.com/llvm/llvm-project/commit/043b8986368f76ba8fa2c5e34db83537e8af6d47.diff
LOG: [LLVMARM-13] Add function for defining HighTec specific macros, call it
from ARM targets.
Added:
Modified:
clang/lib/Basic/Targets.cpp
clang/lib/Basic/Targets.h
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/ARM.cpp
Removed:
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 1ef2fe3b81416..5ee68fd92ce2a 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -112,6 +112,10 @@ void addMinGWDefines(const llvm::Triple &Triple, const
LangOptions &Opts,
addCygMingDefines(Opts, Builder);
}
+void addHighTecDefines(MacroBuilder &Builder) {
+ Builder.defineMacro("__HIGHTEC__");
+}
+
//===--===//
// Driver code
//===--===//
diff --git a/clang/lib/Basic/Targets.h b/clang/lib/Basic/Targets.h
index d450aa3f37ed6..3c31890c8e15b 100644
--- a/clang/lib/Basic/Targets.h
+++ b/clang/lib/Basic/Targets.h
@@ -46,6 +46,9 @@ void addMinGWDefines(const llvm::Triple &Triple, const
clang::LangOptions &Opts,
LLVM_LIBRARY_VISIBILITY
void addCygMingDefines(const clang::LangOptions &Opts,
clang::MacroBuilder &Builder);
+
+LLVM_LIBRARY_VISIBILITY
+void addHighTecDefines(clang::MacroBuilder &Builder);
} // namespace targets
} // namespace clang
#endif // LLVM_CLANG_LIB_BASIC_TARGETS_H
diff --git a/clang/lib/Basic/Targets/AArch64.cpp
b/clang/lib/Basic/Targets/AArch64.cpp
index 3444591ac5933..ddca8369b7423 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -211,6 +211,8 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions
&Opts,
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
+
+ addHighTecDefines(Builder);
}
ArrayRef AArch64TargetInfo::getTargetBuiltins() const {
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 19fcc5abea97e..8d49f124c854a 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -752,6 +752,8 @@ void ARMTargetInfo::getTargetDefines(const LangOptions
&Opts,
getTargetDefinesARMV82A(Opts, Builder);
break;
}
+
+ addHighTecDefines(Builder);
}
const Builtin::Info ARMTargetInfo::BuiltinInfo[] = {
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [clang] 2b74728 - Add Hightec toolchain description
Author: Konstantin Schwarz
Date: 2019-01-17T09:43:28+01:00
New Revision: 2b747283621473751ef40c0f2ea1fdf50c14453f
URL:
https://github.com/llvm/llvm-project/commit/2b747283621473751ef40c0f2ea1fdf50c14453f
DIFF:
https://github.com/llvm/llvm-project/commit/2b747283621473751ef40c0f2ea1fdf50c14453f.diff
LOG: Add Hightec toolchain description
Added:
clang/lib/Driver/ToolChains/HighTec.cpp
clang/lib/Driver/ToolChains/HighTec.h
clang/rlm_libs/x64_l/librlm.a
clang/rlm_libs/x64_w/rlm1233.dll
clang/rlm_libs/x64_w/rlm1233.lib
clang/tools/driver/LicenseManagerBase.cpp
clang/tools/driver/LicenseManagerBase.h
clang/tools/driver/license.h
Modified:
clang/lib/Driver/CMakeLists.txt
clang/lib/Driver/Driver.cpp
clang/lib/Frontend/InitHeaderSearch.cpp
clang/tools/driver/CMakeLists.txt
clang/tools/driver/driver.cpp
Removed:
diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt
index 2b03c9f7001f7..637907aa91fe3 100644
--- a/clang/lib/Driver/CMakeLists.txt
+++ b/clang/lib/Driver/CMakeLists.txt
@@ -45,6 +45,7 @@ add_clang_library(clangDriver
ToolChains/Fuchsia.cpp
ToolChains/Gnu.cpp
ToolChains/Haiku.cpp
+ ToolChains/HighTec.cpp
ToolChains/HIP.cpp
ToolChains/Hexagon.cpp
ToolChains/Linux.cpp
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index 952a716cb6e61..1caf63bf354f7 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -26,6 +26,7 @@
#include "ToolChains/HIP.h"
#include "ToolChains/Haiku.h"
#include "ToolChains/Hexagon.h"
+#include "ToolChains/HighTec.h"
#include "ToolChains/Lanai.h"
#include "ToolChains/Linux.h"
#include "ToolChains/MSVC.h"
@@ -4282,6 +4283,12 @@ const ToolChain &Driver::getToolChain(const ArgList
&Args,
auto &TC = ToolChains[Target.str()];
if (!TC) {
+
+if (toolchains::HighTec::handlesTarget(Target)) {
+ TC = llvm::make_unique(*this, Target, Args);
+ return *TC;
+}
+
switch (Target.getOS()) {
case llvm::Triple::Haiku:
TC = llvm::make_unique(*this, Target, Args);
diff --git a/clang/lib/Driver/ToolChains/HighTec.cpp
b/clang/lib/Driver/ToolChains/HighTec.cpp
new file mode 100644
index 0..367137f771b08
--- /dev/null
+++ b/clang/lib/Driver/ToolChains/HighTec.cpp
@@ -0,0 +1,311 @@
+//===--- HighTec.cpp - HighTec ToolChain Implementation *- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+
+#include "HighTec.h"
+#include "Arch/ARM.h"
+#include "clang/Basic/Version.h"
+#include "clang/Basic/VirtualFileSystem.h"
+#include "clang/Driver/Compilation.h"
+#include "clang/Driver/Driver.h"
+#include "clang/Driver/DriverDiagnostic.h"
+#include "clang/Driver/Options.h"
+#include "llvm/Option/ArgList.h"
+#include "llvm/Support/Path.h"
+#include "llvm/Support/TargetParser.h"
+#include "llvm/Support/raw_ostream.h"
+
+using namespace llvm::opt;
+using namespace clang;
+using namespace clang::driver;
+using namespace clang::driver::tools;
+using namespace clang::driver::toolchains;
+
+static std::string getArchitecture(llvm::Triple Triple) {
+
+ llvm::StringRef Arch = llvm::Triple::getArchTypePrefix(Triple.getArch());
+ if (Arch != "")
+return Arch;
+
+ llvm_unreachable("Unknown architecture specified.");
+}
+
+static std::string getArchVersionString(StringRef Arch) {
+
+ switch (llvm::ARM::parseArch(llvm::ARM::getCanonicalArchName(Arch))) {
+default:
+ // For now, only support v7 & v8
+ return "";
+case llvm::ARM::ArchKind::ARMV8A:
+ return "v8-a";
+case llvm::ARM::ArchKind::ARMV8_1A:
+ return "v8.1-a";
+case llvm::ARM::ArchKind::ARMV8_2A:
+ return "v8-2-a";
+case llvm::ARM::ArchKind::ARMV8_3A:
+ return "v8-3-a";
+case llvm::ARM::ArchKind::ARMV8R:
+ return "v8-r";
+case llvm::ARM::ArchKind::ARMV8MBaseline:
+ return "v8-m.base";
+case llvm::ARM::ArchKind::ARMV8MMainline:
+ return "v8-m.main";
+case llvm::ARM::ArchKind::ARMV7A:
+ return "v7-a";
+case llvm::ARM::ArchKind::ARMV7R:
+ return "v7-r";
+case llvm::ARM::ArchKind::ARMV7EM:
+ return "v7e-m";
+case llvm::ARM::ArchKind::ARMV7M:
+ return "v7-m";
+case llvm::ARM::ArchKind::ARMV7S:
+ return "v7-s";
+case llvm::ARM::ArchKind::ARMV7K:
+ return "v7-k";
+case llvm::ARM::ArchKind::ARMV7VE:
+ return "v7ve";
+case llvm::ARM::ArchKind::ARMV6M:
+ return "v6-m";
+ }
+}
+
+static std::string getArchVersion(llvm::Triple Triple, const
llvm::opt::ArgList &Args) {
+
+
+ if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
+ return getArchVersionString(A->getValue());
+ } else {
+
+
[llvm-branch-commits] [lld] 716de1c - Remove repository URL from version string
Author: Konstantin Schwarz
Date: 2019-01-17T11:36:16+01:00
New Revision: 716de1cb582ea2676e1a00ed135085229d88e615
URL:
https://github.com/llvm/llvm-project/commit/716de1cb582ea2676e1a00ed135085229d88e615
DIFF:
https://github.com/llvm/llvm-project/commit/716de1cb582ea2676e1a00ed135085229d88e615.diff
LOG: Remove repository URL from version string
Added:
Modified:
clang/lib/Basic/Version.cpp
lld/Common/Version.cpp
Removed:
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp
index c2b7753d41288..bef40f9f1201c 100644
--- a/clang/lib/Basic/Version.cpp
+++ b/clang/lib/Basic/Version.cpp
@@ -25,6 +25,7 @@
namespace clang {
std::string getClangRepositoryPath() {
+ return "clang:";
#if defined(CLANG_REPOSITORY_STRING)
return CLANG_REPOSITORY_STRING;
#else
@@ -55,6 +56,7 @@ std::string getClangRepositoryPath() {
}
std::string getLLVMRepositoryPath() {
+ return "llvm: ";
#ifdef LLVM_REPOSITORY
StringRef URL(LLVM_REPOSITORY);
#else
diff --git a/lld/Common/Version.cpp b/lld/Common/Version.cpp
index 6226c9a2fac69..3ef83bbeddd18 100644
--- a/lld/Common/Version.cpp
+++ b/lld/Common/Version.cpp
@@ -30,6 +30,8 @@ static std::string getRepository() {
std::string Repo = getRepositoryPath();
std::string Rev = LLD_REVISION_STRING;
+ return " (" + Rev + ")";
+
if (Repo.empty() && Rev.empty())
return "";
if (!Repo.empty() && !Rev.empty())
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] 550c750 - Add support for building compiler-rt for bare metal.
Author: Konstantin Schwarz
Date: 2019-01-17T12:15:24+01:00
New Revision: 550c750e922efcd0960498f876b28de71eb1657b
URL:
https://github.com/llvm/llvm-project/commit/550c750e922efcd0960498f876b28de71eb1657b
DIFF:
https://github.com/llvm/llvm-project/commit/550c750e922efcd0960498f876b28de71eb1657b.diff
LOG: Add support for building compiler-rt for bare metal.
Added:
Modified:
compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/int_util.c
Removed:
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake
b/compiler-rt/cmake/builtin-config-ix.cmake
index a5704e5fed537..17311bcd8661a 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -23,8 +23,8 @@ int foo(int x, int y) {
")
-set(ARM64 aarch64)
-set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k)
+set(ARM64 aarch64 aarch64v8a)
+set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv8r armv8a)
set(HEXAGON hexagon)
set(X86 i386)
set(X86_64 x86_64)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt
b/compiler-rt/lib/builtins/CMakeLists.txt
index 82332967b1047..7a1b74d0c7e0e 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -207,11 +207,11 @@ if (HAVE_UNWIND_H)
gcc_personality_v0.c)
endif ()
-if (NOT FUCHSIA)
- set(GENERIC_SOURCES
-${GENERIC_SOURCES}
-clear_cache.c)
-endif()
+#if (NOT FUCHSIA)
+# set(GENERIC_SOURCES
+#${GENERIC_SOURCES}
+#clear_cache.c)
+#endif()
# These sources work on all x86 variants, but only x86 variants.
set(x86_ARCH_SOURCES
@@ -394,11 +394,18 @@ set(arm_Thumb1_VFPv2_SOURCES
arm/unordsf2vfp.S)
set(arm_Thumb1_icache_SOURCES
arm/sync_synchronize.S)
-set(arm_Thumb1_SOURCES
- ${arm_Thumb1_JT_SOURCES}
- ${arm_Thumb1_SjLj_EH_SOURCES}
- ${arm_Thumb1_VFPv2_SOURCES}
- ${arm_Thumb1_icache_SOURCES})
+
+if(APPLE)
+ set(arm_Thumb1_SOURCES
+${arm_Thumb1_JT_SOURCES}
+${arm_Thumb1_SjLj_EH_SOURCES}
+${arm_Thumb1_VFPv2_SOURCES}
+${arm_Thumb1_icache_SOURCES})
+else()
+ set(arm_Thumb1_SOURCES
+${arm_Thumb1_JT_SOURCES}
+${arm_Thumb1_icache_SOURCES})
+endif()
if(MINGW)
set(arm_SOURCES
@@ -453,6 +460,12 @@ set(armhf_SOURCES ${arm_SOURCES})
set(armv7_SOURCES ${arm_SOURCES})
set(armv7s_SOURCES ${arm_SOURCES})
set(armv7k_SOURCES ${arm_SOURCES})
+
+set(armv8a_SOURCES ${arm_SOURCES})
+set(armv8r_SOURCES ${arm_SOURCES})
+
+set(aarch64v8a_SOURCES ${aarch64_SOURCES})
+
set(arm64_SOURCES ${aarch64_SOURCES})
# macho_embedded archs
@@ -565,8 +578,13 @@ else ()
set(_arch "arm|armv6m")
elseif("${arch}" MATCHES "^(armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
set(_arch "arm")
+ elseif("${arch}" MATCHES "^(armv8a|armv8r)$")
+set(_arch "arm")
+ elseif("${arch}" MATCHES "^(aarch64v8a)$")
+set(_arch "aarch64")
endif()
+ message(WARNING "supposed to work for target: " ${arch})
# For ARM archs, exclude any VFP builtins if VFP is not supported
if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
string(REPLACE ";" " " _TARGET_${arch}_CFLAGS
"${TARGET_${arch}_CFLAGS}")
@@ -589,8 +607,9 @@ else ()
# Needed for clear_cache on debug mode, due to r7's usage in inline asm.
# Release mode already sets it via -O2/3, Debug mode doesn't.
+ set(BUILTIN_HF_CFLAGS "")
if (${arch} STREQUAL "armhf")
-list(APPEND BUILTIN_CFLAGS -fomit-frame-pointer
-DCOMPILER_RT_ARMHF_TARGET)
+list(APPEND BUILTIN_HF_CFLAGS -fomit-frame-pointer
-DCOMPILER_RT_ARMHF_TARGET)
endif()
# For RISCV32, we must force enable int128 for compiling long
@@ -604,7 +623,7 @@ else ()
ARCHS ${arch}
SOURCES ${${arch}_SOURCES}
DEFS ${BUILTIN_DEFS}
- CFLAGS ${BUILTIN_CFLAGS}
+ CFLAGS ${BUILTIN_CFLAGS} ${BUILTIN_HF_CFLAGS}
PARENT_TARGET builtins)
endif ()
endforeach ()
diff --git a/compiler-rt/lib/builtins/int_util.c
b/compiler-rt/lib/builtins/int_util.c
index de87410dbca28..b7e6a1c90741f 100644
--- a/compiler-rt/lib/builtins/int_util.c
+++ b/compiler-rt/lib/builtins/int_util.c
@@ -45,7 +45,7 @@ void compilerrt_abort_impl(const char *file, int line, const
char *function) {
__assert_rtn(function, file, line, "libcompiler_rt abort");
}
-#elif __Fuchsia__
+#elif 1
#ifndef _WIN32
__attribute__((weak))
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] 550c750 - Add support for building compiler-rt for bare metal.
Author: Konstantin Schwarz
Date: 2019-01-17T12:15:24+01:00
New Revision: 550c750e922efcd0960498f876b28de71eb1657b
URL:
https://github.com/llvm/llvm-project/commit/550c750e922efcd0960498f876b28de71eb1657b
DIFF:
https://github.com/llvm/llvm-project/commit/550c750e922efcd0960498f876b28de71eb1657b.diff
LOG: Add support for building compiler-rt for bare metal.
Added:
Modified:
compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/int_util.c
Removed:
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake
b/compiler-rt/cmake/builtin-config-ix.cmake
index a5704e5fed537..17311bcd8661a 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -23,8 +23,8 @@ int foo(int x, int y) {
")
-set(ARM64 aarch64)
-set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k)
+set(ARM64 aarch64 aarch64v8a)
+set(ARM32 arm armhf armv6m armv7m armv7em armv7 armv7s armv7k armv8r armv8a)
set(HEXAGON hexagon)
set(X86 i386)
set(X86_64 x86_64)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt
b/compiler-rt/lib/builtins/CMakeLists.txt
index 82332967b1047..7a1b74d0c7e0e 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -207,11 +207,11 @@ if (HAVE_UNWIND_H)
gcc_personality_v0.c)
endif ()
-if (NOT FUCHSIA)
- set(GENERIC_SOURCES
-${GENERIC_SOURCES}
-clear_cache.c)
-endif()
+#if (NOT FUCHSIA)
+# set(GENERIC_SOURCES
+#${GENERIC_SOURCES}
+#clear_cache.c)
+#endif()
# These sources work on all x86 variants, but only x86 variants.
set(x86_ARCH_SOURCES
@@ -394,11 +394,18 @@ set(arm_Thumb1_VFPv2_SOURCES
arm/unordsf2vfp.S)
set(arm_Thumb1_icache_SOURCES
arm/sync_synchronize.S)
-set(arm_Thumb1_SOURCES
- ${arm_Thumb1_JT_SOURCES}
- ${arm_Thumb1_SjLj_EH_SOURCES}
- ${arm_Thumb1_VFPv2_SOURCES}
- ${arm_Thumb1_icache_SOURCES})
+
+if(APPLE)
+ set(arm_Thumb1_SOURCES
+${arm_Thumb1_JT_SOURCES}
+${arm_Thumb1_SjLj_EH_SOURCES}
+${arm_Thumb1_VFPv2_SOURCES}
+${arm_Thumb1_icache_SOURCES})
+else()
+ set(arm_Thumb1_SOURCES
+${arm_Thumb1_JT_SOURCES}
+${arm_Thumb1_icache_SOURCES})
+endif()
if(MINGW)
set(arm_SOURCES
@@ -453,6 +460,12 @@ set(armhf_SOURCES ${arm_SOURCES})
set(armv7_SOURCES ${arm_SOURCES})
set(armv7s_SOURCES ${arm_SOURCES})
set(armv7k_SOURCES ${arm_SOURCES})
+
+set(armv8a_SOURCES ${arm_SOURCES})
+set(armv8r_SOURCES ${arm_SOURCES})
+
+set(aarch64v8a_SOURCES ${aarch64_SOURCES})
+
set(arm64_SOURCES ${aarch64_SOURCES})
# macho_embedded archs
@@ -565,8 +578,13 @@ else ()
set(_arch "arm|armv6m")
elseif("${arch}" MATCHES "^(armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
set(_arch "arm")
+ elseif("${arch}" MATCHES "^(armv8a|armv8r)$")
+set(_arch "arm")
+ elseif("${arch}" MATCHES "^(aarch64v8a)$")
+set(_arch "aarch64")
endif()
+ message(WARNING "supposed to work for target: " ${arch})
# For ARM archs, exclude any VFP builtins if VFP is not supported
if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
string(REPLACE ";" " " _TARGET_${arch}_CFLAGS
"${TARGET_${arch}_CFLAGS}")
@@ -589,8 +607,9 @@ else ()
# Needed for clear_cache on debug mode, due to r7's usage in inline asm.
# Release mode already sets it via -O2/3, Debug mode doesn't.
+ set(BUILTIN_HF_CFLAGS "")
if (${arch} STREQUAL "armhf")
-list(APPEND BUILTIN_CFLAGS -fomit-frame-pointer
-DCOMPILER_RT_ARMHF_TARGET)
+list(APPEND BUILTIN_HF_CFLAGS -fomit-frame-pointer
-DCOMPILER_RT_ARMHF_TARGET)
endif()
# For RISCV32, we must force enable int128 for compiling long
@@ -604,7 +623,7 @@ else ()
ARCHS ${arch}
SOURCES ${${arch}_SOURCES}
DEFS ${BUILTIN_DEFS}
- CFLAGS ${BUILTIN_CFLAGS}
+ CFLAGS ${BUILTIN_CFLAGS} ${BUILTIN_HF_CFLAGS}
PARENT_TARGET builtins)
endif ()
endforeach ()
diff --git a/compiler-rt/lib/builtins/int_util.c
b/compiler-rt/lib/builtins/int_util.c
index de87410dbca28..b7e6a1c90741f 100644
--- a/compiler-rt/lib/builtins/int_util.c
+++ b/compiler-rt/lib/builtins/int_util.c
@@ -45,7 +45,7 @@ void compilerrt_abort_impl(const char *file, int line, const
char *function) {
__assert_rtn(function, file, line, "libcompiler_rt abort");
}
-#elif __Fuchsia__
+#elif 1
#ifndef _WIN32
__attribute__((weak))
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [libcxx] 344c7a1 - Add basic C++ library support.
Author: Konstantin Schwarz
Date: 2019-01-17T12:24:02+01:00
New Revision: 344c7a13c1e0d48c89165365d9637dc0bef408a2
URL:
https://github.com/llvm/llvm-project/commit/344c7a13c1e0d48c89165365d9637dc0bef408a2
DIFF:
https://github.com/llvm/llvm-project/commit/344c7a13c1e0d48c89165365d9637dc0bef408a2.diff
LOG: Add basic C++ library support.
Added:
libcxx/include/support/hightec/locale_htc.h
Modified:
libcxx/include/CMakeLists.txt
libcxx/include/__config
libcxx/include/__locale
libcxx/include/math.h
libcxx/src/locale.cpp
libcxx/src/random.cpp
Removed:
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index d9def18d725c4..80663b1631232 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -168,6 +168,7 @@ if(LIBCXX_INSTALL_SUPPORT_HEADERS)
${files}
support/android/locale_bionic.h
support/fuchsia/xlocale.h
+support/hightec/locale_htc.h
support/ibm/limits.h
support/ibm/locale_mgmt_aix.h
support/ibm/support.h
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 639d06c9f5d70..840da61978a36 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -307,6 +307,8 @@
# define _LIBCPP_USING_NACL_RANDOM
#elif defined(_LIBCPP_WIN32API)
# define _LIBCPP_USING_WIN32_RANDOM
+#elif defined(__HIGHTEC__)
+// Do not define anything here for HighTec
#else
# define _LIBCPP_USING_DEV_RANDOM
#endif
@@ -979,6 +981,10 @@ template struct __static_assert_check {};
#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
#endif
+#if defined(__HIGHTEC__)
+#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
+#endif
+
#if defined(__APPLE__)
# if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index f43e7b4303d34..2a71c7d279e9a 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -37,6 +37,8 @@
# include
#elif defined(_LIBCPP_HAS_MUSL_LIBC)
# include
+#elif defined(__HIGHTEC__)
+# include
#endif
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/math.h b/libcxx/include/math.h
index 3cc72aa2791e3..d28194c2992a9 100644
--- a/libcxx/include/math.h
+++ b/libcxx/include/math.h
@@ -298,6 +298,8 @@ long doubletruncl(long double x);
#pragma GCC system_header
#endif
+#include
+
#include_next
#ifdef __cplusplus
@@ -306,7 +308,7 @@ long doubletruncl(long double x);
// back to C++ linkage before including these C++ headers.
extern "C++" {
-#include
+
#include
// signbit
diff --git a/libcxx/include/support/hightec/locale_htc.h
b/libcxx/include/support/hightec/locale_htc.h
new file mode 100644
index 0..7f06f8e243633
--- /dev/null
+++ b/libcxx/include/support/hightec/locale_htc.h
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//=== support/hightec/locale_htc.h -===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===--===//
+
+#ifndef _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
+#define _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
+
+#include
+
+// Add definition for isascii function, which is not part of ISO C
+static inline int isascii(int c) {
+ return c == (c & 0x7f);
+}
+
+// Patch over lack of extended locale support
+typedef void *locale_t;
+
+static inline locale_t duplocale(locale_t) {
+ return NULL;
+}
+
+static inline void freelocale(locale_t) {
+}
+
+static inline locale_t newlocale(int, const char *, locale_t) {
+ return NULL;
+}
+
+static inline locale_t uselocale(locale_t) {
+ return NULL;
+}
+
+#define LC_COLLATE_MASK (LC_COLLATE)
+#define LC_CTYPE_MASK(LC_CTYPE)
+#define LC_MESSAGES_MASK (LC_MESSAGES)
+#define LC_MONETARY_MASK (LC_MONETARY)
+#define LC_NUMERIC_MASK (LC_NUMERIC)
+#define LC_TIME_MASK (LC_TIME)
+#define LC_ALL_MASK (LC_COLLATE_MASK|\
+ LC_CTYPE_MASK|\
+ LC_MONETARY_MASK|\
+ LC_NUMERIC_MASK|\
+ LC_TIME_MASK|\
+ LC_MESSAGES_MASK)
+
+#include
+#include
+
+
+#endif // _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp
index b9c701137df2d..0a23aba354697 100644
--- a/libcxx/src/locale.cpp
+++ b/libcxx/src/locale.cpp
@@ -31,6 +31,8 @@
#include "__sso_allocator"
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
#include "support/win32/locale_win32.h"
+#elif defined(__HIGHTEC__)
+
#elif !defined(__BIONIC__)
#include
#endif
diff --git a/libcxx/src/random.cpp b/libcxx/src/random.cpp
index 4a2468368d065..90a822d9a247c 100644
--- a/libcxx/src/random.cpp
+++ b/libcxx/src/random.cpp
@@ -166,6 +166
[llvm-branch-commits] [libcxx] 344c7a1 - Add basic C++ library support.
Author: Konstantin Schwarz
Date: 2019-01-17T12:24:02+01:00
New Revision: 344c7a13c1e0d48c89165365d9637dc0bef408a2
URL:
https://github.com/llvm/llvm-project/commit/344c7a13c1e0d48c89165365d9637dc0bef408a2
DIFF:
https://github.com/llvm/llvm-project/commit/344c7a13c1e0d48c89165365d9637dc0bef408a2.diff
LOG: Add basic C++ library support.
Added:
libcxx/include/support/hightec/locale_htc.h
Modified:
libcxx/include/CMakeLists.txt
libcxx/include/__config
libcxx/include/__locale
libcxx/include/math.h
libcxx/src/locale.cpp
libcxx/src/random.cpp
Removed:
diff --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index d9def18d725c4..80663b1631232 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -168,6 +168,7 @@ if(LIBCXX_INSTALL_SUPPORT_HEADERS)
${files}
support/android/locale_bionic.h
support/fuchsia/xlocale.h
+support/hightec/locale_htc.h
support/ibm/limits.h
support/ibm/locale_mgmt_aix.h
support/ibm/support.h
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 639d06c9f5d70..840da61978a36 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -307,6 +307,8 @@
# define _LIBCPP_USING_NACL_RANDOM
#elif defined(_LIBCPP_WIN32API)
# define _LIBCPP_USING_WIN32_RANDOM
+#elif defined(__HIGHTEC__)
+// Do not define anything here for HighTec
#else
# define _LIBCPP_USING_DEV_RANDOM
#endif
@@ -979,6 +981,10 @@ template struct __static_assert_check {};
#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
#endif
+#if defined(__HIGHTEC__)
+#define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
+#endif
+
#if defined(__APPLE__)
# if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \
defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__)
diff --git a/libcxx/include/__locale b/libcxx/include/__locale
index f43e7b4303d34..2a71c7d279e9a 100644
--- a/libcxx/include/__locale
+++ b/libcxx/include/__locale
@@ -37,6 +37,8 @@
# include
#elif defined(_LIBCPP_HAS_MUSL_LIBC)
# include
+#elif defined(__HIGHTEC__)
+# include
#endif
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
diff --git a/libcxx/include/math.h b/libcxx/include/math.h
index 3cc72aa2791e3..d28194c2992a9 100644
--- a/libcxx/include/math.h
+++ b/libcxx/include/math.h
@@ -298,6 +298,8 @@ long doubletruncl(long double x);
#pragma GCC system_header
#endif
+#include
+
#include_next
#ifdef __cplusplus
@@ -306,7 +308,7 @@ long doubletruncl(long double x);
// back to C++ linkage before including these C++ headers.
extern "C++" {
-#include
+
#include
// signbit
diff --git a/libcxx/include/support/hightec/locale_htc.h
b/libcxx/include/support/hightec/locale_htc.h
new file mode 100644
index 0..7f06f8e243633
--- /dev/null
+++ b/libcxx/include/support/hightec/locale_htc.h
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//=== support/hightec/locale_htc.h -===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===--===//
+
+#ifndef _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
+#define _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
+
+#include
+
+// Add definition for isascii function, which is not part of ISO C
+static inline int isascii(int c) {
+ return c == (c & 0x7f);
+}
+
+// Patch over lack of extended locale support
+typedef void *locale_t;
+
+static inline locale_t duplocale(locale_t) {
+ return NULL;
+}
+
+static inline void freelocale(locale_t) {
+}
+
+static inline locale_t newlocale(int, const char *, locale_t) {
+ return NULL;
+}
+
+static inline locale_t uselocale(locale_t) {
+ return NULL;
+}
+
+#define LC_COLLATE_MASK (LC_COLLATE)
+#define LC_CTYPE_MASK(LC_CTYPE)
+#define LC_MESSAGES_MASK (LC_MESSAGES)
+#define LC_MONETARY_MASK (LC_MONETARY)
+#define LC_NUMERIC_MASK (LC_NUMERIC)
+#define LC_TIME_MASK (LC_TIME)
+#define LC_ALL_MASK (LC_COLLATE_MASK|\
+ LC_CTYPE_MASK|\
+ LC_MONETARY_MASK|\
+ LC_NUMERIC_MASK|\
+ LC_TIME_MASK|\
+ LC_MESSAGES_MASK)
+
+#include
+#include
+
+
+#endif // _LIBCPP_SUPPORT_HIGHTEC_LOCALE_HTC_H
diff --git a/libcxx/src/locale.cpp b/libcxx/src/locale.cpp
index b9c701137df2d..0a23aba354697 100644
--- a/libcxx/src/locale.cpp
+++ b/libcxx/src/locale.cpp
@@ -31,6 +31,8 @@
#include "__sso_allocator"
#if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
#include "support/win32/locale_win32.h"
+#elif defined(__HIGHTEC__)
+
#elif !defined(__BIONIC__)
#include
#endif
diff --git a/libcxx/src/random.cpp b/libcxx/src/random.cpp
index 4a2468368d065..90a822d9a247c 100644
--- a/libcxx/src/random.cpp
+++ b/libcxx/src/random.cpp
@@ -166,6 +166
[llvm-branch-commits] [libunwind] 5f46db7 - Add CMake option for configuring libunwind bare-metal build
Author: Konstantin Schwarz
Date: 2019-01-17T12:37:40+01:00
New Revision: 5f46db7c176433d7a81ed06e66dd5f3c4a4cae14
URL:
https://github.com/llvm/llvm-project/commit/5f46db7c176433d7a81ed06e66dd5f3c4a4cae14
DIFF:
https://github.com/llvm/llvm-project/commit/5f46db7c176433d7a81ed06e66dd5f3c4a4cae14.diff
LOG: Add CMake option for configuring libunwind bare-metal build
Added:
Modified:
libunwind/CMakeLists.txt
Removed:
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index e460a72d45c07..a49e482807e7d 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -134,6 +134,7 @@ option(LIBUNWIND_ENABLE_ARM_WMMX "Enable unwinding support
for ARM WMMX register
option(LIBUNWIND_ENABLE_THREADS "Build libunwind with threading support." ON)
option(LIBUNWIND_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
option(LIBUNWIND_INCLUDE_DOCS "Build the libunwind documentation."
${LLVM_INCLUDE_DOCS})
+option(LIBUNWIND_BAREMETAL "Build libunwind for baremetal targets." OFF)
set(LIBUNWIND_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE STRING
"Define suffix of library directory name (32/64)")
@@ -332,6 +333,10 @@ if (WIN32 AND LIBUNWIND_ENABLE_STATIC AND NOT
LIBUNWIND_ENABLE_SHARED)
add_definitions(-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS)
endif()
+if (LIBUNWIND_BAREMETAL)
+ list(APPEND LIBUNWIND_COMPILE_FLAGS -D_LIBUNWIND_IS_BAREMETAL)
+endif()
+
#===
# Setup Source Code
#===
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [libunwind] 5f46db7 - Add CMake option for configuring libunwind bare-metal build
Author: Konstantin Schwarz
Date: 2019-01-17T12:37:40+01:00
New Revision: 5f46db7c176433d7a81ed06e66dd5f3c4a4cae14
URL:
https://github.com/llvm/llvm-project/commit/5f46db7c176433d7a81ed06e66dd5f3c4a4cae14
DIFF:
https://github.com/llvm/llvm-project/commit/5f46db7c176433d7a81ed06e66dd5f3c4a4cae14.diff
LOG: Add CMake option for configuring libunwind bare-metal build
Added:
Modified:
libunwind/CMakeLists.txt
Removed:
diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt
index e460a72d45c07..a49e482807e7d 100644
--- a/libunwind/CMakeLists.txt
+++ b/libunwind/CMakeLists.txt
@@ -134,6 +134,7 @@ option(LIBUNWIND_ENABLE_ARM_WMMX "Enable unwinding support
for ARM WMMX register
option(LIBUNWIND_ENABLE_THREADS "Build libunwind with threading support." ON)
option(LIBUNWIND_USE_COMPILER_RT "Use compiler-rt instead of libgcc" OFF)
option(LIBUNWIND_INCLUDE_DOCS "Build the libunwind documentation."
${LLVM_INCLUDE_DOCS})
+option(LIBUNWIND_BAREMETAL "Build libunwind for baremetal targets." OFF)
set(LIBUNWIND_LIBDIR_SUFFIX "${LLVM_LIBDIR_SUFFIX}" CACHE STRING
"Define suffix of library directory name (32/64)")
@@ -332,6 +333,10 @@ if (WIN32 AND LIBUNWIND_ENABLE_STATIC AND NOT
LIBUNWIND_ENABLE_SHARED)
add_definitions(-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS)
endif()
+if (LIBUNWIND_BAREMETAL)
+ list(APPEND LIBUNWIND_COMPILE_FLAGS -D_LIBUNWIND_IS_BAREMETAL)
+endif()
+
#===
# Setup Source Code
#===
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [lld] 2ca7535 - Revert all changes done on the htc/master branch.
Author: Konstantin Schwarz
Date: 2019-09-03T11:55:46+02:00
New Revision: 2ca7535d6caa77de04bf3d80171376d26bde3729
URL:
https://github.com/llvm/llvm-project/commit/2ca7535d6caa77de04bf3d80171376d26bde3729
DIFF:
https://github.com/llvm/llvm-project/commit/2ca7535d6caa77de04bf3d80171376d26bde3729.diff
LOG: Revert all changes done on the htc/master branch.
For upcoming toolchains, we need a new concept for RLM license checks.
Moreover, the HighTec driver was mostly rewritten on the htc/release/7.x branch.
The changes are still available for later (partial) reuse.
Added:
Modified:
clang/lib/Basic/Targets.cpp
clang/lib/Basic/Targets.h
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/ARM.cpp
clang/lib/Basic/Version.cpp
clang/lib/Driver/CMakeLists.txt
clang/lib/Driver/Driver.cpp
clang/lib/Frontend/InitHeaderSearch.cpp
clang/tools/driver/CMakeLists.txt
clang/tools/driver/driver.cpp
compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/int_util.c
libcxx/include/CMakeLists.txt
libcxx/include/__config
libcxx/include/__locale
libcxx/include/math.h
libcxx/src/locale.cpp
libcxx/src/random.cpp
libunwind/CMakeLists.txt
lld/Common/Version.cpp
Removed:
clang/lib/Driver/ToolChains/HighTec.cpp
clang/lib/Driver/ToolChains/HighTec.h
clang/rlm_libs/x64_l/librlm.a
clang/rlm_libs/x64_w/rlm1233.dll
clang/rlm_libs/x64_w/rlm1233.lib
clang/tools/driver/LicenseManagerBase.cpp
clang/tools/driver/LicenseManagerBase.h
clang/tools/driver/license.h
libcxx/include/support/hightec/locale_htc.h
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 5ee68fd92ce2a..1ef2fe3b81416 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -112,10 +112,6 @@ void addMinGWDefines(const llvm::Triple &Triple, const
LangOptions &Opts,
addCygMingDefines(Opts, Builder);
}
-void addHighTecDefines(MacroBuilder &Builder) {
- Builder.defineMacro("__HIGHTEC__");
-}
-
//===--===//
// Driver code
//===--===//
diff --git a/clang/lib/Basic/Targets.h b/clang/lib/Basic/Targets.h
index 3c31890c8e15b..d450aa3f37ed6 100644
--- a/clang/lib/Basic/Targets.h
+++ b/clang/lib/Basic/Targets.h
@@ -46,9 +46,6 @@ void addMinGWDefines(const llvm::Triple &Triple, const
clang::LangOptions &Opts,
LLVM_LIBRARY_VISIBILITY
void addCygMingDefines(const clang::LangOptions &Opts,
clang::MacroBuilder &Builder);
-
-LLVM_LIBRARY_VISIBILITY
-void addHighTecDefines(clang::MacroBuilder &Builder);
} // namespace targets
} // namespace clang
#endif // LLVM_CLANG_LIB_BASIC_TARGETS_H
diff --git a/clang/lib/Basic/Targets/AArch64.cpp
b/clang/lib/Basic/Targets/AArch64.cpp
index ddca8369b7423..3444591ac5933 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -211,8 +211,6 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions
&Opts,
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
-
- addHighTecDefines(Builder);
}
ArrayRef AArch64TargetInfo::getTargetBuiltins() const {
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 8d49f124c854a..19fcc5abea97e 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -752,8 +752,6 @@ void ARMTargetInfo::getTargetDefines(const LangOptions
&Opts,
getTargetDefinesARMV82A(Opts, Builder);
break;
}
-
- addHighTecDefines(Builder);
}
const Builtin::Info ARMTargetInfo::BuiltinInfo[] = {
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp
index bef40f9f1201c..c2b7753d41288 100644
--- a/clang/lib/Basic/Version.cpp
+++ b/clang/lib/Basic/Version.cpp
@@ -25,7 +25,6 @@
namespace clang {
std::string getClangRepositoryPath() {
- return "clang:";
#if defined(CLANG_REPOSITORY_STRING)
return CLANG_REPOSITORY_STRING;
#else
@@ -56,7 +55,6 @@ std::string getClangRepositoryPath() {
}
std::string getLLVMRepositoryPath() {
- return "llvm: ";
#ifdef LLVM_REPOSITORY
StringRef URL(LLVM_REPOSITORY);
#else
diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt
index 637907aa91fe3..2b03c9f7001f7 100644
--- a/clang/lib/Driver/CMakeLists.txt
+++ b/clang/lib/Driver/CMakeLists.txt
@@ -45,7 +45,6 @@ add_clang_library(clangDriver
ToolChains/Fuchsia.cpp
ToolChains/Gnu.cpp
ToolChains/Haiku.cpp
- ToolChains/HighTec.cpp
ToolChains/HIP.cpp
ToolChains/Hexagon.cpp
ToolChains/Linux.cpp
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cp
[llvm-branch-commits] [lld] 2ca7535 - Revert all changes done on the htc/master branch.
Author: Konstantin Schwarz
Date: 2019-09-03T11:55:46+02:00
New Revision: 2ca7535d6caa77de04bf3d80171376d26bde3729
URL:
https://github.com/llvm/llvm-project/commit/2ca7535d6caa77de04bf3d80171376d26bde3729
DIFF:
https://github.com/llvm/llvm-project/commit/2ca7535d6caa77de04bf3d80171376d26bde3729.diff
LOG: Revert all changes done on the htc/master branch.
For upcoming toolchains, we need a new concept for RLM license checks.
Moreover, the HighTec driver was mostly rewritten on the htc/release/7.x branch.
The changes are still available for later (partial) reuse.
Added:
Modified:
clang/lib/Basic/Targets.cpp
clang/lib/Basic/Targets.h
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/ARM.cpp
clang/lib/Basic/Version.cpp
clang/lib/Driver/CMakeLists.txt
clang/lib/Driver/Driver.cpp
clang/lib/Frontend/InitHeaderSearch.cpp
clang/tools/driver/CMakeLists.txt
clang/tools/driver/driver.cpp
compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/int_util.c
libcxx/include/CMakeLists.txt
libcxx/include/__config
libcxx/include/__locale
libcxx/include/math.h
libcxx/src/locale.cpp
libcxx/src/random.cpp
libunwind/CMakeLists.txt
lld/Common/Version.cpp
Removed:
clang/lib/Driver/ToolChains/HighTec.cpp
clang/lib/Driver/ToolChains/HighTec.h
clang/rlm_libs/x64_l/librlm.a
clang/rlm_libs/x64_w/rlm1233.dll
clang/rlm_libs/x64_w/rlm1233.lib
clang/tools/driver/LicenseManagerBase.cpp
clang/tools/driver/LicenseManagerBase.h
clang/tools/driver/license.h
libcxx/include/support/hightec/locale_htc.h
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index 5ee68fd92ce2a..1ef2fe3b81416 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -112,10 +112,6 @@ void addMinGWDefines(const llvm::Triple &Triple, const
LangOptions &Opts,
addCygMingDefines(Opts, Builder);
}
-void addHighTecDefines(MacroBuilder &Builder) {
- Builder.defineMacro("__HIGHTEC__");
-}
-
//===--===//
// Driver code
//===--===//
diff --git a/clang/lib/Basic/Targets.h b/clang/lib/Basic/Targets.h
index 3c31890c8e15b..d450aa3f37ed6 100644
--- a/clang/lib/Basic/Targets.h
+++ b/clang/lib/Basic/Targets.h
@@ -46,9 +46,6 @@ void addMinGWDefines(const llvm::Triple &Triple, const
clang::LangOptions &Opts,
LLVM_LIBRARY_VISIBILITY
void addCygMingDefines(const clang::LangOptions &Opts,
clang::MacroBuilder &Builder);
-
-LLVM_LIBRARY_VISIBILITY
-void addHighTecDefines(clang::MacroBuilder &Builder);
} // namespace targets
} // namespace clang
#endif // LLVM_CLANG_LIB_BASIC_TARGETS_H
diff --git a/clang/lib/Basic/Targets/AArch64.cpp
b/clang/lib/Basic/Targets/AArch64.cpp
index ddca8369b7423..3444591ac5933 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -211,8 +211,6 @@ void AArch64TargetInfo::getTargetDefines(const LangOptions
&Opts,
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4");
Builder.defineMacro("__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8");
-
- addHighTecDefines(Builder);
}
ArrayRef AArch64TargetInfo::getTargetBuiltins() const {
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp
index 8d49f124c854a..19fcc5abea97e 100644
--- a/clang/lib/Basic/Targets/ARM.cpp
+++ b/clang/lib/Basic/Targets/ARM.cpp
@@ -752,8 +752,6 @@ void ARMTargetInfo::getTargetDefines(const LangOptions
&Opts,
getTargetDefinesARMV82A(Opts, Builder);
break;
}
-
- addHighTecDefines(Builder);
}
const Builtin::Info ARMTargetInfo::BuiltinInfo[] = {
diff --git a/clang/lib/Basic/Version.cpp b/clang/lib/Basic/Version.cpp
index bef40f9f1201c..c2b7753d41288 100644
--- a/clang/lib/Basic/Version.cpp
+++ b/clang/lib/Basic/Version.cpp
@@ -25,7 +25,6 @@
namespace clang {
std::string getClangRepositoryPath() {
- return "clang:";
#if defined(CLANG_REPOSITORY_STRING)
return CLANG_REPOSITORY_STRING;
#else
@@ -56,7 +55,6 @@ std::string getClangRepositoryPath() {
}
std::string getLLVMRepositoryPath() {
- return "llvm: ";
#ifdef LLVM_REPOSITORY
StringRef URL(LLVM_REPOSITORY);
#else
diff --git a/clang/lib/Driver/CMakeLists.txt b/clang/lib/Driver/CMakeLists.txt
index 637907aa91fe3..2b03c9f7001f7 100644
--- a/clang/lib/Driver/CMakeLists.txt
+++ b/clang/lib/Driver/CMakeLists.txt
@@ -45,7 +45,6 @@ add_clang_library(clangDriver
ToolChains/Fuchsia.cpp
ToolChains/Gnu.cpp
ToolChains/Haiku.cpp
- ToolChains/HighTec.cpp
ToolChains/HIP.cpp
ToolChains/Hexagon.cpp
ToolChains/Linux.cpp
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cp
[llvm-branch-commits] [llvm] 59289a8 - [AA] Handle callbr instructions in alias analysis
Author: Ricky Zhou
Date: 2021-12-21T10:14:25-08:00
New Revision: 59289a837b0080378ffd0c70b1aac6585ab21e15
URL:
https://github.com/llvm/llvm-project/commit/59289a837b0080378ffd0c70b1aac6585ab21e15
DIFF:
https://github.com/llvm/llvm-project/commit/59289a837b0080378ffd0c70b1aac6585ab21e15.diff
LOG: [AA] Handle callbr instructions in alias analysis
Before this change, AAResults::getModRefInfo() was missing a case for
callbr instructions (asm goto), which may read/write memory. In PR52735,
this led to a miscompile where a load was incorrect eliminated.
Add this missing case, as well as an assert verifying that all
memory-accessing instructions are handled properly.
Fixes #52735.
Differential Revision: https://reviews.llvm.org/D115992
(cherry picked from commit 9927a06f74bb48e1e5a53fb686301c71f0dec46a)
Added:
llvm/test/Analysis/BasicAA/pr52735.ll
Modified:
llvm/lib/Analysis/AliasAnalysis.cpp
Removed:
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp
b/llvm/lib/Analysis/AliasAnalysis.cpp
index e7445e225d529..1da712eb9d264 100644
--- a/llvm/lib/Analysis/AliasAnalysis.cpp
+++ b/llvm/lib/Analysis/AliasAnalysis.cpp
@@ -697,14 +697,16 @@ ModRefInfo AAResults::getModRefInfo(const Instruction *I,
case Instruction::AtomicRMW:
return getModRefInfo((const AtomicRMWInst *)I, Loc, AAQIP);
case Instruction::Call:
-return getModRefInfo((const CallInst *)I, Loc, AAQIP);
+ case Instruction::CallBr:
case Instruction::Invoke:
-return getModRefInfo((const InvokeInst *)I, Loc, AAQIP);
+return getModRefInfo((const CallBase *)I, Loc, AAQIP);
case Instruction::CatchPad:
return getModRefInfo((const CatchPadInst *)I, Loc, AAQIP);
case Instruction::CatchRet:
return getModRefInfo((const CatchReturnInst *)I, Loc, AAQIP);
default:
+assert(!I->mayReadOrWriteMemory() &&
+ "Unhandled memory access instruction!");
return ModRefInfo::NoModRef;
}
}
diff --git a/llvm/test/Analysis/BasicAA/pr52735.ll
b/llvm/test/Analysis/BasicAA/pr52735.ll
new file mode 100644
index 0..5b78ab595c50b
--- /dev/null
+++ b/llvm/test/Analysis/BasicAA/pr52735.ll
@@ -0,0 +1,29 @@
+; RUN: opt %s -basic-aa -aa-eval -print-all-alias-modref-info -disable-output
2>&1 | FileCheck %s
+;
+; Generated from:
+;
+; int foo() {
+; int v;
+; asm goto("movl $1, %0" : "=m"(v)::: out);
+; out:
+; return v;
+; }
+
+target triple = "x86_64-unknown-linux-gnu"
+
+; CHECK: MayAlias: i32* %v, void (i32*, i8*)* asm "movl $$1, $0",
"=*m,X,~{dirflag},~{fpsr},~{flags}"
+
+define dso_local i32 @foo() {
+entry:
+ %v = alloca i32, align 4
+ %0 = bitcast i32* %v to i8*
+ callbr void asm "movl $$1, $0", "=*m,X,~{dirflag},~{fpsr},~{flags}"(i32*
nonnull %v, i8* blockaddress(@foo, %out))
+ to label %asm.fallthrough [label %out]
+
+asm.fallthrough:
+ br label %out
+
+out:
+ %1 = load i32, i32* %v, align 4
+ ret i32 %1
+}
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] b40f07b - [msan] Add stat-family interceptors on Linux
Author: Nikita Malyavin
Date: 2021-12-21T10:18:44-08:00
New Revision: b40f07b048c40b340e4bf87e53dc134847b78205
URL:
https://github.com/llvm/llvm-project/commit/b40f07b048c40b340e4bf87e53dc134847b78205
DIFF:
https://github.com/llvm/llvm-project/commit/b40f07b048c40b340e4bf87e53dc134847b78205.diff
LOG: [msan] Add stat-family interceptors on Linux
Add following interceptors on Linux: stat, lstat, fstat, fstatat.
This fixes use-of-uninitialized value on platforms with GLIBC 2.33+.
In particular: Arch Linux, Ubuntu hirsute/impish.
The tests should have also been failing during the release on the mentioned
platforms, but I cannot find any related discussion.
Most likely, the regression was introduced by glibc commit [[
https://github.com/bminor/glibc/commit/8ed005daf0ab03e142500324a34087ce179ae78e
| 8ed005daf0ab03e14250032 ]]:
all stat-family functions are now exported as shared functions.
Before, some of them (namely stat, lstat, fstat, fstatat) were provided as a
part of libc_noshared.a and called their __xstat dopplegangers. This is still
true for Debian Sid and earlier Ubuntu's. stat interceptors may be safely
provided for them, no problem with that.
Closes https://github.com/google/sanitizers/issues/1452.
See also https://jira.mariadb.org/browse/MDEV-24841
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D111984
(cherry picked from commit 4e1a6c07052b466a2a1cd0c3ff150e4e89a6d87a)
Added:
Modified:
compiler-rt/lib/msan/msan_interceptors.cpp
compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h
Removed:
diff --git a/compiler-rt/lib/msan/msan_interceptors.cpp
b/compiler-rt/lib/msan/msan_interceptors.cpp
index 760f74e927d09..b4392ddd3474f 100644
--- a/compiler-rt/lib/msan/msan_interceptors.cpp
+++ b/compiler-rt/lib/msan/msan_interceptors.cpp
@@ -656,7 +656,8 @@ INTERCEPTOR(int, putenv, char *string) {
return res;
}
-#if SANITIZER_FREEBSD || SANITIZER_NETBSD
+#define SANITIZER_STAT_LINUX (SANITIZER_LINUX && __GLIBC_PREREQ(2, 33))
+#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_STAT_LINUX
INTERCEPTOR(int, fstat, int fd, void *buf) {
ENSURE_MSAN_INITED();
int res = REAL(fstat)(fd, buf);
@@ -664,7 +665,7 @@ INTERCEPTOR(int, fstat, int fd, void *buf) {
__msan_unpoison(buf, __sanitizer::struct_stat_sz);
return res;
}
-#define MSAN_MAYBE_INTERCEPT_FSTAT INTERCEPT_FUNCTION(fstat)
+# define MSAN_MAYBE_INTERCEPT_FSTAT MSAN_INTERCEPT_FUNC(fstat)
#else
#define MSAN_MAYBE_INTERCEPT_FSTAT
#endif
@@ -677,7 +678,7 @@ INTERCEPTOR(int, __fxstat, int magic, int fd, void *buf) {
__msan_unpoison(buf, __sanitizer::struct_stat_sz);
return res;
}
-#define MSAN_MAYBE_INTERCEPT___FXSTAT INTERCEPT_FUNCTION(__fxstat)
+# define MSAN_MAYBE_INTERCEPT___FXSTAT MSAN_INTERCEPT_FUNC(__fxstat)
#else
#define MSAN_MAYBE_INTERCEPT___FXSTAT
#endif
@@ -690,20 +691,24 @@ INTERCEPTOR(int, __fxstat64, int magic, int fd, void
*buf) {
__msan_unpoison(buf, __sanitizer::struct_stat64_sz);
return res;
}
-#define MSAN_MAYBE_INTERCEPT___FXSTAT64 INTERCEPT_FUNCTION(__fxstat64)
+# define MSAN_MAYBE_INTERCEPT___FXSTAT64 MSAN_INTERCEPT_FUNC(__fxstat64)
#else
-#define MSAN_MAYBE_INTERCEPT___FXSTAT64
+# define MSAN_MAYBE_INTERCEPT___FXSTAT64
#endif
-#if SANITIZER_FREEBSD || SANITIZER_NETBSD
+#if SANITIZER_FREEBSD || SANITIZER_NETBSD || SANITIZER_STAT_LINUX
INTERCEPTOR(int, fstatat, int fd, char *pathname, void *buf, int flags) {
ENSURE_MSAN_INITED();
int res = REAL(fstatat)(fd, pathname, buf, flags);
if (!res) __msan_unpoison(buf, __sanitizer::struct_stat_sz);
return res;
}
-# define MSAN_INTERCEPT_FSTATAT INTERCEPT_FUNCTION(fstatat)
+# define MSAN_MAYBE_INTERCEPT_FSTATAT MSAN_INTERCEPT_FUNC(fstatat)
#else
+# define MSAN_MAYBE_INTERCEPT_FSTATAT
+#endif
+
+#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD
INTERCEPTOR(int, __fxstatat, int magic, int fd, char *pathname, void *buf,
int flags) {
ENSURE_MSAN_INITED();
@@ -711,7 +716,9 @@ INTERCEPTOR(int, __fxstatat, int magic, int fd, char
*pathname, void *buf,
if (!res) __msan_unpoison(buf, __sanitizer::struct_stat_sz);
return res;
}
-# define MSAN_INTERCEPT_FSTATAT INTERCEPT_FUNCTION(__fxstatat)
+# define MSAN_MAYBE_INTERCEPT___FXSTATAT MSAN_INTERCEPT_FUNC(__fxstatat)
+#else
+# define MSAN_MAYBE_INTERCEPT___FXSTATAT
#endif
#if !SANITIZER_FREEBSD && !SANITIZER_NETBSD
@@ -722,9 +729,9 @@ INTERCEPTOR(int, __fxstatat64, int magic, int fd, char
*pathname, void *buf,
if (!res) __msan_unpoison(buf, __sanitizer::struct_stat64_sz);
return res;
}
-#define MSAN_MAYBE_INTERCEPT___FXSTATAT64 INTERCEPT_FUNCTION(__fxstatat64)
+# define MSAN_MAYBE_INTERCEPT___FXSTATAT64 MSAN_INTERCEPT_FUNC(__fxstatat64)
#else
-#define MSAN_MAYBE_INTERCEPT___FXSTATAT64
+# define MSAN_MAYBE_INTERCEPT___FXSTATAT64
#endif
INTERCEPTOR(int, pipe, int pipefd[2]) {
@@ -1686,7 +1693,8 @
[llvm-branch-commits] [compiler-rt] abc0cf9 - [sanitizer] Intercept lstat on Linux
Author: Vitaly Buka Date: 2021-12-21T10:18:50-08:00 New Revision: abc0cf92bb14e1cf5a7f682dc5d3179e168ac145 URL: https://github.com/llvm/llvm-project/commit/abc0cf92bb14e1cf5a7f682dc5d3179e168ac145 DIFF: https://github.com/llvm/llvm-project/commit/abc0cf92bb14e1cf5a7f682dc5d3179e168ac145.diff LOG: [sanitizer] Intercept lstat on Linux It's availible from GLIBC 2.33 Fixes use-of-uninitialized-value llvm/lib/Support/Unix/Path.inc:467:29 in llvm::sys::fs::remove(llvm::Twine const&, bool) (cherry picked from commit 39ead64e3f73045c7e0c72aed08c14b277828fb4) Added: Modified: compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h Removed: diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h index 586cae946ae2f..b0e01930a379d 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_interceptors.h @@ -461,9 +461,9 @@ #define SANITIZER_INTERCEPT_STAT\ (SI_FREEBSD || SI_MAC || SI_ANDROID || SI_NETBSD || SI_SOLARIS || \ SI_STAT_LINUX) -#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD) -#define SANITIZER_INTERCEPT___XSTAT \ - (!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX +#define SANITIZER_INTERCEPT_LSTAT (SI_NETBSD || SI_FREEBSD || SI_STAT_LINUX) +#define SANITIZER_INTERCEPT___XSTAT \ + ((!SANITIZER_INTERCEPT_STAT && SI_POSIX) || SI_STAT_LINUX) #define SANITIZER_INTERCEPT___XSTAT64 SI_LINUX_NOT_ANDROID #define SANITIZER_INTERCEPT___LXSTAT SANITIZER_INTERCEPT___XSTAT #define SANITIZER_INTERCEPT___LXSTAT64 SI_LINUX_NOT_ANDROID ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [compiler-rt] d9f927f - [sanitizer] Disable test incompartible with recert GLIBC
Author: Vitaly Buka
Date: 2021-12-21T16:29:58-08:00
New Revision: d9f927f2cfe8d96cf68c71589d69e777b373ae73
URL:
https://github.com/llvm/llvm-project/commit/d9f927f2cfe8d96cf68c71589d69e777b373ae73
DIFF:
https://github.com/llvm/llvm-project/commit/d9f927f2cfe8d96cf68c71589d69e777b373ae73.diff
LOG: [sanitizer] Disable test incompartible with recert GLIBC
(rebased for 13.0.1)
Added:
Modified:
compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp
Removed:
diff --git
a/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp
b/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp
index 0ffb346ebb450..5ea7fb872157f 100644
---
a/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp
+++
b/compiler-rt/test/sanitizer_common/TestCases/Linux/sysconf_interceptor_bypass_test.cpp
@@ -8,12 +8,13 @@
// getauxval() used instead of sysconf() in GetPageSize() is defined starting
// glbc version 2.16.
-#if __GLIBC_PREREQ(2, 16)
+// Does not work with 2.31 and above at it calls sysconf for SIGSTKSZ.
+#if __GLIBC_PREREQ(2, 16) && !__GLIBC_PREREQ(2, 31)
extern "C" long sysconf(int name) {
fprintf(stderr, "sysconf wrapper called\n");
return 0;
}
-#endif // defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 16)
+#endif
int main() {
// All we need to check is that the sysconf() interceptor defined above was
___
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] c95753f - [NFC][X86] Add MC tests for all untested VIA PadLock instructions
Author: Jessica Clarke Date: 2021-12-21T16:48:02-08:00 New Revision: c95753ff5c116134a5ff8029cf2c35c8b760a027 URL: https://github.com/llvm/llvm-project/commit/c95753ff5c116134a5ff8029cf2c35c8b760a027 DIFF: https://github.com/llvm/llvm-project/commit/c95753ff5c116134a5ff8029cf2c35c8b760a027.diff LOG: [NFC][X86] Add MC tests for all untested VIA PadLock instructions We currently only test the encoding of xstore but none of the other instructions, which should all have their implicit REP prefix be verified as working. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D112354 (cherry picked from commit b432583d28ee99313fa834139be9535639957d76) Added: Modified: llvm/test/MC/X86/padlock.s Removed: diff --git a/llvm/test/MC/X86/padlock.s b/llvm/test/MC/X86/padlock.s index f652bcf5473b0..c79d346fa23ee 100644 --- a/llvm/test/MC/X86/padlock.s +++ b/llvm/test/MC/X86/padlock.s @@ -3,3 +3,27 @@ xstore // CHECK: xstore // CHECK: encoding: [0xf3,0x0f,0xa7,0xc0] + xcryptecb +// CHECK: xcryptecb +// CHECK: encoding: [0xf3,0x0f,0xa7,0xc8] + xcryptcbc +// CHECK: xcryptcbc +// CHECK: encoding: [0xf3,0x0f,0xa7,0xd0] + xcryptctr +// CHECK: xcryptctr +// CHECK: encoding: [0xf3,0x0f,0xa7,0xd8] + xcryptcfb +// CHECK: xcryptcfb +// CHECK: encoding: [0xf3,0x0f,0xa7,0xe0] + xcryptofb +// CHECK: xcryptofb +// CHECK: encoding: [0xf3,0x0f,0xa7,0xe8] + xsha1 +// CHECK: xsha1 +// CHECK: encoding: [0xf3,0x0f,0xa6,0xc8] + xsha256 +// CHECK: xsha256 +// CHECK: encoding: [0xf3,0x0f,0xa6,0xd0] + montmul +// CHECK: montmul +// CHECK: encoding: [0xf3,0x0f,0xa6,0xc0] ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
[llvm-branch-commits] [llvm] ae24102 - [X86] Don't add implicit REP prefix to VIA PadLock xstore
Author: Jessica Clarke Date: 2021-12-21T16:48:10-08:00 New Revision: ae24102617c9c86552807a598fe6521ca9c6d7ee URL: https://github.com/llvm/llvm-project/commit/ae24102617c9c86552807a598fe6521ca9c6d7ee DIFF: https://github.com/llvm/llvm-project/commit/ae24102617c9c86552807a598fe6521ca9c6d7ee.diff LOG: [X86] Don't add implicit REP prefix to VIA PadLock xstore Commit 8fa3e8fa1492 added an implicit REP prefix to all VIA PadLock instructions, but GNU as doesn't add one to xstore, only all the others. This resulted in a kernel panic regression in FreeBSD upon updating to LLVM 11 (https://bugs.freebsd.org/259218) which includes the commit in question. This partially reverts that commit. Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D112355 (cherry picked from commit 2d8c18fbbdd1b07ab0d36ac49ef63f4d243afb8b) Added: Modified: llvm/lib/Target/X86/X86InstrSystem.td llvm/test/MC/X86/padlock.s Removed: diff --git a/llvm/lib/Target/X86/X86InstrSystem.td b/llvm/lib/Target/X86/X86InstrSystem.td index 48c27051a8723..355ddf26e3bb6 100644 --- a/llvm/lib/Target/X86/X86InstrSystem.td +++ b/llvm/lib/Target/X86/X86InstrSystem.td @@ -583,7 +583,7 @@ def XRSTORS64 : RI<0xC7, MRM3m, (outs), (ins opaquemem:$dst), //===--===// // VIA PadLock crypto instructions let Defs = [RAX, RDI], Uses = [RDX, RDI], SchedRW = [WriteSystem] in - def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB, REP; + def XSTORE : I<0xa7, MRM_C0, (outs), (ins), "xstore", []>, TB; def : InstAlias<"xstorerng", (XSTORE)>; diff --git a/llvm/test/MC/X86/padlock.s b/llvm/test/MC/X86/padlock.s index c79d346fa23ee..9f9b16294ea02 100644 --- a/llvm/test/MC/X86/padlock.s +++ b/llvm/test/MC/X86/padlock.s @@ -1,8 +1,11 @@ // RUN: llvm-mc -triple i386-unknown-unknown --show-encoding %s | FileCheck %s +/// Check xstore does not get an implicit REP prefix but all other PadLock +/// instructions do. + xstore // CHECK: xstore -// CHECK: encoding: [0xf3,0x0f,0xa7,0xc0] +// CHECK: encoding: [0x0f,0xa7,0xc0] xcryptecb // CHECK: xcryptecb // CHECK: encoding: [0xf3,0x0f,0xa7,0xc8] ___ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
