Bug 1564252 - Move to clang 8.0.1 r=glandium
authorSylvestre Ledru <sledru@mozilla.com>
Tue, 20 Aug 2019 21:06:24 +0200
changeset 489842 c46043c8d06fe5eab0758e3aa027e81a2c2778e7
parent 489841 fa5a2f0bcdc6b747bc8ff88db9481439198b42a5
child 489843 bd63dad85d3442da18077660b9006de7969dd58c
push id113973
push usersledru@mozilla.com
push dateMon, 26 Aug 2019 17:21:38 +0000
treeherdermozilla-inbound@c46043c8d06f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1564252
milestone70.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1564252 - Move to clang 8.0.1 r=glandium Differential Revision: https://phabricator.services.mozilla.com//D42325
browser/config/mozconfigs/linux64/code-coverage
browser/config/mozconfigs/macosx64/code-coverage
build/build-clang/clang-win64.json
build/build-clang/r355141-arm64-cfg.patch
taskcluster/ci/fetch/toolchains.yml
tools/clang-tidy/config.yaml
--- a/browser/config/mozconfigs/linux64/code-coverage
+++ b/browser/config/mozconfigs/linux64/code-coverage
@@ -7,11 +7,11 @@ TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir}
 ac_add_options --disable-install-strip
 ac_add_options --disable-elf-hack
 ac_add_options --disable-sandbox
 ac_add_options --disable-dmd
 ac_add_options --disable-profiling
 ac_add_options --disable-warnings-as-errors
 ac_add_options --enable-coverage
 
-export LDFLAGS="--coverage -L$MOZ_FETCHES_DIR/clang/lib/clang/8.0.0/lib/linux/"
+export LDFLAGS="--coverage -L$MOZ_FETCHES_DIR/clang/lib/clang/8.0.1/lib/linux/"
 export LIBS="-lclang_rt.profile-x86_64"
 export RUSTFLAGS="-Ccodegen-units=1 -Zprofile -Zno-landing-pads -Clink-dead-code -Coverflow-checks=off"
--- a/browser/config/mozconfigs/macosx64/code-coverage
+++ b/browser/config/mozconfigs/macosx64/code-coverage
@@ -3,11 +3,11 @@
 unset MOZ_LTO
 
 TOOLTOOL_DIR=${TOOLTOOL_DIR:-$topsrcdir}
 
 ac_add_options --disable-sandbox
 ac_add_options --disable-warnings-as-errors
 ac_add_options --enable-coverage
 
-export LDFLAGS="-coverage -L$MOZ_FETCHES_DIR/clang/lib/clang/8.0.0/lib/darwin/"
+export LDFLAGS="-coverage -L$MOZ_FETCHES_DIR/clang/lib/clang/8.0.1/lib/darwin/"
 export LIBS="-lclang_rt.profile_osx"
 export RUSTFLAGS="-Ccodegen-units=1 -Zprofile -Zno-landing-pads -Clink-dead-code -Coverflow-checks=off"
--- a/build/build-clang/clang-win64.json
+++ b/build/build-clang/clang-win64.json
@@ -6,14 +6,13 @@
     "python_path": "c:/mozilla-build/python/python.exe",
     "cc": "cl.exe",
     "cxx": "cl.exe",
     "ml": "ml64.exe",
     "patches": [
       "workaround-issue38586.patch",
       "unpoison-thread-stacks.patch",
       "downgrade-mangling-error.patch",
-      "r355141-arm64-cfg.patch",
       "r357725-asan-vs2019.patch",
       "loosen-msvc-detection.patch",
       "revert-r355311.patch"
     ]
 }
