diff --git a/build/build-clang/clang-13.json b/build/build-clang/clang-14.json similarity index 51% rename from build/build-clang/clang-13.json rename to build/build-clang/clang-14.json index 073743eac995..36db72be25ac 100644 --- a/build/build-clang/clang-13.json +++ b/build/build-clang/clang-14.json @@ -9,13 +9,9 @@ "Remove-FlushViewOfFile-when-unmaping-gcda-files.patch", "fuzzing_ccov_build_clang_12.patch", "win64-no-symlink.patch", - "revert-llvmorg-13-init-8182-gc2297544c047.patch", - "revert-llvmorg-12-init-7827-g2a078c307204.patch", - "llvmorg-14-init-3166-gd9ab62ca3d29.patch", - "llvmorg-14-init-4465-g22ea0cea595e-v2.patch", - "llvmorg-14-init-10524-g1ad7de9e92bc.patch", - "llvmorg-14-init-12719-gc4b45eeb44fd.patch", - "llvmorg-14-init-13305-g319181f76718.patch", - "llvmorg-14-init-13854-g782791ee84d2.patch" + "revert-llvmorg-14-init-14141-gd6d3000a2f6d.patch", + "revert-llvmorg-14-init-11890-gf86deb18cab6.patch", + "llvmorg-15-init-283-g4db89e23190d.patch", + "llvmorg-15-init-7469-gcfa4fe7c5187.patch" ] } diff --git a/build/build-clang/clang-tidy-ci.patch b/build/build-clang/clang-tidy-ci.patch index 12c6fadc4f91..6c31752136ef 100644 --- a/build/build-clang/clang-tidy-ci.patch +++ b/build/build-clang/clang-tidy-ci.patch @@ -1,23 +1,31 @@ diff --git a/clang-tools-extra/clang-tidy/ClangTidy.cpp b/clang-tools-extra/clang-tidy/ClangTidy.cpp -index 73d66b980a5e..3b18de2176ba 100644 +index 7de313ad4da6..697f98c362d1 100644 --- a/clang-tools-extra/clang-tidy/ClangTidy.cpp +++ b/clang-tools-extra/clang-tidy/ClangTidy.cpp -@@ -432,6 +432,7 @@ ClangTidyASTConsumerFactory::CreateASTConsumer( - +@@ -432,6 +432,7 @@ ClangTidyASTConsumerFactory::createASTConsumer( + for (auto &Check : Checks) { Check->registerMatchers(&*Finder); + Check->registerPPCallbacks(Compiler); Check->registerPPCallbacks(*SM, PP, ModuleExpanderPP); } - + diff --git a/clang-tools-extra/clang-tidy/ClangTidyCheck.h b/clang-tools-extra/clang-tidy/ClangTidyCheck.h -index 20e9b8e47e6f..aded1f2e196c 100644 +index 9b41e5836de7..d8938b8fe05e 100644 --- a/clang-tools-extra/clang-tidy/ClangTidyCheck.h +++ b/clang-tools-extra/clang-tidy/ClangTidyCheck.h -@@ -70,6 +70,9 @@ public: +@@ -20,6 +20,7 @@ + + namespace clang { + ++class CompilerInstance; + class SourceManager; + + namespace tidy { +@@ -69,6 +70,9 @@ public: return true; } - + + /// This has been deprecated in clang 9 - needed by mozilla-must-override + virtual void registerPPCallbacks(CompilerInstance &Compiler) {} + diff --git a/build/build-clang/llvmorg-14-init-10524-g1ad7de9e92bc.patch b/build/build-clang/llvmorg-14-init-10524-g1ad7de9e92bc.patch deleted file mode 100644 index 4525228a6da6..000000000000 --- a/build/build-clang/llvmorg-14-init-10524-g1ad7de9e92bc.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 1ad7de9e92bc2977698e5f6d6493202b50c912d5 Mon Sep 17 00:00:00 2001 -From: Saleem Abdulrasool -Date: Wed, 24 Nov 2021 10:44:38 -0800 -Subject: [PATCH] Headers: exclude `#include_next ` on MSVC - -The 14.31.30818 toolset has the following in the `stdatomic.h`: -~~~ - #ifndef __cplusplus - #error is not yet supported when compiling as C, but this is planned for a future release. - #endif -~~~ - -This results in clang failing to build existing code which relied on -`stdatomic.h` in C mode on Windows. Simply fallback to the clang header -until that header is available as a complete implementation. ---- - clang/lib/Headers/stdatomic.h | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/clang/lib/Headers/stdatomic.h b/clang/lib/Headers/stdatomic.h -index 665551ea69a4..1e47bcb2bacf 100644 ---- a/clang/lib/Headers/stdatomic.h -+++ b/clang/lib/Headers/stdatomic.h -@@ -12,8 +12,12 @@ - - /* If we're hosted, fall back to the system's stdatomic.h. FreeBSD, for - * example, already has a Clang-compatible stdatomic.h header. -+ * -+ * Exclude the MSVC path as well as the MSVC header as of the 14.31.30818 -+ * explicitly disallows `stdatomic.h` in the C mode via an `#error`. Fallback -+ * to the clang resource header until that is fully supported. - */ --#if __STDC_HOSTED__ && __has_include_next() -+#if __STDC_HOSTED__ && __has_include_next() && !defined(_MSC_VER) - # include_next - #else - --- -2.35.0.1.g829a698654 - diff --git a/build/build-clang/llvmorg-14-init-12719-gc4b45eeb44fd.patch b/build/build-clang/llvmorg-14-init-12719-gc4b45eeb44fd.patch deleted file mode 100644 index d84b6c63fcf6..000000000000 --- a/build/build-clang/llvmorg-14-init-12719-gc4b45eeb44fd.patch +++ /dev/null @@ -1,86 +0,0 @@ -From c4b45eeb44fdc49d1b6199f242082268f8c017d0 Mon Sep 17 00:00:00 2001 -From: Nico Weber -Date: Fri, 17 Dec 2021 12:35:52 -0500 -Subject: [PATCH] [lld/mac] Don't lose "weak ref" bit when doing LTO - -Fixes #52778. - -Probably fixes Chromium crashing on startup on macOS 10.15 (and older) systems -when building with LTO, but I haven't verified that yet. - -Differential Revision: https://reviews.llvm.org/D115949 ---- - lld/MachO/InputFiles.cpp | 3 +-- - lld/test/MachO/lto-weak-ref.ll | 45 ++++++++++++++++++++++++++++++++++ - 2 files changed, 46 insertions(+), 2 deletions(-) - create mode 100644 lld/test/MachO/lto-weak-ref.ll - -diff --git a/lld/MachO/InputFiles.cpp b/lld/MachO/InputFiles.cpp -index a4fb9035193c..14cd224520f7 100644 ---- a/lld/MachO/InputFiles.cpp -+++ b/lld/MachO/InputFiles.cpp -@@ -1272,9 +1272,8 @@ static macho::Symbol *createBitcodeSymbol(const lto::InputFile::Symbol &objSym, - BitcodeFile &file) { - StringRef name = saver.save(objSym.getName()); - -- // TODO: support weak references - if (objSym.isUndefined()) -- return symtab->addUndefined(name, &file, /*isWeakRef=*/false); -+ return symtab->addUndefined(name, &file, /*isWeakRef=*/objSym.isWeak()); - - assert(!objSym.isCommon() && "TODO: support common symbols in LTO"); - -diff --git a/lld/test/MachO/lto-weak-ref.ll b/lld/test/MachO/lto-weak-ref.ll -new file mode 100644 -index 000000000000..b9dbd47dd415 ---- /dev/null -+++ b/lld/test/MachO/lto-weak-ref.ll -@@ -0,0 +1,45 @@ -+; REQUIRES: x86 -+ -+; RUN: rm -rf %t; split-file %s %t -+ -+; RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/dylib.s -o %t/dylib.o -+; RUN: %lld -dylib -lSystem %t/dylib.o -o %t/dylib.dylib -+ -+;; As baseline, compile the .ll file to a real .o file and check behavior. -+; RUN: llc -filetype=obj %t/weak-ref.ll -o %t/obj.o -+; RUN: %lld -dylib -lSystem %t/obj.o %t/dylib.dylib -o %t/test.obj -+; RUN: llvm-objdump --macho --syms %t/test.obj | FileCheck %s --check-prefixes=WEAK-REF -+ -+;; Check that we get the same behavior compiling the .ll file to a bitcode .o -+;; file and linking that. -+; RUN: opt -module-summary %t/weak-ref.ll -o %t/bitcode.o -+; RUN: %lld -dylib -lSystem %t/bitcode.o %t/dylib.dylib -o %t/test.lto -+; RUN: llvm-objdump --macho --syms %t/test.lto | FileCheck %s --check-prefixes=WEAK-REF -+ -+; WEAK-REF: SYMBOL TABLE: -+; WEAK-REF: w *UND* _my_weak_extern_function -+ -+;--- dylib.s -+ -+.globl _my_weak_extern_function -+_my_weak_extern_function: -+ ret -+ -+;--- weak-ref.ll -+target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -+target triple = "x86_64-apple-macosx10.15.0" -+ -+declare extern_weak void @my_weak_extern_function() -+ -+; Function Attrs: noinline nounwind optnone ssp uwtable -+define i32 @bar(i1 zeroext %0) { -+entry: -+ br i1 %0, label %if.then, label %if.end -+ -+if.then: ; preds = %entry -+ call void @my_weak_extern_function() -+ br label %if.end -+ -+if.end: ; preds = %if.then, %entry -+ ret i32 0 -+} --- -2.34.0.1.g4c8d2d0e3e - diff --git a/build/build-clang/llvmorg-14-init-13305-g319181f76718.patch b/build/build-clang/llvmorg-14-init-13305-g319181f76718.patch deleted file mode 100644 index 76e557646bf3..000000000000 --- a/build/build-clang/llvmorg-14-init-13305-g319181f76718.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 319181f7671868be6cd4865e9bcc63f6ba2ddb06 Mon Sep 17 00:00:00 2001 -From: Mike Hommey -Date: Tue, 28 Dec 2021 19:01:01 -0500 -Subject: [PATCH] [lld-macho] Fix alignment of TLV data sections - -References from thread-local variable sections are treated as offsets -relative to the start of the thread-local data memory area, which is -initialized via copying all the TLV data sections (which are all -contiguous). If later data sections require a greater alignment than -earlier ones, the offsets of data within those sections won't be -guaranteed to aligned unless we normalize alignments. We therefore use -the largest alignment for all TLV data sections. - -Reviewed By: #lld-macho, int3 - -Differential Revision: https://reviews.llvm.org/D116263 ---- - lld/MachO/Writer.cpp | 19 +++++++++++++++++-- - lld/test/MachO/tlv.s | 30 ++++++++++++++++++++++-------- - 2 files changed, 39 insertions(+), 10 deletions(-) - -diff --git a/lld/MachO/Writer.cpp b/lld/MachO/Writer.cpp -index 8903f0189ef9..3c7bea335c66 100644 ---- a/lld/MachO/Writer.cpp -+++ b/lld/MachO/Writer.cpp -@@ -908,13 +908,28 @@ static void sortSegmentsAndSections() { - uint32_t sectionIndex = 0; - for (OutputSegment *seg : outputSegments) { - seg->sortOutputSections(); -+ // References from thread-local variable sections are treated as offsets -+ // relative to the start of the thread-local data memory area, which -+ // is initialized via copying all the TLV data sections (which are all -+ // contiguous). If later data sections require a greater alignment than -+ // earlier ones, the offsets of data within those sections won't be -+ // guaranteed to aligned unless we normalize alignments. We therefore use -+ // the largest alignment for all TLV data sections. -+ uint32_t tlvAlign = 0; -+ for (const OutputSection *osec : seg->getSections()) -+ if (isThreadLocalData(osec->flags) && osec->align > tlvAlign) -+ tlvAlign = osec->align; -+ - for (OutputSection *osec : seg->getSections()) { - // Now that the output sections are sorted, assign the final - // output section indices. - if (!osec->isHidden()) - osec->index = ++sectionIndex; -- if (!firstTLVDataSection && isThreadLocalData(osec->flags)) -- firstTLVDataSection = osec; -+ if (isThreadLocalData(osec->flags)) { -+ if (!firstTLVDataSection) -+ firstTLVDataSection = osec; -+ osec->align = tlvAlign; -+ } - - if (!isecPriorities.empty()) { - if (auto *merged = dyn_cast(osec)) { -diff --git a/lld/test/MachO/tlv.s b/lld/test/MachO/tlv.s -index f188bf7279a8..e71fe76980e2 100644 ---- a/lld/test/MachO/tlv.s -+++ b/lld/test/MachO/tlv.s -@@ -24,12 +24,12 @@ - # RUN: llvm-objdump -d --bind --rebase %t/regular-and-tbss | FileCheck %s --check-prefixes=REG,TBSS,LINKEDIT - # RUN: llvm-objdump --macho --section=__DATA,__thread_vars %t/regular-and-tbss | \ - # RUN: FileCheck %s --check-prefix=REG-TBSS-TLVP --# RUN: llvm-objdump --section-headers %t/regular-and-tbss | FileCheck %s --check-prefix=SECTION-ORDER -+# RUN: llvm-objdump --section-headers %t/regular-and-tbss | FileCheck %s --check-prefix=SECTIONS - - ## Check that we always put __thread_bss immediately after __thread_data, - ## regardless of the order of the input files. - # RUN: %lld -lSystem %t/tbss.o %t/regular.o -o %t/regular-and-tbss --# RUN: llvm-objdump --section-headers %t/regular-and-tbss | FileCheck %s --check-prefix=SECTION-ORDER -+# RUN: llvm-objdump --section-headers %t/regular-and-tbss | FileCheck %s --check-prefix=SECTIONS - - # HEADER: MH_HAS_TLV_DESCRIPTORS - -@@ -41,6 +41,7 @@ - # TBSS: <_f>: - # TBSS-NEXT: leaq {{.*}}(%rip), %rax ## {{.*}} <_baz> - # TBSS-NEXT: leaq {{.*}}(%rip), %rax ## {{.*}} <_qux> -+# TBSS-NEXT: leaq {{.*}}(%rip), %rax ## {{.*}} <_hoge> - # TBSS-NEXT: retq - - # REG-TLVP: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -@@ -53,10 +54,12 @@ - - # REG-TBSS-TLVP: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - # REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --# REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 08 00 00 00 00 00 00 00 -+# REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 00 - # REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --# REG-TBSS-TLVP-NEXT: 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 --# REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 -+# REG-TBSS-TLVP-NEXT: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -+# REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00 -+# REG-TBSS-TLVP-NEXT: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -+# REG-TBSS-TLVP-NEXT: 30 00 00 00 00 00 00 00 - - ## Make sure we don't emit rebase opcodes for relocations in __thread_vars. - # LINKEDIT: Rebase table: -@@ -66,9 +69,14 @@ - # LINKEDIT: __DATA __thread_vars 0x{{[0-9a-f]*}} pointer 0 libSystem __tlv_bootstrap - # LINKEDIT: __DATA __thread_vars 0x{{[0-9a-f]*}} pointer 0 libSystem __tlv_bootstrap - --# SECTION-ORDER: __thread_data --# SECTION-ORDER: more_thread_data --# SECTION-ORDER-NEXT: __thread_bss -+## Make sure we have an odd number of tlv vars, and that the __thread_vars -+## section starts 16-bytes aligned. This is the setup required for __thread_data -+## not to be automatically 16-bytes aligned, ensuring the linker does its -+## expected job of aligning _hoge$tlv$init. -+# SECTIONS: __thread_vars {{[0-9]+}}8 {{[0-9]+}}0 -+# SECTIONS: __thread_data -+# SECTIONS: more_thread_data -+# SECTIONS-NEXT: __thread_bss - - #--- regular.s - .globl _main -@@ -102,10 +110,12 @@ _bar: - _f: - mov _baz@TLVP(%rip), %rax - mov _qux@TLVP(%rip), %rax -+ mov _hoge@TLVP(%rip), %rax - ret - - .tbss _baz$tlv$init, 8, 3 - .tbss _qux$tlv$init, 8, 3 -+.tbss _hoge$tlv$init, 16, 4 - - .section __DATA,__thread_vars,thread_local_variables - _baz: -@@ -116,3 +126,7 @@ _qux: - .quad __tlv_bootstrap - .quad 0 - .quad _qux$tlv$init -+_hoge: -+ .quad __tlv_bootstrap -+ .quad 0 -+ .quad _hoge$tlv$init --- -2.34.0.1.g4c8d2d0e3e - diff --git a/build/build-clang/llvmorg-14-init-13854-g782791ee84d2.patch b/build/build-clang/llvmorg-14-init-13854-g782791ee84d2.patch deleted file mode 100644 index 888f879a66e1..000000000000 --- a/build/build-clang/llvmorg-14-init-13854-g782791ee84d2.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 782791ee84d29db137f441c1e033582a7a78ad5e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Markus=20B=C3=B6ck?= -Date: Fri, 24 Dec 2021 21:55:07 +0100 -Subject: [PATCH] [clang][#52782] Bail on incomplete parameter type in stdcall - name mangling - -stdcall name mangling requires a suffix with the number equal to the sum of the byte count of all parameter types. In the case of a function prototype that has a parameter type of an incomplete type it is impossible to get the size of the type. While such a function is not callable or able to be defined in the TU, it may still be mangled when generating debug info, which would previously lead to a crash. -This patch fixes that by simply bailing out of the loop and using the so far accumulated byte count. This matches GCCs behaviour as well: https://github.com/gcc-mirror/gcc/blob/bc8d6c60137f8bbf173b86ddf31b15d7ba2a33dd/gcc/config/i386/winnt.c#L203 - -Fixes https://github.com/llvm/llvm-project/issues/52782 - -Differential Revision: https://reviews.llvm.org/D116020 ---- - clang/lib/AST/Mangle.cpp | 8 +++++++- - clang/test/CodeGen/pr52782-stdcall-func-decl.cpp | 10 ++++++++++ - 2 files changed, 17 insertions(+), 1 deletion(-) - create mode 100644 clang/test/CodeGen/pr52782-stdcall-func-decl.cpp - -diff --git a/clang/lib/AST/Mangle.cpp b/clang/lib/AST/Mangle.cpp -index 54dbf484f377..984da9909ce2 100644 ---- a/clang/lib/AST/Mangle.cpp -+++ b/clang/lib/AST/Mangle.cpp -@@ -225,11 +225,17 @@ void MangleContext::mangleName(GlobalDecl GD, raw_ostream &Out) { - if (const CXXMethodDecl *MD = dyn_cast(FD)) - if (!MD->isStatic()) - ++ArgWords; -- for (const auto &AT : Proto->param_types()) -+ for (const auto &AT : Proto->param_types()) { -+ // If an argument type is incomplete there is no way to get its size to -+ // correctly encode into the mangling scheme. -+ // Follow GCCs behaviour by simply breaking out of the loop. -+ if (AT->isIncompleteType()) -+ break; - // Size should be aligned to pointer size. - ArgWords += - llvm::alignTo(ASTContext.getTypeSize(AT), TI.getPointerWidth(0)) / - TI.getPointerWidth(0); -+ } - Out << ((TI.getPointerWidth(0) / 8) * ArgWords); - } - -diff --git a/clang/test/CodeGen/pr52782-stdcall-func-decl.cpp b/clang/test/CodeGen/pr52782-stdcall-func-decl.cpp -new file mode 100644 -index 000000000000..c3c94ece24b2 ---- /dev/null -+++ b/clang/test/CodeGen/pr52782-stdcall-func-decl.cpp -@@ -0,0 +1,10 @@ -+// RUN: %clang_cc1 -triple i686-w64-windows-gnu -o - -emit-llvm -debug-info-kind=constructor %s | FileCheck %s -+ -+enum nsresult {}; -+ -+class NotNull; -+ -+class nsICanvasRenderingContextInternal { -+ // CHECK: !DISubprogram(name: "InitializeWithDrawTarget", linkageName: "\01__ZN33nsICanvasRenderingContextInternal24InitializeWithDrawTargetE7NotNull@4" -+ nsresult __stdcall InitializeWithDrawTarget(NotNull); -+} nsTBaseHashSet; --- -2.34.0.1.g4c8d2d0e3e - diff --git a/build/build-clang/llvmorg-14-init-3166-gd9ab62ca3d29.patch b/build/build-clang/llvmorg-14-init-3166-gd9ab62ca3d29.patch deleted file mode 100644 index ea9f1a6f7af1..000000000000 --- a/build/build-clang/llvmorg-14-init-3166-gd9ab62ca3d29.patch +++ /dev/null @@ -1,75 +0,0 @@ -From d9ab62ca3d292c69d69701541b85efba0f195264 Mon Sep 17 00:00:00 2001 -From: Jez Ng -Date: Sat, 4 Sep 2021 17:40:07 -0400 -Subject: [PATCH] [lld-macho] Initialize LTO backend with diagnostic handler - -Failing to do so results in `std::bad_function_call` being -thrown when a pass tries to emit a diagnostic. - -I've copied the relevant test over from LLD-ELF's test suite. - -Reviewed By: #lld-macho, thevinster - -Differential Revision: https://reviews.llvm.org/D109274 ---- - lld/MachO/LTO.cpp | 1 + - lld/test/MachO/lto-irmover-warning.ll | 35 +++++++++++++++++++++++++++ - 2 files changed, 36 insertions(+) - create mode 100644 lld/test/MachO/lto-irmover-warning.ll - -diff --git a/lld/MachO/LTO.cpp b/lld/MachO/LTO.cpp -index 366193a27eba..09b05ed0dffe 100644 ---- a/lld/MachO/LTO.cpp -+++ b/lld/MachO/LTO.cpp -@@ -37,6 +37,7 @@ static lto::Config createConfig() { - c.CodeModel = getCodeModelFromCMModel(); - c.CPU = getCPUStr(); - c.MAttrs = getMAttrs(); -+ c.DiagHandler = diagnosticHandler; - c.UseNewPM = config->ltoNewPassManager; - c.PreCodeGenPassesHook = [](legacy::PassManager &pm) { - pm.add(createObjCARCContractPass()); -diff --git a/lld/test/MachO/lto-irmover-warning.ll b/lld/test/MachO/lto-irmover-warning.ll -new file mode 100644 -index 000000000000..f781215c83c9 ---- /dev/null -+++ b/lld/test/MachO/lto-irmover-warning.ll -@@ -0,0 +1,35 @@ -+; REQUIRES: x86 -+; RUN: rm -rf %t; split-file %s %t -+; RUN: llvm-as -o %t/first.bc %t/first.ll -+; RUN: llvm-as -o %t/second.bc %t/second.ll -+; RUN: %no_fatal_warnings_lld -dylib %t/first.bc %t/second.bc -o /dev/null 2>&1 | FileCheck %s -+ -+;; FIXME: can we replace ld-temp.o with a proper name? -+; CHECK: warning: linking module flags 'foo': IDs have conflicting values ('i32 2' from {{.*}}second.bc with 'i32 1' from ld-temp.o) -+ -+;--- first.ll -+target triple = "x86_64-apple-macosx10.15.0" -+target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -+ -+declare void @f() -+ -+define void @g() { -+ call void @f() -+ ret void -+} -+ -+!0 = !{ i32 2, !"foo", i32 1 } -+ -+!llvm.module.flags = !{ !0 } -+ -+;--- second.ll -+target triple = "x86_64-apple-macosx10.15.0" -+target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" -+ -+define void @f() { -+ ret void -+} -+ -+!0 = !{ i32 2, !"foo", i32 2 } -+ -+!llvm.module.flags = !{ !0 } --- -2.34.0.1.g4c8d2d0e3e - diff --git a/build/build-clang/llvmorg-14-init-4465-g22ea0cea595e-v2.patch b/build/build-clang/llvmorg-14-init-4465-g22ea0cea595e-v2.patch deleted file mode 100644 index 3f9b279c36ad..000000000000 --- a/build/build-clang/llvmorg-14-init-4465-g22ea0cea595e-v2.patch +++ /dev/null @@ -1,181 +0,0 @@ -From 22ea0cea595e1b44b46c520243f2292bc4e3d943 Mon Sep 17 00:00:00 2001 -From: Toshihito Kikuchi -Date: Tue, 21 Sep 2021 15:49:03 -0700 -Subject: [PATCH] [compiler-rt] [windows] Add more assembly patterns for - interception - -To intercept the functions in Win11's ntdll.dll, we need to use the trampoline -technique because there are bytes other than 0x90 or 0xcc in the gaps between -exported functions. This patch adds more patterns that appear in ntdll's -functions. - -Bug: https://bugs.llvm.org/show_bug.cgi?id=51721 - -Reviewed By: rnk - -Differential Revision: https://reviews.llvm.org/D109941 ---- - .../lib/interception/interception_win.cpp | 46 +++++++++++++++++++ - .../tests/interception_win_test.cpp | 45 ++++++++++++++++++ - 2 files changed, 91 insertions(+) - -diff --git a/compiler-rt/lib/interception/interception_win.cpp b/compiler-rt/lib/interception/interception_win.cpp -index 635499c2b385..38b8c058246a 100644 ---- a/compiler-rt/lib/interception/interception_win.cpp -+++ b/compiler-rt/lib/interception/interception_win.cpp -@@ -398,8 +398,42 @@ static uptr AllocateMemoryForTrampoline(uptr image_address, size_t size) { - return allocated_space; - } - -+// The following prologues cannot be patched because of the short jump -+// jumping to the patching region. -+ -+// ntdll!wcslen in Win11 -+// 488bc1 mov rax,rcx -+// 0fb710 movzx edx,word ptr [rax] -+// 4883c002 add rax,2 -+// 6685d2 test dx,dx -+// 75f4 jne -12 -+static const u8 kPrologueWithShortJump1[] = { -+ 0x48, 0x8b, 0xc1, 0x0f, 0xb7, 0x10, 0x48, 0x83, -+ 0xc0, 0x02, 0x66, 0x85, 0xd2, 0x75, 0xf4, -+}; -+ -+// ntdll!strrchr in Win11 -+// 4c8bc1 mov r8,rcx -+// 8a01 mov al,byte ptr [rcx] -+// 48ffc1 inc rcx -+// 84c0 test al,al -+// 75f7 jne -9 -+static const u8 kPrologueWithShortJump2[] = { -+ 0x4c, 0x8b, 0xc1, 0x8a, 0x01, 0x48, 0xff, 0xc1, -+ 0x84, 0xc0, 0x75, 0xf7, -+}; -+ - // Returns 0 on error. - static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) { -+#if SANITIZER_WINDOWS64 -+ if (memcmp((u8*)address, kPrologueWithShortJump1, -+ sizeof(kPrologueWithShortJump1)) == 0 || -+ memcmp((u8*)address, kPrologueWithShortJump2, -+ sizeof(kPrologueWithShortJump2)) == 0) { -+ return 0; -+ } -+#endif -+ - switch (*(u64*)address) { - case 0x90909090909006EB: // stub: jmp over 6 x nop. - return 8; -@@ -477,6 +511,14 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) { - case 0xA1: // A1 XX XX XX XX XX XX XX XX : - // movabs eax, dword ptr ds:[XXXXXXXX] - return 9; -+ -+ case 0x83: -+ const u8 next_byte = *(u8*)(address + 1); -+ const u8 mod = next_byte >> 6; -+ const u8 rm = next_byte & 7; -+ if (mod == 1 && rm == 4) -+ return 5; // 83 ModR/M SIB Disp8 Imm8 -+ // add|or|adc|sbb|and|sub|xor|cmp [r+disp8], imm8 - } - - switch (*(u16*)address) { -@@ -493,6 +535,8 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) { - case 0x5641: // push r14 - case 0x5741: // push r15 - case 0x9066: // Two-byte NOP -+ case 0xc084: // test al, al -+ case 0x018a: // mov al, byte ptr [rcx] - return 2; - - case 0x058B: // 8B 05 XX XX XX XX : mov eax, dword ptr [XX XX XX XX] -@@ -509,6 +553,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) { - case 0xd12b48: // 48 2b d1 : sub rdx, rcx - case 0x07c1f6: // f6 c1 07 : test cl, 0x7 - case 0xc98548: // 48 85 C9 : test rcx, rcx -+ case 0xd28548: // 48 85 d2 : test rdx, rdx - case 0xc0854d: // 4d 85 c0 : test r8, r8 - case 0xc2b60f: // 0f b6 c2 : movzx eax, dl - case 0xc03345: // 45 33 c0 : xor r8d, r8d -@@ -522,6 +567,7 @@ static size_t GetInstructionSize(uptr address, size_t* rel_offset = nullptr) { - case 0xca2b48: // 48 2b ca : sub rcx, rdx - case 0x10b70f: // 0f b7 10 : movzx edx, WORD PTR [rax] - case 0xc00b4d: // 3d 0b c0 : or r8, r8 -+ case 0xc08b41: // 41 8b c0 : mov eax, r8d - case 0xd18b48: // 48 8b d1 : mov rdx, rcx - case 0xdc8b4c: // 4c 8b dc : mov r11, rsp - case 0xd18b4c: // 4c 8b d1 : mov r10, rcx -diff --git a/compiler-rt/lib/interception/tests/interception_win_test.cpp b/compiler-rt/lib/interception/tests/interception_win_test.cpp -index f8ab4ec67443..084a98602969 100644 ---- a/compiler-rt/lib/interception/tests/interception_win_test.cpp -+++ b/compiler-rt/lib/interception/tests/interception_win_test.cpp -@@ -208,6 +208,28 @@ const u8 kUnpatchableCode6[] = { - 0x90, 0x90, 0x90, 0x90, - }; - -+const u8 kUnpatchableCode7[] = { -+ 0x33, 0xc0, // xor eax,eax -+ 0x48, 0x85, 0xd2, // test rdx,rdx -+ 0x74, 0x10, // je +16 (unpatchable) -+}; -+ -+const u8 kUnpatchableCode8[] = { -+ 0x48, 0x8b, 0xc1, // mov rax,rcx -+ 0x0f, 0xb7, 0x10, // movzx edx,word ptr [rax] -+ 0x48, 0x83, 0xc0, 0x02, // add rax,2 -+ 0x66, 0x85, 0xd2, // test dx,dx -+ 0x75, 0xf4, // jne -12 (unpatchable) -+}; -+ -+const u8 kUnpatchableCode9[] = { -+ 0x4c, 0x8b, 0xc1, // mov r8,rcx -+ 0x8a, 0x01, // mov al,byte ptr [rcx] -+ 0x48, 0xff, 0xc1, // inc rcx -+ 0x84, 0xc0, // test al,al -+ 0x75, 0xf7, // jne -9 (unpatchable) -+}; -+ - const u8 kPatchableCode6[] = { - 0x48, 0x89, 0x54, 0x24, 0xBB, // mov QWORD PTR [rsp + 0xBB], rdx - 0x33, 0xC9, // xor ecx,ecx -@@ -226,6 +248,23 @@ const u8 kPatchableCode8[] = { - 0xC3, // ret - }; - -+const u8 kPatchableCode9[] = { -+ 0x8a, 0x01, // al,byte ptr [rcx] -+ 0x45, 0x33, 0xc0, // xor r8d,r8d -+ 0x84, 0xc0, // test al,al -+}; -+ -+const u8 kPatchableCode10[] = { -+ 0x45, 0x33, 0xc0, // xor r8d,r8d -+ 0x41, 0x8b, 0xc0, // mov eax,r8d -+ 0x48, 0x85, 0xd2, // test rdx,rdx -+}; -+ -+const u8 kPatchableCode11[] = { -+ 0x48, 0x83, 0xec, 0x38, // sub rsp,38h -+ 0x83, 0x64, 0x24, 0x28, 0x00, // and dword ptr [rsp+28h],0 -+}; -+ - // A buffer holding the dynamically generated code under test. - u8* ActiveCode; - const size_t ActiveCodeLength = 4096; -@@ -610,6 +649,12 @@ TEST(Interception, PatchableFunctionWithTrampoline) { - EXPECT_TRUE(TestFunctionPatching(kPatchableCode2, override, prefix)); - #if SANITIZER_WINDOWS64 - EXPECT_FALSE(TestFunctionPatching(kPatchableCode3, override, prefix)); -+ EXPECT_TRUE(TestFunctionPatching(kPatchableCode9, override, prefix)); -+ EXPECT_TRUE(TestFunctionPatching(kPatchableCode10, override, prefix)); -+ EXPECT_TRUE(TestFunctionPatching(kPatchableCode11, override, prefix)); -+ EXPECT_FALSE(TestFunctionPatching(kUnpatchableCode7, override, prefix)); -+ EXPECT_FALSE(TestFunctionPatching(kUnpatchableCode8, override, prefix)); -+ EXPECT_FALSE(TestFunctionPatching(kUnpatchableCode9, override, prefix)); - #else - EXPECT_TRUE(TestFunctionPatching(kPatchableCode3, override, prefix)); - #endif --- -2.28.0.windows.1 - diff --git a/build/build-clang/llvmorg-15-init-283-g4db89e23190d.patch b/build/build-clang/llvmorg-15-init-283-g4db89e23190d.patch new file mode 100644 index 000000000000..0c3a3c8b2df6 --- /dev/null +++ b/build/build-clang/llvmorg-15-init-283-g4db89e23190d.patch @@ -0,0 +1,27 @@ +From 4db89e23190d1d1590d88df08056d327e651c94c Mon Sep 17 00:00:00 2001 +From: Shoaib Meenai +Date: Thu, 3 Feb 2022 13:39:54 -0800 +Subject: [PATCH] [cmake] Increase -fms-compatibility-version in Windows + toolchain file + +Make it match LLVM's new minimum requirement (after https://reviews.llvm.org/D114639). +--- + llvm/cmake/platforms/WinMsvc.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/llvm/cmake/platforms/WinMsvc.cmake b/llvm/cmake/platforms/WinMsvc.cmake +index d30701a31858..ebb4da419e46 100644 +--- a/llvm/cmake/platforms/WinMsvc.cmake ++++ b/llvm/cmake/platforms/WinMsvc.cmake +@@ -259,7 +259,7 @@ set(CROSS_TOOLCHAIN_FLAGS_NATIVE "${_CTF_NATIVE_DEFAULT}" CACHE STRING "") + set(COMPILE_FLAGS + -D_CRT_SECURE_NO_WARNINGS + --target=${TRIPLE_ARCH}-windows-msvc +- -fms-compatibility-version=19.14 ++ -fms-compatibility-version=19.20 + -imsvc "${ATLMFC_INCLUDE}" + -imsvc "${MSVC_INCLUDE}" + -imsvc "${WINSDK_INCLUDE}/ucrt" +-- +2.35.0.1.g829a698654 + diff --git a/build/build-clang/llvmorg-15-init-7469-gcfa4fe7c5187.patch b/build/build-clang/llvmorg-15-init-7469-gcfa4fe7c5187.patch new file mode 100644 index 000000000000..7783cbf41a24 --- /dev/null +++ b/build/build-clang/llvmorg-15-init-7469-gcfa4fe7c5187.patch @@ -0,0 +1,67 @@ +From cfa4fe7c51870fe6b480d541938f556cf0736fa2 Mon Sep 17 00:00:00 2001 +From: Ahmed Bougacha +Date: Tue, 12 Apr 2022 09:23:11 -0700 +Subject: [PATCH] [AArch64][LOH] Don't ignore regmasks in bundles by iterating + over instrs. + +The LOH pass iterates over instructions to build its custom register +state machine, but it uses the top-level bundle iterator. +This should be okay, because when the wrapper BUNDLE MI is built, +it aggregates the register defs/uses in its instructions into MOs. + +However, that doesn't apply to regmasks, and accumulating regmasks +across multiple instructions would be messy business. +There are a couple AnalyzePhysRegInBundle (/Virt) helpers that +do look at regmasks, but those don't fit in very well here. + +AArch64 has started to use a few bundle instructions, specifically +as glorified pseudos for variant call instructions, which have regmasks. +So the LOH pass ends up ignoring regmasks. + +Concretely, this has been wrong for a while, but, on aarch64, the +most common bundle (rv_marker call) was always followed by the +attached call instruction, a plain BL with a regmask. Which +was properly detected by the pass. + +However, we recently started keeping the attached call in the bundle, +so the regmask is now ignored. And the pass happily combines ADRPs, of +say, x8, across the bundle, resulting in corrupt pointers later. +--- + llvm/lib/Target/AArch64/AArch64CollectLOH.cpp | 2 +- + llvm/test/CodeGen/AArch64/loh.mir | 9 +++++++++ + 2 files changed, 10 insertions(+), 1 deletion(-) + +diff --git a/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp b/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp +index ac243347b24d..b31b709c0c0a 100644 +--- a/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp ++++ b/llvm/lib/Target/AArch64/AArch64CollectLOH.cpp +@@ -559,7 +559,7 @@ bool AArch64CollectLOH::runOnMachineFunction(MachineFunction &MF) { + // Walk the basic block backwards and update the per register state machine + // in the process. + for (const MachineInstr &MI : +- instructionsWithoutDebug(MBB.rbegin(), MBB.rend())) { ++ instructionsWithoutDebug(MBB.instr_rbegin(), MBB.instr_rend())) { + unsigned Opcode = MI.getOpcode(); + switch (Opcode) { + case AArch64::ADDXri: +diff --git a/llvm/test/CodeGen/AArch64/loh.mir b/llvm/test/CodeGen/AArch64/loh.mir +index 8c482fa27b1d..c816a5344bdb 100644 +--- a/llvm/test/CodeGen/AArch64/loh.mir ++++ b/llvm/test/CodeGen/AArch64/loh.mir +@@ -190,4 +190,13 @@ body: | + bb.14: + liveins: $x10 + $x12 = ADDXri $x10, target-flags(aarch64-pageoff) @g0, 0 ++ ++ bb.15: ++ ; Should not produce a LOH when reg is clobbered by bundled regmask ++ ; CHECK-NOT: MCLOH_AdrpAdrp ++ $x8 = ADRP target-flags(aarch64-page) @g0 ++ BUNDLE { ++ BL @extfunc, csr_aarch64_aapcs ++ } ++ $x8 = ADRP target-flags(aarch64-page) @g1 + ... +-- +2.35.0.1.g829a698654 + diff --git a/build/build-clang/revert-llvmorg-12-init-7827-g2a078c307204.patch b/build/build-clang/revert-llvmorg-12-init-7827-g2a078c307204.patch deleted file mode 100644 index 528bb0fc4a6d..000000000000 --- a/build/build-clang/revert-llvmorg-12-init-7827-g2a078c307204.patch +++ /dev/null @@ -1,17 +0,0 @@ -llvmorg-12-init-7827-g2a078c307204 leads to linker complaints in shippable -builds. It may be related to LTO with IR from rustc. The patch author and I -were unable to get to the bottom of it, and in the end they suggested that -it's safe to undo the change locally. - -diff --git a/llvm/lib/IR/Attributes.cpp b/llvm/lib/IR/Attributes.cpp -index 368fc87dc801..96c2388d776e 100644 ---- a/llvm/lib/IR/Attributes.cpp -+++ b/llvm/lib/IR/Attributes.cpp -@@ -1902,7 +1902,6 @@ AttrBuilder AttributeFuncs::typeIncompatible(Type *Ty) { - .addAttribute(Attribute::ReadNone) - .addAttribute(Attribute::ReadOnly) - .addAttribute(Attribute::SwiftError) -- .addAlignmentAttr(1) // the int here is ignored - .addDereferenceableAttr(1) // the int here is ignored - .addDereferenceableOrNullAttr(1) // the int here is ignored - .addPreallocatedAttr(Ty) diff --git a/build/build-clang/revert-llvmorg-13-init-8182-gc2297544c047.patch b/build/build-clang/revert-llvmorg-13-init-8182-gc2297544c047.patch deleted file mode 100644 index 76ecc7bb6f03..000000000000 --- a/build/build-clang/revert-llvmorg-13-init-8182-gc2297544c047.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h -index 4f0cbf986b31..e129481fc0e4 100644 ---- a/clang/include/clang/Basic/TargetInfo.h -+++ b/clang/include/clang/Basic/TargetInfo.h -@@ -618,8 +618,8 @@ public: - } - - /// Return the largest alignment for which a suitably-sized allocation with -- /// '::operator new(size_t)' or 'malloc' is guaranteed to produce a -- /// correctly-aligned pointer. -+ /// '::operator new(size_t)' is guaranteed to produce a correctly-aligned -+ /// pointer. - unsigned getNewAlign() const { - return NewAlign ? NewAlign : std::max(LongDoubleAlign, LongLongAlign); - } -diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp -index 47a4ed35be85..f77db7bdcecf 100644 ---- a/clang/lib/CodeGen/CGCall.cpp -+++ b/clang/lib/CodeGen/CGCall.cpp -@@ -2052,24 +2052,6 @@ void CodeGenModule::ConstructAttributeList(StringRef Name, - // allows it to work on indirect virtual function calls. - if (AttrOnCallSite && TargetDecl->hasAttr()) - FuncAttrs.addAttribute(llvm::Attribute::NoMerge); -- -- // Add known guaranteed alignment for allocation functions. -- if (unsigned BuiltinID = Fn->getBuiltinID()) { -- switch (BuiltinID) { -- case Builtin::BIaligned_alloc: -- case Builtin::BIcalloc: -- case Builtin::BImalloc: -- case Builtin::BImemalign: -- case Builtin::BIrealloc: -- case Builtin::BIstrdup: -- case Builtin::BIstrndup: -- RetAttrs.addAlignmentAttr(Context.getTargetInfo().getNewAlign() / -- Context.getTargetInfo().getCharWidth()); -- break; -- default: -- break; -- } -- } - } - - // 'const', 'pure' and 'noalias' attributed functions are also nounwind. diff --git a/build/build-clang/revert-llvmorg-14-init-11890-gf86deb18cab6.patch b/build/build-clang/revert-llvmorg-14-init-11890-gf86deb18cab6.patch new file mode 100644 index 000000000000..9d61910705c1 --- /dev/null +++ b/build/build-clang/revert-llvmorg-14-init-11890-gf86deb18cab6.patch @@ -0,0 +1,173 @@ +From c8a5013045b5aff8e45418925688ca670545980f Mon Sep 17 00:00:00 2001 +From: Mike Hommey +Date: Fri, 18 Mar 2022 17:58:28 +0900 +Subject: [PATCH] Revert "[lsan] Move out suppression of invalid PCs from + StopTheWorld" + +This reverts commit f86deb18cab6479a0961ade3807e4729f3a27bdf +because of permafail for a sizable amount of ASan test jobs, where the +worker would die without even leaving any logs. + +--- + compiler-rt/lib/lsan/lsan_common.cpp | 108 +++++++++++++++++---------- + 1 file changed, 67 insertions(+), 41 deletions(-) + +diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp +index fd7aa38d99db..658415bce507 100644 +--- a/compiler-rt/lib/lsan/lsan_common.cpp ++++ b/compiler-rt/lib/lsan/lsan_common.cpp +@@ -71,11 +71,9 @@ class LeakSuppressionContext { + SuppressionContext context; + bool suppressed_stacks_sorted = true; + InternalMmapVector suppressed_stacks; +- const LoadedModule *suppress_module = nullptr; + +- void LazyInit(); + Suppression *GetSuppressionForAddr(uptr addr); +- bool SuppressInvalid(const StackTrace &stack); ++ void LazyInit(); + bool SuppressByRule(const StackTrace &stack, uptr hit_count, uptr total_size); + + public: +@@ -126,8 +124,6 @@ void LeakSuppressionContext::LazyInit() { + if (&__lsan_default_suppressions) + context.Parse(__lsan_default_suppressions()); + context.Parse(kStdSuppressions); +- if (flags()->use_tls && flags()->use_ld_allocations) +- suppress_module = GetLinker(); + } + } + +@@ -152,41 +148,6 @@ Suppression *LeakSuppressionContext::GetSuppressionForAddr(uptr addr) { + return s; + } + +-static uptr GetCallerPC(const StackTrace &stack) { +- // The top frame is our malloc/calloc/etc. The next frame is the caller. +- if (stack.size >= 2) +- return stack.trace[1]; +- return 0; +-} +- +-// On Linux, treats all chunks allocated from ld-linux.so as reachable, which +-// covers dynamically allocated TLS blocks, internal dynamic loader's loaded +-// modules accounting etc. +-// Dynamic TLS blocks contain the TLS variables of dynamically loaded modules. +-// They are allocated with a __libc_memalign() call in allocate_and_init() +-// (elf/dl-tls.c). Glibc won't tell us the address ranges occupied by those +-// blocks, but we can make sure they come from our own allocator by intercepting +-// __libc_memalign(). On top of that, there is no easy way to reach them. Their +-// addresses are stored in a dynamically allocated array (the DTV) which is +-// referenced from the static TLS. Unfortunately, we can't just rely on the DTV +-// being reachable from the static TLS, and the dynamic TLS being reachable from +-// the DTV. This is because the initial DTV is allocated before our interception +-// mechanism kicks in, and thus we don't recognize it as allocated memory. We +-// can't special-case it either, since we don't know its size. +-// Our solution is to include in the root set all allocations made from +-// ld-linux.so (which is where allocate_and_init() is implemented). This is +-// guaranteed to include all dynamic TLS blocks (and possibly other allocations +-// which we don't care about). +-// On all other platforms, this simply checks to ensure that the caller pc is +-// valid before reporting chunks as leaked. +-bool LeakSuppressionContext::SuppressInvalid(const StackTrace &stack) { +- uptr caller_pc = GetCallerPC(stack); +- // If caller_pc is unknown, this chunk may be allocated in a coroutine. Mark +- // it as reachable, as we can't properly report its allocation stack anyway. +- return !caller_pc || +- (suppress_module && suppress_module->containsAddress(caller_pc)); +-} +- + bool LeakSuppressionContext::SuppressByRule(const StackTrace &stack, + uptr hit_count, uptr total_size) { + for (uptr i = 0; i < stack.size; i++) { +@@ -205,7 +166,7 @@ bool LeakSuppressionContext::Suppress(u32 stack_trace_id, uptr hit_count, + uptr total_size) { + LazyInit(); + StackTrace stack = StackDepotGet(stack_trace_id); +- if (!SuppressInvalid(stack) && !SuppressByRule(stack, hit_count, total_size)) ++ if (!SuppressByRule(stack, hit_count, total_size)) + return false; + suppressed_stacks_sorted = false; + suppressed_stacks.push_back(stack_trace_id); +@@ -569,6 +530,68 @@ static void CollectIgnoredCb(uptr chunk, void *arg) { + } + } + ++static uptr GetCallerPC(const StackTrace &stack) { ++ // The top frame is our malloc/calloc/etc. The next frame is the caller. ++ if (stack.size >= 2) ++ return stack.trace[1]; ++ return 0; ++} ++ ++struct InvalidPCParam { ++ Frontier *frontier; ++ bool skip_linker_allocations; ++}; ++ ++// ForEachChunk callback. If the caller pc is invalid or is within the linker, ++// mark as reachable. Called by ProcessPlatformSpecificAllocations. ++static void MarkInvalidPCCb(uptr chunk, void *arg) { ++ CHECK(arg); ++ InvalidPCParam *param = reinterpret_cast(arg); ++ chunk = GetUserBegin(chunk); ++ LsanMetadata m(chunk); ++ if (m.allocated() && m.tag() != kReachable && m.tag() != kIgnored) { ++ u32 stack_id = m.stack_trace_id(); ++ uptr caller_pc = 0; ++ if (stack_id > 0) ++ caller_pc = GetCallerPC(StackDepotGet(stack_id)); ++ // If caller_pc is unknown, this chunk may be allocated in a coroutine. Mark ++ // it as reachable, as we can't properly report its allocation stack anyway. ++ if (caller_pc == 0 || (param->skip_linker_allocations && ++ GetLinker()->containsAddress(caller_pc))) { ++ m.set_tag(kIgnored); ++ param->frontier->push_back(chunk); ++ } ++ } ++} ++ ++// On Linux, treats all chunks allocated from ld-linux.so as reachable, which ++// covers dynamically allocated TLS blocks, internal dynamic loader's loaded ++// modules accounting etc. ++// Dynamic TLS blocks contain the TLS variables of dynamically loaded modules. ++// They are allocated with a __libc_memalign() call in allocate_and_init() ++// (elf/dl-tls.c). Glibc won't tell us the address ranges occupied by those ++// blocks, but we can make sure they come from our own allocator by intercepting ++// __libc_memalign(). On top of that, there is no easy way to reach them. Their ++// addresses are stored in a dynamically allocated array (the DTV) which is ++// referenced from the static TLS. Unfortunately, we can't just rely on the DTV ++// being reachable from the static TLS, and the dynamic TLS being reachable from ++// the DTV. This is because the initial DTV is allocated before our interception ++// mechanism kicks in, and thus we don't recognize it as allocated memory. We ++// can't special-case it either, since we don't know its size. ++// Our solution is to include in the root set all allocations made from ++// ld-linux.so (which is where allocate_and_init() is implemented). This is ++// guaranteed to include all dynamic TLS blocks (and possibly other allocations ++// which we don't care about). ++// On all other platforms, this simply checks to ensure that the caller pc is ++// valid before reporting chunks as leaked. ++static void ProcessPC(Frontier *frontier) { ++ InvalidPCParam arg; ++ arg.frontier = frontier; ++ arg.skip_linker_allocations = ++ flags()->use_tls && flags()->use_ld_allocations && GetLinker() != nullptr; ++ ForEachChunk(MarkInvalidPCCb, &arg); ++} ++ + // Sets the appropriate tag on each chunk. + static void ClassifyAllChunks(SuspendedThreadsList const &suspended_threads, + Frontier *frontier) { +@@ -584,6 +607,9 @@ static void ClassifyAllChunks(SuspendedThreadsList const &suspended_threads, + ProcessRootRegions(frontier); + FloodFillTag(frontier, kReachable); + ++ CHECK_EQ(0, frontier->size()); ++ ProcessPC(frontier); ++ + // The check here is relatively expensive, so we do this in a separate flood + // fill. That way we can skip the check for chunks that are reachable + // otherwise. +-- +2.35.0.1.g829a698654 + diff --git a/build/build-clang/revert-llvmorg-14-init-14141-gd6d3000a2f6d.patch b/build/build-clang/revert-llvmorg-14-init-14141-gd6d3000a2f6d.patch new file mode 100644 index 000000000000..5a8fb5e70186 --- /dev/null +++ b/build/build-clang/revert-llvmorg-14-init-14141-gd6d3000a2f6d.patch @@ -0,0 +1,78 @@ +From e602ffe1785cef7f5502223e81345e6b9395fae1 Mon Sep 17 00:00:00 2001 +From: Mike Hommey +Date: Fri, 11 Mar 2022 10:38:51 +0900 +Subject: [PATCH] Revert "[CMake][WinMsvc] Fix user passed compiler/linker + flags" + +This reverts commit d6d3000a2f6d88ac73e5d4da4005ceadec788a9a +because of bustage building 32-bits compiler-rt for Windows. +See https://reviews.llvm.org/D116709#3374131 +--- + llvm/cmake/platforms/WinMsvc.cmake | 30 ++++++++++++++++++++++-------- + 1 file changed, 22 insertions(+), 8 deletions(-) + +diff --git a/llvm/cmake/platforms/WinMsvc.cmake b/llvm/cmake/platforms/WinMsvc.cmake +index d30701a31858..9a5078894182 100644 +--- a/llvm/cmake/platforms/WinMsvc.cmake ++++ b/llvm/cmake/platforms/WinMsvc.cmake +@@ -84,7 +84,6 @@ + # up a VFS overlay for the SDK headers and case-correcting symlinks for the + # libraries when running on a case-sensitive filesystem. + +-include_guard(GLOBAL) + + # When configuring CMake with a toolchain file against a top-level CMakeLists.txt, + # it will actually run CMake many times, once for each small test program used to +@@ -252,8 +251,6 @@ list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_ASM_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/b + list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_C_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang") + list(APPEND _CTF_NATIVE_DEFAULT "-DCMAKE_CXX_COMPILER=${LLVM_NATIVE_TOOLCHAIN}/bin/clang++") + +-# These flags are used during build time. So if CFLAGS/CXXFLAGS/LDFLAGS is set +-# for the target, makes sure these are unset during build time. + set(CROSS_TOOLCHAIN_FLAGS_NATIVE "${_CTF_NATIVE_DEFAULT}" CACHE STRING "") + + set(COMPILE_FLAGS +@@ -280,8 +277,18 @@ if(case_sensitive_filesystem) + endif() + + string(REPLACE ";" " " COMPILE_FLAGS "${COMPILE_FLAGS}") +-string(APPEND CMAKE_C_FLAGS_INIT " ${COMPILE_FLAGS}") +-string(APPEND CMAKE_CXX_FLAGS_INIT " ${COMPILE_FLAGS}") ++ ++# We need to preserve any flags that were passed in by the user. However, we ++# can't append to CMAKE_C_FLAGS and friends directly, because toolchain files ++# will be re-invoked on each reconfigure and therefore need to be idempotent. ++# The assignments to the _INITIAL cache variables don't use FORCE, so they'll ++# only be populated on the initial configure, and their values won't change ++# afterward. ++set(_CMAKE_C_FLAGS_INITIAL "${CMAKE_C_FLAGS}" CACHE STRING "") ++set(CMAKE_C_FLAGS "${_CMAKE_C_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE) ++ ++set(_CMAKE_CXX_FLAGS_INITIAL "${CMAKE_CXX_FLAGS}" CACHE STRING "") ++set(CMAKE_CXX_FLAGS "${_CMAKE_CXX_FLAGS_INITIAL} ${COMPILE_FLAGS}" CACHE STRING "" FORCE) + + set(LINK_FLAGS + # Prevent CMake from attempting to invoke mt.exe. It only recognizes the slashed form and not the dashed form. +@@ -305,9 +312,16 @@ if(case_sensitive_filesystem) + endif() + + string(REPLACE ";" " " LINK_FLAGS "${LINK_FLAGS}") +-string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${LINK_FLAGS}") +-string(APPEND CMAKE_MODULE_LINKER_FLAGS_INIT " ${LINK_FLAGS}") +-string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${LINK_FLAGS}") ++ ++# See explanation for compiler flags above for the _INITIAL variables. ++set(_CMAKE_EXE_LINKER_FLAGS_INITIAL "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "") ++set(CMAKE_EXE_LINKER_FLAGS "${_CMAKE_EXE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE) ++ ++set(_CMAKE_MODULE_LINKER_FLAGS_INITIAL "${CMAKE_MODULE_LINKER_FLAGS}" CACHE STRING "") ++set(CMAKE_MODULE_LINKER_FLAGS "${_CMAKE_MODULE_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE) ++ ++set(_CMAKE_SHARED_LINKER_FLAGS_INITIAL "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING "") ++set(CMAKE_SHARED_LINKER_FLAGS "${_CMAKE_SHARED_LINKER_FLAGS_INITIAL} ${LINK_FLAGS}" CACHE STRING "" FORCE) + + # CMake populates these with a bunch of unnecessary libraries, which requires + # extra case-correcting symlinks and what not. Instead, let projects explicitly +-- +2.35.0.1.g829a698654 + diff --git a/build/build-clang/win64-no-symlink.patch b/build/build-clang/win64-no-symlink.patch index 8924f9f9b1d7..44d3de7585f2 100644 --- a/build/build-clang/win64-no-symlink.patch +++ b/build/build-clang/win64-no-symlink.patch @@ -1,8 +1,8 @@ diff --git a/llvm/cmake/modules/LLVMInstallSymlink.cmake b/llvm/cmake/modules/LLVMInstallSymlink.cmake -index 3e6a2c9a2648..09fed8085c23 100644 +index b5c35f706cb7..d9f629be06a7 100644 --- a/llvm/cmake/modules/LLVMInstallSymlink.cmake +++ b/llvm/cmake/modules/LLVMInstallSymlink.cmake -@@ -4,17 +4,18 @@ +@@ -6,17 +6,18 @@ include(GNUInstallDirs) function(install_symlink name target outdir) set(DESTDIR $ENV{DESTDIR}) @@ -12,7 +12,7 @@ index 3e6a2c9a2648..09fed8085c23 100644 + set(LINK_OR_COPY copy) + endif() + - set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}/") + set(bindir "${DESTDIR}${CMAKE_INSTALL_PREFIX}/${outdir}") message(STATUS "Creating ${name}") diff --git a/build/clang-plugin/moz.build b/build/clang-plugin/moz.build index 9c12e70ee83f..61bfdd6fa2d5 100644 --- a/build/clang-plugin/moz.build +++ b/build/clang-plugin/moz.build @@ -109,6 +109,11 @@ if CONFIG["ENABLE_CLANG_PLUGIN_ALPHA"]: # variable to limit ourselves to what we need to build the clang plugin. if CONFIG["HOST_OS_ARCH"] == "WINNT": extra_cxxflags = ["-GR-", "-EHsc"] + # Clang 14 headers enforce a requirement upon Visual Studio 2019 headers, + # for support of newer C++ versions, which is necessary for clang itself, + # but as of writing, it's not necessary for the plugin code, so enable + # the escape hatch, at least until we generally upgrade to VS 2019. + HOST_DEFINES["LLVM_FORCE_USE_OLD_TOOLCHAIN"] = True else: extra_cxxflags = ["-fno-rtti", "-fno-exceptions"] diff --git a/taskcluster/ci/fetch/toolchains.yml b/taskcluster/ci/fetch/toolchains.yml index 64e3e9448a72..91e5c7f4a0b1 100644 --- a/taskcluster/ci/fetch/toolchains.yml +++ b/taskcluster/ci/fetch/toolchains.yml @@ -352,12 +352,12 @@ clang-5.0: repo: https://github.com/llvm/llvm-project revision: 6a075b6de4cafebec9ca1ff9eec7229a617c93f6 -clang-13: - description: clang 13.0.1 source code +clang-14: + description: clang 14.0.0 source code + libc++ fixes fetch: type: git repo: https://github.com/llvm/llvm-project - revision: 75e33f71c2dae584b13a7d1186ae0a038ba98838 + revision: 3f43d803382d57e3fc010ca19833077d1023e9c9 clang-trunk: description: clang main branch source code diff --git a/taskcluster/ci/toolchain/clang-tidy.yml b/taskcluster/ci/toolchain/clang-tidy.yml index f4ddb51d9a0c..5b669c8dde0a 100644 --- a/taskcluster/ci/toolchain/clang-tidy.yml +++ b/taskcluster/ci/toolchain/clang-tidy.yml @@ -23,7 +23,7 @@ job-defaults: - 'build/build-clang/build-clang.py' fetches: fetch: - - clang-13 + - clang-14 linux64-clang-tidy: index: @@ -40,7 +40,7 @@ linux64-clang-tidy: - trunk fetches: toolchain: - - linux64-clang-13 + - linux64-clang-14 - linux64-toolchain-sysroot macosx64-clang-tidy: @@ -60,7 +60,7 @@ macosx64-clang-tidy: fetches: toolchain: - linux64-cctools-port - - linux64-clang-13 + - linux64-clang-14 - macosx64-sdk-11.0 macosx64-arch64-clang-tidy: @@ -83,7 +83,7 @@ macosx64-arch64-clang-tidy: fetches: toolchain: - linux64-cctools-port - - linux64-clang-13 + - linux64-clang-14 - macosx64-sdk-11.0 win64-clang-tidy: @@ -109,7 +109,7 @@ win64-clang-tidy: - cmake - ninja toolchain: - - win64-vs2017 + - win64-vs2019 linux64-clang-tidy-external: attributes: @@ -135,5 +135,5 @@ linux64-clang-tidy-external: fetch: - civet-source toolchain: - - linux64-clang-13 + - linux64-clang-14 - linux64-toolchain-sysroot diff --git a/taskcluster/ci/toolchain/clang.yml b/taskcluster/ci/toolchain/clang.yml index 9aaa6cb482ae..f36b61a1bda2 100644 --- a/taskcluster/ci/toolchain/clang.yml +++ b/taskcluster/ci/toolchain/clang.yml @@ -32,8 +32,8 @@ linux64-clang-5.0: toolchain: - linux64-toolchain-sysroot -linux64-clang-13-mingw-x86: - description: "MinGW-Clang 13 x86 toolchain build" +linux64-clang-14-mingw-x86: + description: "MinGW-Clang 14 x86 toolchain build" treeherder: symbol: TMW(clang-x86) worker-type: b-linux @@ -45,16 +45,16 @@ linux64-clang-13-mingw-x86: toolchain-artifact: public/build/clangmingw.tar.zst fetches: fetch: - - clang-13 + - clang-14 - mingw-w64 - libunwind - llvm-mingw - gcc-9.3.0 toolchain: - - linux64-clang-13 + - linux64-clang-14 -linux64-clang-13-mingw-x64: - description: "MinGW-Clang 13 x64 toolchain build" +linux64-clang-14-mingw-x64: + description: "MinGW-Clang 14 x64 toolchain build" treeherder: symbol: TMW(clang-x64) tier: 1 @@ -67,96 +67,96 @@ linux64-clang-13-mingw-x64: toolchain-artifact: public/build/clangmingw.tar.zst fetches: fetch: - - clang-13 + - clang-14 - mingw-w64 - libunwind - llvm-mingw - gcc-9.3.0 toolchain: - - linux64-clang-13 + - linux64-clang-14 -linux64-clang-13-stage1: - description: "Clang 13 toolchain build" +linux64-clang-14-stage1: + description: "Clang 14 toolchain build" treeherder: - symbol: TL(clang13-stage1) + symbol: TL(clang14-stage1) run-on-projects: [trunk] run: using: toolchain-script script: build-clang.sh arguments: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/1stage.json' resources: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/1stage.json' toolchain-alias: - linux64-clang-toolchain toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - linux64-toolchain-sysroot -linux64-clang-13-profile: - description: "Clang 13 toolchain build" +linux64-clang-14-profile: + description: "Clang 14 toolchain build" treeherder: - symbol: TL(clang13-profile) + symbol: TL(clang14-profile) run: using: toolchain-script script: build-clang.sh arguments: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-stage-1.json' - 'build/build-clang/profile.json' resources: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-stage-1.json' - 'build/build-clang/profile.json' toolchain-artifact: public/build/merged.profdata fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 - - linux64-x64-compiler-rt-13 + - linux64-clang-14-stage1 + - linux64-x64-compiler-rt-14 - linux64-toolchain-sysroot -linux64-clang-13-raw: - description: "Clang 13 toolchain build" +linux64-clang-14-raw: + description: "Clang 14 toolchain build" treeherder: - symbol: TL(clang13-raw) + symbol: TL(clang14-raw) run: script: build-clang.sh arguments: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' resources: - 'build/build-clang/linux64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 - - linux64-clang-13-profile + - linux64-clang-14-stage1 + - linux64-clang-14-profile - linux64-toolchain-sysroot -linux64-clang-13: - description: "Clang 13 toolchain build" +linux64-clang-14: + description: "Clang 14 toolchain build" attributes: local-toolchain: true treeherder: - symbol: TL(clang13) + symbol: TL(clang14) worker-type: b-linux worker: max-run-time: 600 @@ -169,24 +169,24 @@ linux64-clang-13: fetches: toolchain: - linux64-cctools-port - - linux64-clang-13-raw - - android-aarch64-compiler-rt-13 - - android-arm-compiler-rt-13 - - android-x64-compiler-rt-13 - - android-x86-compiler-rt-13 - - linux64-aarch64-compiler-rt-13 - - linux64-x64-compiler-rt-13 - - linux64-x86-compiler-rt-13 - - macosx64-aarch64-compiler-rt-13 - - macosx64-x64-compiler-rt-13 - - wasm32-wasi-compiler-rt-13 - - win32-compiler-rt-13 - - win64-compiler-rt-13 + - linux64-clang-14-raw + - android-aarch64-compiler-rt-14 + - android-arm-compiler-rt-14 + - android-x64-compiler-rt-14 + - android-x86-compiler-rt-14 + - linux64-aarch64-compiler-rt-14 + - linux64-x64-compiler-rt-14 + - linux64-x86-compiler-rt-14 + - macosx64-aarch64-compiler-rt-14 + - macosx64-x64-compiler-rt-14 + - wasm32-wasi-compiler-rt-14 + - win32-compiler-rt-14 + - win64-compiler-rt-14 -macosx64-clang-13-raw: - description: "Clang 13 toolchain build" +macosx64-clang-14-raw: + description: "Clang 14 toolchain build" treeherder: - symbol: TM(clang-13-raw) + symbol: TM(clang-14-raw) worker-type: b-linux-large worker: max-run-time: 3600 @@ -194,31 +194,31 @@ macosx64-clang-13-raw: script: build-clang.sh arguments: - 'build/build-clang/macosx64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' resources: - 'build/build-clang/macosx64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - linux64-cctools-port - - linux64-clang-13-stage1 - - linux64-clang-13-profile + - linux64-clang-14-stage1 + - linux64-clang-14-profile - macosx64-sdk-11.0 - - macosx64-x64-compiler-rt-13 + - macosx64-x64-compiler-rt-14 -macosx64-clang-13: - description: "Clang 13 toolchain repack with MacOS Compiler RT libs" +macosx64-clang-14: + description: "Clang 14 toolchain repack with MacOS Compiler RT libs" attributes: local-toolchain: true treeherder: - symbol: TM(clang-13) + symbol: TM(clang-14) worker-type: b-linux worker: max-run-time: 600 @@ -233,24 +233,24 @@ macosx64-clang-13: fetches: toolchain: - linux64-cctools-port - - macosx64-clang-13-raw - - android-aarch64-compiler-rt-13 - - android-arm-compiler-rt-13 - - android-x64-compiler-rt-13 - - android-x86-compiler-rt-13 - - linux64-aarch64-compiler-rt-13 - - linux64-x64-compiler-rt-13 - - linux64-x86-compiler-rt-13 - - macosx64-aarch64-compiler-rt-13 - - macosx64-x64-compiler-rt-13 - - wasm32-wasi-compiler-rt-13 - - win32-compiler-rt-13 - - win64-compiler-rt-13 + - macosx64-clang-14-raw + - android-aarch64-compiler-rt-14 + - android-arm-compiler-rt-14 + - android-x64-compiler-rt-14 + - android-x86-compiler-rt-14 + - linux64-aarch64-compiler-rt-14 + - linux64-x64-compiler-rt-14 + - linux64-x86-compiler-rt-14 + - macosx64-aarch64-compiler-rt-14 + - macosx64-x64-compiler-rt-14 + - wasm32-wasi-compiler-rt-14 + - win32-compiler-rt-14 + - win64-compiler-rt-14 -macosx64-aarch64-clang-13-raw: - description: "Clang 13 toolchain build" +macosx64-aarch64-clang-14-raw: + description: "Clang 14 toolchain build" treeherder: - symbol: TM(clang-13-aarch64-raw) + symbol: TM(clang-14-aarch64-raw) worker-type: b-linux-large worker: env: @@ -260,31 +260,31 @@ macosx64-aarch64-clang-13-raw: script: build-clang.sh arguments: - 'build/build-clang/macosx64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' resources: - 'build/build-clang/macosx64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-3-stages.json' - 'build/build-clang/4stages-pgo.json' toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - linux64-cctools-port - - linux64-clang-13-stage1 - - linux64-clang-13-profile + - linux64-clang-14-stage1 + - linux64-clang-14-profile - macosx64-sdk-11.0 - - macosx64-aarch64-compiler-rt-13 + - macosx64-aarch64-compiler-rt-14 -macosx64-aarch64-clang-13: - description: "Clang 13 toolchain repack with MacOS Compiler RT libs" +macosx64-aarch64-clang-14: + description: "Clang 14 toolchain repack with MacOS Compiler RT libs" attributes: local-toolchain: true treeherder: - symbol: TM(clang-13-aarch64) + symbol: TM(clang-14-aarch64) worker-type: b-linux worker: max-run-time: 600 @@ -297,15 +297,15 @@ macosx64-aarch64-clang-13: fetches: toolchain: - linux64-cctools-port - - macosx64-aarch64-clang-13-raw - - macosx64-aarch64-compiler-rt-13 - - macosx64-x64-compiler-rt-13 - - wasm32-wasi-compiler-rt-13 + - macosx64-aarch64-clang-14-raw + - macosx64-aarch64-compiler-rt-14 + - macosx64-x64-compiler-rt-14 + - wasm32-wasi-compiler-rt-14 -win64-clang-13-raw: - description: "Clang-cl 13 toolchain build" +win64-clang-14-raw: + description: "Clang-cl 14 toolchain build" treeherder: - symbol: TW64(clang-13-raw) + symbol: TW64(clang-14-raw) worker-type: b-win2012 worker: max-run-time: 9000 @@ -313,31 +313,31 @@ win64-clang-13-raw: script: build-clang.sh arguments: - 'build/build-clang/win64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-stage-1-win64.json' - 'build/build-clang/4stages-pgo.json' resources: - 'build/build-clang/win64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/skip-stage-1-win64.json' - 'build/build-clang/4stages-pgo.json' toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 - cmake - ninja toolchain: - - win64-clang-13-stage1 - - win64-compiler-rt-13 - - win64-vs2017 + - win64-clang-14-stage1 + - win64-compiler-rt-14 + - win64-vs2019 -win64-clang-13: - description: "Clang-cl 13 toolchain build" +win64-clang-14: + description: "Clang-cl 14 toolchain build" attributes: local-toolchain: true treeherder: - symbol: TW64(clang-13) + symbol: TW64(clang-14) worker-type: b-linux worker: max-run-time: 600 @@ -350,44 +350,44 @@ win64-clang-13: fetches: toolchain: - linux64-cctools-port - - win64-clang-13-raw - - android-aarch64-compiler-rt-13 - - android-arm-compiler-rt-13 - - android-x64-compiler-rt-13 - - android-x86-compiler-rt-13 - - linux64-aarch64-compiler-rt-13 - - linux64-x64-compiler-rt-13 - - linux64-x86-compiler-rt-13 - - macosx64-aarch64-compiler-rt-13 - - macosx64-x64-compiler-rt-13 - - wasm32-wasi-compiler-rt-13 - - win32-compiler-rt-13 - - win64-compiler-rt-13 + - win64-clang-14-raw + - android-aarch64-compiler-rt-14 + - android-arm-compiler-rt-14 + - android-x64-compiler-rt-14 + - android-x86-compiler-rt-14 + - linux64-aarch64-compiler-rt-14 + - linux64-x64-compiler-rt-14 + - linux64-x86-compiler-rt-14 + - macosx64-aarch64-compiler-rt-14 + - macosx64-x64-compiler-rt-14 + - wasm32-wasi-compiler-rt-14 + - win32-compiler-rt-14 + - win64-compiler-rt-14 -win64-clang-13-stage1: - description: "Clang-cl 13 toolchain build stage 1" +win64-clang-14-stage1: + description: "Clang-cl 14 toolchain build stage 1" treeherder: - symbol: TW64(clang-13-stage1) + symbol: TW64(clang-14-stage1) worker-type: b-win2012 run: script: build-clang.sh arguments: - 'build/build-clang/win64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/1stage.json' resources: - 'build/build-clang/win64.json' - - 'build/build-clang/clang-13.json' + - 'build/build-clang/clang-14.json' - 'build/build-clang/1stage.json' toolchain-alias: win64-clang-toolchain toolchain-artifact: public/build/clang.tar.zst fetches: fetch: - - clang-13 + - clang-14 - cmake - ninja toolchain: - - win64-vs2017 + - win64-vs2019 linux64-clang-trunk-raw: description: "Clang trunk toolchain build" diff --git a/taskcluster/ci/toolchain/compiler-rt.yml b/taskcluster/ci/toolchain/compiler-rt.yml index cb25a0097558..9af19bf62360 100644 --- a/taskcluster/ci/toolchain/compiler-rt.yml +++ b/taskcluster/ci/toolchain/compiler-rt.yml @@ -10,210 +10,210 @@ job-defaults: using: toolchain-script script: build-compiler-rt.sh -android-aarch64-compiler-rt-13: - description: "android aarch64 Compiler-rt for Clang 13 toolchain build" +android-aarch64-compiler-rt-14: + description: "android aarch64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TA(aarch64-crt-13) + symbol: TA(aarch64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-aarch64-linux-android.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-android-ndk-linux-repack -android-arm-compiler-rt-13: - description: "android arm Compiler-rt for Clang 13 toolchain build" +android-arm-compiler-rt-14: + description: "android arm Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TA(arm-crt-13) + symbol: TA(arm-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-armv7-linux-android.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-android-ndk-linux-repack -android-x86-compiler-rt-13: - description: "android x86 Compiler-rt for Clang 13 toolchain build" +android-x86-compiler-rt-14: + description: "android x86 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TA(x86-crt-13) + symbol: TA(x86-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-i686-linux-android.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-android-ndk-linux-repack -android-x64-compiler-rt-13: - description: "android x64 Compiler-rt for Clang 13 toolchain build" +android-x64-compiler-rt-14: + description: "android x64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TA(x64-crt-13) + symbol: TA(x64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-x86_64-linux-android.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-android-ndk-linux-repack -linux64-x86-compiler-rt-13: - description: "Linux x86 Compiler-rt for Clang 13 toolchain build" +linux64-x86-compiler-rt-14: + description: "Linux x86 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TL(x86-crt-13) + symbol: TL(x86-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-i686-unknown-linux-gnu.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - sysroot-i686-linux-gnu -linux64-x64-compiler-rt-13: - description: "Linux x64 Compiler-rt for Clang 13 toolchain build" +linux64-x64-compiler-rt-14: + description: "Linux x64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TL(x64-crt-13) + symbol: TL(x64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-x86_64-unknown-linux-gnu.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - sysroot-x86_64-linux-gnu -linux64-aarch64-compiler-rt-13: - description: "Linux aarch64 Compiler-rt for Clang 13 toolchain build" +linux64-aarch64-compiler-rt-14: + description: "Linux aarch64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TL(aarch64-crt-13) + symbol: TL(aarch64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-aarch64-unknown-linux-gnu.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - sysroot-aarch64-linux-gnu -macosx64-x64-compiler-rt-13: - description: "macOS x64 Compiler-rt for Clang 13 toolchain build" +macosx64-x64-compiler-rt-14: + description: "macOS x64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TM(x64-crt-13) + symbol: TM(x64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-x86_64-apple-darwin.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - macosx64-sdk-11.0 -macosx64-aarch64-compiler-rt-13: - description: "macOS aarch64 Compiler-rt for Clang 13 toolchain build" +macosx64-aarch64-compiler-rt-14: + description: "macOS aarch64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TM(aarch64-crt-13) + symbol: TM(aarch64-crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-aarch64-apple-darwin.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - macosx64-sdk-11.0 -win32-compiler-rt-13: - description: "win32 x86 Compiler-rt for Clang 13 toolchain build" +win32-compiler-rt-14: + description: "win32 x86 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TW32(crt-13) + symbol: TW32(crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-i686-pc-windows-msvc.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-liblowercase - - win64-vs2017 + - win64-vs2019 -win64-compiler-rt-13: - description: "win64 x64 Compiler-rt for Clang 13 toolchain build" +win64-compiler-rt-14: + description: "win64 x64 Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TW64(crt-13) + symbol: TW64(crt-14) run: arguments: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh toolchain-artifact: public/build/compiler-rt-x86_64-pc-windows-msvc.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 - linux64-liblowercase - - win64-vs2017 + - win64-vs2019 -wasm32-wasi-compiler-rt-13: - description: "wasm32-wasi Compiler-rt for Clang 13 toolchain build" +wasm32-wasi-compiler-rt-14: + description: "wasm32-wasi Compiler-rt for Clang 14 toolchain build" treeherder: - symbol: TL(wasi-crt-13) + symbol: TL(wasi-crt-14) worker-type: b-linux-xlarge run: script: build-compiler-rt-wasi.sh @@ -221,7 +221,7 @@ wasm32-wasi-compiler-rt-13: toolchain-alias: wasm32-wasi-compiler-rt fetches: fetch: - - clang-13 + - clang-14 - wasi-sdk toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 diff --git a/taskcluster/ci/toolchain/llvm-symbolizer.yml b/taskcluster/ci/toolchain/llvm-symbolizer.yml index 4564f32e691c..e42672ff5ee1 100644 --- a/taskcluster/ci/toolchain/llvm-symbolizer.yml +++ b/taskcluster/ci/toolchain/llvm-symbolizer.yml @@ -11,9 +11,9 @@ job-defaults: toolchain-artifact: public/build/llvm-symbolizer.tar.zst fetches: fetch: - - clang-13 + - clang-14 toolchain: - - linux64-clang-13-stage1 + - linux64-clang-14-stage1 linux64-llvm-symbolizer: description: "llvm-symbolizer for Linux" @@ -22,9 +22,9 @@ linux64-llvm-symbolizer: run: arguments: - x86_64-unknown-linux-gnu - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh fetches: toolchain: @@ -37,9 +37,9 @@ macosx64-llvm-symbolizer: run: arguments: - x86_64-apple-darwin - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh fetches: toolchain: @@ -52,11 +52,11 @@ win64-llvm-symbolizer: run: arguments: - x86_64-pc-windows-msvc - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json resources: - - build/build-clang/clang-13.json + - build/build-clang/clang-14.json - taskcluster/scripts/misc/build-llvm-common.sh fetches: toolchain: - linux64-liblowercase - - win64-vs2017 + - win64-vs2019 diff --git a/taskcluster/ci/toolchain/sysroot.yml b/taskcluster/ci/toolchain/sysroot.yml index 7381911a0058..b494d6782e44 100644 --- a/taskcluster/ci/toolchain/sysroot.yml +++ b/taskcluster/ci/toolchain/sysroot.yml @@ -75,10 +75,10 @@ sysroot-wasm32-wasi: toolchain-artifact: public/build/sysroot-wasm32-wasi.tar.zst fetches: fetch: - - clang-13 + - clang-14 - wasi-sdk toolchain: - - linux64-clang-13 + - linux64-clang-14 sysroot-aarch64-linux-gnu: description: "Sysroot for linux64 aarch64 builds" diff --git a/taskcluster/ci/webrender/kind.yml b/taskcluster/ci/webrender/kind.yml index 6f753e1f1dbe..8f18cb76719d 100644 --- a/taskcluster/ci/webrender/kind.yml +++ b/taskcluster/ci/webrender/kind.yml @@ -107,15 +107,15 @@ jobs: name: public/build/wrench-macos-headless.tar.bz2 path: /builds/worker/artifacts/wrench-macos-headless.tar.bz2 dependencies: - macosx64-clang-13: toolchain-macosx64-clang-13 + macosx64-clang-14: toolchain-macosx64-clang-14 fetches: toolchain: - linux64-rust-macos - linux64-cctools-port - - linux64-clang-13 + - linux64-clang-14 - macosx64-sdk-10.12 - wrench-deps - macosx64-clang-13: + macosx64-clang-14: - artifact: clang.tar.zst dest: clang-mac run: diff --git a/taskcluster/scripts/misc/build-compiler-rt-wasi.sh b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh index d23e4b1e5a23..05f45d306cd9 100755 --- a/taskcluster/scripts/misc/build-compiler-rt-wasi.sh +++ b/taskcluster/scripts/misc/build-compiler-rt-wasi.sh @@ -7,6 +7,34 @@ dir=${artifact%.tar.*} cd $MOZ_FETCHES_DIR/wasi-sdk LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project +# Apply patch from https://github.com/WebAssembly/wasi-libc/pull/265 +patch -p1 <<'EOF' +diff --git a/src/wasi-libc/Makefile b/src/wasi-libc/Makefile +index f597985..1bec3ae 100644 +--- a/src/wasi-libc/Makefile ++++ b/src/wasi-libc/Makefile +@@ -530,6 +530,7 @@ check-symbols: startup_files libc + @# + @# TODO: Undefine __FLOAT128__ for now since it's not in clang 8.0. + @# TODO: Filter out __FLT16_* for now, as not all versions of clang have these. ++ @# TODO: Filter out __NO_MATH_ERRNO_ and a few __*WIDTH__ that are new to clang 14. + $(WASM_CC) $(CFLAGS) "$(SYSROOT_SHARE)/include-all.c" \ + -isystem $(SYSROOT_INC) \ + -std=gnu17 \ +@@ -548,8 +549,11 @@ check-symbols: startup_files libc + -U__GNUC_PATCHLEVEL__ \ + -U__VERSION__ \ + -U__FLOAT128__ \ ++ -U__NO_MATH_ERRNO__ \ ++ -U__BITINT_MAXWIDTH__ \ + | sed -e 's/__[[:upper:][:digit:]]*_ATOMIC_\([[:upper:][:digit:]_]*\)_LOCK_FREE/__compiler_ATOMIC_\1_LOCK_FREE/' \ + | grep -v '^#define __FLT16_' \ ++ | grep -v '^#define __\(BOOL\|INT_\(LEAST\|FAST\)\(8\|16\|32\|64\)\|INT\|LONG\|LLONG\|SHRT\)_WIDTH__' \ + > "$(SYSROOT_SHARE)/predefined-macros.txt" + + # Check that the computed metadata matches the expected metadata. +EOF + mkdir -p build/install/wasi # The wasi-sdk build system wants to build clang itself. We trick it into # thinking it did, and put our own clang where it would have built its own. diff --git a/taskcluster/scripts/misc/build-llvm-common.sh b/taskcluster/scripts/misc/build-llvm-common.sh index bdc54462b3b1..7e3c8d7c9186 100755 --- a/taskcluster/scripts/misc/build-llvm-common.sh +++ b/taskcluster/scripts/misc/build-llvm-common.sh @@ -129,9 +129,9 @@ case "$target" in $EXTRA_CMAKE_FLAGS -DCMAKE_TOOLCHAIN_FILE=$MOZ_FETCHES_DIR/llvm-project/llvm/cmake/platforms/WinMsvc.cmake -DLLVM_NATIVE_TOOLCHAIN=$MOZ_FETCHES_DIR/clang - -DMSVC_BASE=$MOZ_FETCHES_DIR/vs/vc/tools/msvc/14.16.27023 + -DMSVC_BASE=$MOZ_FETCHES_DIR/vs/vc/tools/msvc/14.29.30133 -DWINSDK_BASE=$MOZ_FETCHES_DIR/vs/sdk - -DWINSDK_VER=10.0.17134.0 + -DWINSDK_VER=10.0.19041.0 -DHOST_ARCH=${target%-pc-windows-msvc} " ;; diff --git a/taskcluster/scripts/misc/build-sysroot-wasi.sh b/taskcluster/scripts/misc/build-sysroot-wasi.sh index 6974b9bb163c..41cbd7acbdf0 100755 --- a/taskcluster/scripts/misc/build-sysroot-wasi.sh +++ b/taskcluster/scripts/misc/build-sysroot-wasi.sh @@ -7,6 +7,34 @@ sysroot=${artifact%.tar.*} cd $MOZ_FETCHES_DIR/wasi-sdk LLVM_PROJ_DIR=$MOZ_FETCHES_DIR/llvm-project +# Apply patch from https://github.com/WebAssembly/wasi-libc/pull/265 +patch -p1 <<'EOF' +diff --git a/src/wasi-libc/Makefile b/src/wasi-libc/Makefile +index f597985..1bec3ae 100644 +--- a/src/wasi-libc/Makefile ++++ b/src/wasi-libc/Makefile +@@ -530,6 +530,7 @@ check-symbols: startup_files libc + @# + @# TODO: Undefine __FLOAT128__ for now since it's not in clang 8.0. + @# TODO: Filter out __FLT16_* for now, as not all versions of clang have these. ++ @# TODO: Filter out __NO_MATH_ERRNO_ and a few __*WIDTH__ that are new to clang 14. + $(WASM_CC) $(CFLAGS) "$(SYSROOT_SHARE)/include-all.c" \ + -isystem $(SYSROOT_INC) \ + -std=gnu17 \ +@@ -548,8 +549,11 @@ check-symbols: startup_files libc + -U__GNUC_PATCHLEVEL__ \ + -U__VERSION__ \ + -U__FLOAT128__ \ ++ -U__NO_MATH_ERRNO__ \ ++ -U__BITINT_MAXWIDTH__ \ + | sed -e 's/__[[:upper:][:digit:]]*_ATOMIC_\([[:upper:][:digit:]_]*\)_LOCK_FREE/__compiler_ATOMIC_\1_LOCK_FREE/' \ + | grep -v '^#define __FLT16_' \ ++ | grep -v '^#define __\(BOOL\|INT_\(LEAST\|FAST\)\(8\|16\|32\|64\)\|INT\|LONG\|LLONG\|SHRT\)_WIDTH__' \ + > "$(SYSROOT_SHARE)/predefined-macros.txt" + + # Check that the computed metadata matches the expected metadata. +EOF + mkdir -p build/install/wasi # The wasi-sdk build system wants to build clang itself. We trick it into # thinking it did, and put our own clang where it would have built its own. diff --git a/taskcluster/scripts/misc/vs-setup.sh b/taskcluster/scripts/misc/vs-setup.sh index 8773598738ef..94bf63fbdea1 100644 --- a/taskcluster/scripts/misc/vs-setup.sh +++ b/taskcluster/scripts/misc/vs-setup.sh @@ -2,8 +2,14 @@ VSDIR=vs VSPATH="${MOZ_FETCHES_DIR}/${VSDIR}" UNIX_VSPATH="$(cd ${MOZ_FETCHES_DIR} && pwd)/${VSDIR}" VCDIR=vc/tools/msvc/14.16.27023 +if [ ! -d "${VSPATH}/${VCDIR}" ]; then + VCDIR=vc/tools/msvc/14.29.30133 +fi SDKDIR="windows kits/10" SDK_VERSION=10.0.17134.0 +if [ ! -d "${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}" ]; then + SDK_VERSION=10.0.19041.0 +fi export INCLUDE="${VSPATH}/${VCDIR}/include;${VSPATH}/${VCDIR}/atlmfc/include;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/ucrt;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/shared;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/um;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/winrt;${VSPATH}/dia sdk/include" export LIB="${VSPATH}/${VCDIR}/lib/x64;${VSPATH}/${VCDIR}/atlmfc/lib/x64;${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}/um/x64;${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}/ucrt/x64;${VSPATH}/dia sdk/lib/amd64" diff --git a/taskcluster/scripts/misc/vs-setup32.sh b/taskcluster/scripts/misc/vs-setup32.sh index 8537201b53af..b0d1e5ecd189 100644 --- a/taskcluster/scripts/misc/vs-setup32.sh +++ b/taskcluster/scripts/misc/vs-setup32.sh @@ -2,8 +2,14 @@ VSDIR=vs VSPATH="${MOZ_FETCHES_DIR}/${VSDIR}" UNIX_VSPATH="$(cd ${MOZ_FETCHES_DIR} && pwd)/${VSDIR}" VCDIR=vc/tools/msvc/14.16.27023 +if [ ! -d "${VSPATH}/${VCDIR}" ]; then + VCDIR=vc/tools/msvc/14.29.30133 +fi SDKDIR="windows kits/10" SDK_VERSION=10.0.17134.0 +if [ ! -d "${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}" ]; then + SDK_VERSION=10.0.19041.0 +fi export INCLUDE="${VSPATH}/${VCDIR}/include;${VSPATH}/${VCDIR}/atlmfc/include;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/ucrt;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/shared;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/um;${VSPATH}/${SDKDIR}/include/${SDK_VERSION}/winrt;${VSPATH}/dia sdk/include" export LIB="${VSPATH}/${VCDIR}/lib/x86;${VSPATH}/${VCDIR}/atlmfc/lib/x86;${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}/um/x86;${VSPATH}/${SDKDIR}/lib/${SDK_VERSION}/ucrt/x86;${VSPATH}/dia sdk/lib" diff --git a/tools/clang-tidy/config.yaml b/tools/clang-tidy/config.yaml index 51b2e63a8a8e..9d17b5319180 100644 --- a/tools/clang-tidy/config.yaml +++ b/tools/clang-tidy/config.yaml @@ -19,7 +19,7 @@ platforms: # Minimum clang-tidy version that is required for all the following checkers # to work properly. # This is also used by 'mach clang-format' -package_version: "13.0.1" +package_version: "14.0.0" clang_checkers: - name: -* publish: !!bool no