[llvm-branch-commits] [clang] 2b74728 - Add Hightec toolchain description

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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.

2021-12-21 Thread Konstantin Schwarz via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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

2021-12-21 Thread Tom Stellard via llvm-branch-commits

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