deleted file mode 100644
--- a/build/build-clang/r355141-arm64-cfg.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-[COFF] Add address-taken import thunks to the fid table
-
-https://bugs.llvm.org/show_bug.cgi?id=39799
-https://reviews.llvm.org/D58739
-
---- a/lld/COFF/Writer.cpp
-+++ b/lld/COFF/Writer.cpp
-@@ -1390,19 +1390,47 @@
- // symbol in an executable section.
- static void maybeAddAddressTakenFunction(SymbolRVASet &AddressTakenSyms,
-                                          Symbol *S) {
--  auto *D = dyn_cast_or_null<DefinedCOFF>(S);
--
--  // Ignore undefined symbols and references to non-functions (e.g. globals and
--  // labels).
--  if (!D ||
--      D->getCOFFSymbol().getComplexType() != COFF::IMAGE_SYM_DTYPE_FUNCTION)
-+  if (!S)
-     return;
- 
--  // Mark the symbol as address taken if it's in an executable section.
--  Chunk *RefChunk = D->getChunk();
--  OutputSection *OS = RefChunk ? RefChunk->getOutputSection() : nullptr;
--  if (OS && OS->Header.Characteristics & IMAGE_SCN_MEM_EXECUTE)
--    addSymbolToRVASet(AddressTakenSyms, D);
-+  switch (S->kind()) {
-+  case Symbol::DefinedLocalImportKind:
-+  case Symbol::DefinedImportDataKind:
-+    // Defines an __imp_ pointer, so it is data, so it is ignored.
-+    break;
-+  case Symbol::DefinedCommonKind:
-+    // Common is always data, so it is ignored.
-+    break;
-+  case Symbol::DefinedAbsoluteKind:
-+  case Symbol::DefinedSyntheticKind:
-+    // Absolute is never code, synthetic generally isn't and usually isn't
-+    // determinable.
-+    break;
-+  case Symbol::LazyKind:
-+  case Symbol::UndefinedKind:
-+    // Undefined symbols resolve to zero, so they don't have an RVA. Lazy
-+    // symbols shouldn't have relocations.
-+    break;
-+
-+  case Symbol::DefinedImportThunkKind:
-+    // Thunks are always code, include them.
-+    addSymbolToRVASet(AddressTakenSyms, cast<Defined>(S));
-+    break;
-+
-+  case Symbol::DefinedRegularKind: {
-+    // This is a regular, defined, symbol from a COFF file. Mark the symbol as
-+    // address taken if the symbol type is function and it's in an executable
-+    // section.
-+    auto *D = cast<DefinedRegular>(S);
-+    if (D->getCOFFSymbol().getComplexType() == COFF::IMAGE_SYM_DTYPE_FUNCTION) {
-+      Chunk *RefChunk = D->getChunk();
-+      OutputSection *OS = RefChunk ? RefChunk->getOutputSection() : nullptr;
-+      if (OS && OS->Header.Characteristics & IMAGE_SCN_MEM_EXECUTE)
-+        addSymbolToRVASet(AddressTakenSyms, D);
-+    }
-+    break;
-+  }
-+  }
- }
- 
- // Visit all relocations from all section contributions of this object file and
---- a/lld/test/COFF/guardcf-thunk.s
-+++ b/lld/test/COFF/guardcf-thunk.s
-@@ -0,0 +1,43 @@
-+# REQUIRES: x86
-+
-+# Make a DLL that exports exportfn1.
-+# RUN: yaml2obj < %p/Inputs/export.yaml > %t.obj
-+# RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1 /implib:%t.lib
-+
-+# Make an obj that takes the address of that exported function.
-+# RUN: llvm-mc -filetype=obj -triple=x86_64-windows-msvc %s -o %t2.obj
-+# RUN: lld-link -entry:main -guard:cf %t2.obj %t.lib -nodefaultlib -out:%t.exe
-+# RUN: llvm-readobj -coff-load-config %t.exe | FileCheck %s
-+
-+# Check that the gfids table contains *exactly* two entries, one for exportfn1
-+# and one for main.
-+# CHECK: GuardFidTable [
-+# CHECK-NEXT: 0x{{[0-9A-Fa-f]+0$}}
-+# CHECK-NEXT: 0x{{[0-9A-Fa-f]+0$}}
-+# CHECK-NEXT: ]
-+
-+
-+        .def     @feat.00;
-+        .scl    3;
-+        .type   0;
-+        .endef
-+        .globl  @feat.00
-+@feat.00 = 0x001
-+
-+        .section .text,"rx"
-+        .def     main; .scl    2; .type   32; .endef
-+        .global main
-+main:
-+        leaq exportfn1(%rip), %rax
-+        retq
-+
-+        .section .rdata,"dr"
-+.globl _load_config_used
-+_load_config_used:
-+        .long 256
-+        .fill 124, 1, 0
-+        .quad __guard_fids_table
-+        .quad __guard_fids_count
-+        .long __guard_flags
-+        .fill 128, 1, 0
-+
--- a/taskcluster/ci/fetch/toolchains.yml
+++ b/taskcluster/ci/fetch/toolchains.yml
@@ -389,21 +389,21 @@ clang-4.0:
 clang-7:
     description: clang 7 source code
     fetch:
         type: git
         repo: https://github.com/llvm/llvm-project
         revision: d0d8eb2e5415b8be29343e3c17a18e49e67b5551
 
 clang-8:
-    description: clang 8 source code
+    description: clang 8.0.1 source code
     fetch:
         type: git
         repo: https://github.com/llvm/llvm-project
-        revision: d2298e74235598f15594fe2c99bbac870a507c59
+        revision: 19a71f6bdf2dddb10764939e7f0ec2b98dba76c9
 
 ninja:
     description: ninja 1.9.0
     fetch:
         type: static-url
         url: https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip
         sha256: 2d70010633ddaacc3af4ffbd21e22fae90d158674a09e132e06424ba3ab036e9
         size: 254497
--- a/tools/clang-tidy/config.yaml
+++ b/tools/clang-tidy/config.yaml
@@ -13,17 +13,17 @@ target: obj-x86_64-pc-linux-gnu
 # 5. Commit this file + the .cpp test case + the json result
 platforms:
   - linux64
   - macosx64
   - win32
   - win64
 # Minimum clang-tidy version that is required for all the following checkers
 # to work properly.
-package_version: "8.0.0"
+package_version: "8.0.1"
 clang_checkers:
   - name: -*
     publish: !!bool no
   - name: bugprone-argument-comment
     reliability: high
   - name: bugprone-assert-side-effect
     reliability: high
   - name: bugprone-bool-pointer-implicit-conversion