Hello community,

here is the log from the commit of package llvm9 for openSUSE:Factory checked 
in at 2019-12-25 10:54:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/llvm9 (Old)
 and      /work/SRC/openSUSE:Factory/.llvm9.new.6675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "llvm9"

Wed Dec 25 10:54:29 2019 rev:5 rq:758954 version:9.0.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/llvm9/llvm9.changes      2019-12-11 
12:03:17.144786777 +0100
+++ /work/SRC/openSUSE:Factory/.llvm9.new.6675/llvm9.changes    2019-12-25 
10:54:50.101629934 +0100
@@ -1,0 +2,15 @@
+Fri Dec 20 21:13:19 UTC 2019 - Aaron Puchert <[email protected]>
+
+- Update to version 9.0.1.
+  * This release contains bug-fixes for the LLVM 9.0.0 release.
+    This release is API and ABI compatible with 9.0.0.
+- Drop patches that have landed upstream:
+  * dont-install-example-analyzer-plugins.patch
+  * fix-module-test.patch
+  * llvm-add-missing-include.patch
+- Drop set-revision.patch, don't provide revision number in clang.
+  The upstream repository has moved from Subversion to git, so the
+  revision number is just a hash, which limits its usefulness.
+- Rebase llvm-do-not-install-static-libraries.patch.
+
+-------------------------------------------------------------------

Old:
----
  cfe-9.0.0.src.tar.xz
  cfe-docs-9.0.0.src.tar.xz
  clang-tools-extra-9.0.0.src.tar.xz
  compiler-rt-9.0.0.src.tar.xz
  dont-install-example-analyzer-plugins.patch
  fix-module-test.patch
  libcxx-9.0.0.src.tar.xz
  libcxxabi-9.0.0.src.tar.xz
  lld-9.0.0.src.tar.xz
  lldb-9.0.0.src.tar.xz
  llvm-9.0.0.src.tar.xz
  llvm-add-missing-include.patch
  llvm-docs-9.0.0.src.tar.xz
  openmp-9.0.0.src.tar.xz
  polly-9.0.0.src.tar.xz
  set-revision.patch

New:
----
  clang-9.0.1.src.tar.xz
  clang-docs-9.0.1.src.tar.xz
  clang-tools-extra-9.0.1.src.tar.xz
  compiler-rt-9.0.1.src.tar.xz
  libcxx-9.0.1.src.tar.xz
  libcxxabi-9.0.1.src.tar.xz
  lld-9.0.1.src.tar.xz
  lldb-9.0.1.src.tar.xz
  llvm-9.0.1.src.tar.xz
  llvm-docs-9.0.1.src.tar.xz
  openmp-9.0.1.src.tar.xz
  polly-9.0.1.src.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ llvm9.spec ++++++
--- /var/tmp/diff_new_pack.q9RejU/_old  2019-12-25 10:54:52.369630645 +0100
+++ /var/tmp/diff_new_pack.q9RejU/_new  2019-12-25 10:54:52.369630645 +0100
@@ -16,13 +16,12 @@
 #
 
 
-%define _relver 9.0.0
+%define _relver 9.0.1
 %define _minor  9.0
 %define _sonum  9
 # Integer version used by update-alternatives
-%define _uaver  900
+%define _uaver  901
 %define _socxx  1
-%define _revsn  372316
 %ifarch x86_64 aarch64 %arm
 %bcond_without libcxx
 %else
@@ -67,32 +66,30 @@
 %endif
 
 Name:           llvm9
-Version:        9.0.0
+Version:        9.0.1
 Release:        0
 Summary:        Low Level Virtual Machine
 License:        Apache-2.0 WITH LLVM-exception OR NCSA
 Group:          Development/Languages/Other
 URL:            https://www.llvm.org/
 # NOTE: please see README.packaging in the llvm package for details on how to 
update this package
-Source0:        https://releases.llvm.org/%{_relver}/llvm-%{_relver}.src.tar.xz
-Source1:        https://releases.llvm.org/%{_relver}/cfe-%{_relver}.src.tar.xz
-Source2:        
https://releases.llvm.org/%{_relver}/clang-tools-extra-%{_relver}.src.tar.xz
-Source3:        
https://releases.llvm.org/%{_relver}/compiler-rt-%{_relver}.src.tar.xz
-Source4:        
https://releases.llvm.org/%{_relver}/libcxx-%{_relver}.src.tar.xz
-Source5:        
https://releases.llvm.org/%{_relver}/libcxxabi-%{_relver}.src.tar.xz
-Source6:        
https://releases.llvm.org/%{_relver}/openmp-%{_relver}.src.tar.xz
-Source7:        https://releases.llvm.org/%{_relver}/lld-%{_relver}.src.tar.xz
-Source8:        https://releases.llvm.org/%{_relver}/lldb-%{_relver}.src.tar.xz
-Source9:        
https://releases.llvm.org/%{_relver}/polly-%{_relver}.src.tar.xz
+Source0:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/llvm-%{version}.src.tar.xz
+Source1:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-%{version}.src.tar.xz
+Source2:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/clang-tools-extra-%{version}.src.tar.xz
+Source3:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/compiler-rt-%{version}.src.tar.xz
+Source4:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/libcxx-%{version}.src.tar.xz
+Source5:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/libcxxabi-%{version}.src.tar.xz
+Source6:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/openmp-%{version}.src.tar.xz
+Source7:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lld-%{version}.src.tar.xz
+Source8:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/lldb-%{version}.src.tar.xz
+Source9:        
https://github.com/llvm/llvm-project/releases/download/llvmorg-%{version}/polly-%{version}.src.tar.xz
 # Docs are created manually, see below
 Source50:       llvm-docs-%{version}.src.tar.xz
-Source51:       cfe-docs-%{version}.src.tar.xz
+Source51:       clang-docs-%{version}.src.tar.xz
 Source100:      %{name}-rpmlintrc
 Source101:      baselibs.conf
 # PATCH-FIX-OPENSUSE lto-disable-cache.patch -- Disable ThinLTO cache
 Patch0:         lto-disable-cache.patch
-# PATCH-FIX-OPENSUSE set-revision.patch [email protected] -- Allow us to set 
revision
-Patch1:         set-revision.patch
 # PATCH-FIX-OPENSUSE assume-opensuse.patch [email protected] -- Always enable 
openSUSE/SUSE features
 Patch2:         assume-opensuse.patch
 # PATCH-FIX-OPENSUSE default-to-i586.patch -- Use i586 as default target for 
32bit
@@ -108,8 +105,6 @@
 Patch12:        link-lldb-shared.patch
 Patch13:        llvm-normally-versioned-libllvm.patch
 Patch14:        llvm-do-not-install-static-libraries.patch
-Patch15:        dont-install-example-analyzer-plugins.patch
-Patch16:        fix-module-test.patch
 Patch20:        llvm_build_tablegen_component_as_shared_library.patch
 Patch21:        tests-use-python3.patch
 Patch22:        llvm-better-detect-64bit-atomics-support.patch
@@ -119,9 +114,8 @@
 Patch27:        openmp-export-fini.patch
 # 
https://github.com/llvm/llvm-project/commit/343597789eba1e6482e130b0c1b0818b1432d311
 Patch28:        gwp-asan-lto.patch
-# Replace deprecated platform.linux_distribution by distro.linux_distribution.
+# Do not use the deprecated platform.linux_distribution.
 Patch29:        libcxx-tests-linux-distribution.patch
-Patch30:        llvm-add-missing-include.patch
 BuildRequires:  binutils-devel >= 2.21.90
 %if %{with gold}
 BuildRequires:  binutils-gold
@@ -549,7 +543,7 @@
 This package contains the development files for Polly.
 
 %prep
-%setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -b 50 -a 51 -n 
llvm-%{_relver}.src
+%setup -q -a 1 -a 2 -a 3 -a 4 -a 5 -a 6 -a 7 -a 8 -a 9 -b 50 -a 51 -n 
llvm-%{version}.src
 
 %patch0 -p2
 %patch5 -p1
@@ -559,22 +553,18 @@
 %patch21 -p1
 %patch22 -p1
 %patch24 -p1
-%patch30 -p2
 
-pushd compiler-rt-%{_relver}.src
+pushd compiler-rt-%{version}.src
 %patch28 -p2
 popd
 
-pushd cfe-%{_relver}.src
-%patch1 -p1
+pushd clang-%{version}.src
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
 %patch6 -p1
 %patch8 -p1
 %patch9 -p2
-%patch15 -p2
-%patch16 -p2
 %patch26 -p1
 
 # We hardcode openSUSE
@@ -583,17 +573,14 @@
 # We hardcode i586
 rm test/Driver/x86_features.c
 rm test/Driver/nacl-direct.c
-
-sed -i s,CLANG_REVISION,\"%{_revsn}\",g lib/Basic/Version.cpp
-sed -i s,LLVM_REVISION,\"%{_revsn}\",g lib/Basic/Version.cpp
 popd
 
-pushd clang-tools-extra-%{_relver}.src
+pushd clang-tools-extra-%{version}.src
 %patch10 -p2
 popd
 
 %if %{with lldb}
-pushd lldb-%{_relver}.src
+pushd lldb-%{version}.src
 %patch11 -p1
 %patch12 -p2
 # Set LLDB revision
@@ -602,7 +589,7 @@
 %endif
 
 %if %{with libcxx}
-pushd libcxx-%{_relver}.src
+pushd libcxx-%{version}.src
 %patch29 -p2
 rm test/libcxx/thread/thread.threads/thread.thread.this/sleep_for.pass.cpp
 rm 
test/std/localization/locale.categories/category.time/locale.time.get.byname/get_monthname.pass.cpp
@@ -613,28 +600,28 @@
 popd
 %endif
 
-pushd openmp-%{_relver}.src
+pushd openmp-%{version}.src
 %patch27 -p2
 popd
 
 # Move into right place
-mv cfe-%{_relver}.src tools/clang
-mv compiler-rt-%{_relver}.src projects/compiler-rt
-mv clang-tools-extra-%{_relver}.src tools/clang/tools/extra
-mv lld-%{_relver}.src tools/lld
-mv polly-%{_relver}.src tools/polly
+mv clang-%{version}.src tools/clang
+mv compiler-rt-%{version}.src projects/compiler-rt
+mv clang-tools-extra-%{version}.src tools/clang/tools/extra
+mv lld-%{version}.src tools/lld
+mv polly-%{version}.src tools/polly
 
 %if %{with lldb}
-mv lldb-%{_relver}.src tools/lldb
+mv lldb-%{version}.src tools/lldb
 %endif
 
 %if %{with openmp}
-mv openmp-%{_relver}.src  projects/openmp
+mv openmp-%{version}.src  projects/openmp
 %endif
 
 %if %{with libcxx}
-mv libcxx-%{_relver}.src projects/libcxx
-mv libcxxabi-%{_relver}.src projects/libcxxabi
+mv libcxx-%{version}.src projects/libcxx
+mv libcxxabi-%{version}.src projects/libcxxabi
 %endif
 
 %build
@@ -835,14 +822,16 @@
 
 # Docs are prebuilt due to sphinx dependency
 #
-# pushd llvm-9.0.0.src/docs
+# tar xf llvm-9.0.1.src.tar.xz
+# tar xf clang-9.0.1.src.tar.xz
+# pushd llvm-9.0.1.src/docs
 # make -f Makefile.sphinx man html
 # popd
-# pushd cfe-9.0.0.src/docs
+# pushd clang-9.0.1.src/docs
 # make -f Makefile.sphinx man html
 # popd
-# tar cvJf llvm-docs-9.0.0.src.tar.xz llvm-9.0.0.src/docs/_build/{man,html}
-# tar cvJf cfe-docs-9.0.0.src.tar.xz cfe-9.0.0.src/docs/_build/{man,html}
+# tar cvJf llvm-docs-9.0.1.src.tar.xz llvm-9.0.1.src/docs/_build/{man,html}
+# tar cvJf clang-docs-9.0.1.src.tar.xz clang-9.0.1.src/docs/_build/{man,html}
 
 # Build man/html pages
 pushd docs
@@ -999,7 +988,6 @@
 %_llvm_minorver %{_minor}
 %_llvm_sonum  %{_sonum}
 %_libcxx_sonum %{_socxx}
-%_llvm_revision  %{_revsn}
 
 # Build information
 %_llvm_with_libcxx %{with libcxx}

++++++ clang-tools-extra-9.0.0.src.tar.xz -> clang-9.0.1.src.tar.xz ++++++
/work/SRC/openSUSE:Factory/llvm9/clang-tools-extra-9.0.0.src.tar.xz 
/work/SRC/openSUSE:Factory/.llvm9.new.6675/clang-9.0.1.src.tar.xz differ: char 
25, line 1

++++++ clang-tools-extra-9.0.0.src.tar.xz -> clang-docs-9.0.1.src.tar.xz ++++++
++++ 402079 lines of diff (skipped)

++++++ clang-tools-extra-9.0.0.src.tar.xz -> clang-tools-extra-9.0.1.src.tar.xz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/clang-tools-extra-9.0.0.src/clangd/test/formatting.test 
new/clang-tools-extra-9.0.1.src/clangd/test/formatting.test
--- old/clang-tools-extra-9.0.0.src/clangd/test/formatting.test 2019-06-10 
16:26:21.000000000 +0200
+++ new/clang-tools-extra-9.0.1.src/clangd/test/formatting.test 2019-12-11 
20:15:30.000000000 +0100
@@ -1,174 +1,174 @@
-# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
-{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
----
-{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","version":1,"text":"int
 foo ( int x ) {\n    x = x+1;\n    return x;\n    }"}}}
----
-{"jsonrpc":"2.0","id":1,"method":"textDocument/rangeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"range":{"start":{"line":1,"character":4},"end":{"line":1,"character":12}}}}
-#      CHECK:   "id": 1,
-# CHECK-NEXT:  "jsonrpc": "2.0",
-# CHECK-NEXT:  "result": [
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "\n  ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 4,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 19,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": " ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 9,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 9,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": " ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 10,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 10,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "\n  ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 4,
-# CHECK-NEXT:          "line": 2
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 12,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    }
-# CHECK-NEXT:  ]
----
-{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":5},"contentChanges":[{"text":"int
 foo ( int x ) {\n  x = x + 1;\n  return x;\n    }"}]}}
-#
-#
----
-{"jsonrpc":"2.0","id":2,"method":"textDocument/rangeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"range":{"start":{"line":1,"character":2},"end":{"line":1,"character":12}}}}
-#      CHECK:  "id": 2,
-# CHECK-NEXT:  "jsonrpc": "2.0",
-# CHECK-NEXT:  "result": []
----
-{"jsonrpc":"2.0","id":3,"method":"textDocument/formatting","params":{"textDocument":{"uri":"test:///foo.c"}}}
-#      CHECK:  "id": 3,
-# CHECK-NEXT:  "jsonrpc": "2.0",
-# CHECK-NEXT:  "result": [
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 8,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 7,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 10,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 9,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 16,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 15,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "\n",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 4,
-# CHECK-NEXT:          "line": 3
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 11,
-# CHECK-NEXT:          "line": 2
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    }
-# CHECK-NEXT:  ]
----
-{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":9},"contentChanges":[{"text":"int
 foo(int x) {\n  x = x + 1;\n  return x;\n}"}]}}
----
-{"jsonrpc":"2.0","id":4,"method":"textDocument/formatting","params":{"textDocument":{"uri":"test:///foo.c"}}}
-#      CHECK:  "id": 4,
-# CHECK-NEXT:  "jsonrpc": "2.0",
-# CHECK-NEXT:  "result": []
----
-{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":5},"contentChanges":[{"text":"int
 x=\n"}]}}
----
-{"jsonrpc":"2.0","id":5,"method":"textDocument/onTypeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"position":{"line":1,"character":0},"ch":"\n"}}
-#      CHECK:  "id": 5,
-# CHECK-NEXT:  "jsonrpc": "2.0",
-# CHECK-NEXT:  "result": [
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": " ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 5,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 5,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    },
-# CHECK-NEXT:    {
-# CHECK-NEXT:      "newText": "\n    ",
-# CHECK-NEXT:      "range": {
-# CHECK-NEXT:        "end": {
-# CHECK-NEXT:          "character": 0,
-# CHECK-NEXT:          "line": 1
-# CHECK-NEXT:        },
-# CHECK-NEXT:        "start": {
-# CHECK-NEXT:          "character": 6,
-# CHECK-NEXT:          "line": 0
-# CHECK-NEXT:        }
-# CHECK-NEXT:      }
-# CHECK-NEXT:    }
-# CHECK-NEXT:  ]
----
-{"jsonrpc":"2.0","id":6,"method":"shutdown"}
----
-{"jsonrpc":"2.0","method":"exit"}
+# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s
+{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}
+---
+{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","version":1,"text":"int
 foo ( int x ) {\n    x = x+1;\n    return x;\n    }"}}}
+---
+{"jsonrpc":"2.0","id":1,"method":"textDocument/rangeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"range":{"start":{"line":1,"character":4},"end":{"line":1,"character":12}}}}
+#      CHECK:   "id": 1,
+# CHECK-NEXT:  "jsonrpc": "2.0",
+# CHECK-NEXT:  "result": [
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "\n  ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 4,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 19,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": " ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 9,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 9,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": " ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 10,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 10,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "\n  ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 4,
+# CHECK-NEXT:          "line": 2
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 12,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    }
+# CHECK-NEXT:  ]
+---
+{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":5},"contentChanges":[{"text":"int
 foo ( int x ) {\n  x = x + 1;\n  return x;\n    }"}]}}
+#
+#
+---
+{"jsonrpc":"2.0","id":2,"method":"textDocument/rangeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"range":{"start":{"line":1,"character":2},"end":{"line":1,"character":12}}}}
+#      CHECK:  "id": 2,
+# CHECK-NEXT:  "jsonrpc": "2.0",
+# CHECK-NEXT:  "result": []
+---
+{"jsonrpc":"2.0","id":3,"method":"textDocument/formatting","params":{"textDocument":{"uri":"test:///foo.c"}}}
+#      CHECK:  "id": 3,
+# CHECK-NEXT:  "jsonrpc": "2.0",
+# CHECK-NEXT:  "result": [
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 8,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 7,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 10,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 9,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 16,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 15,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "\n",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 4,
+# CHECK-NEXT:          "line": 3
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 11,
+# CHECK-NEXT:          "line": 2
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    }
+# CHECK-NEXT:  ]
+---
+{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":9},"contentChanges":[{"text":"int
 foo(int x) {\n  x = x + 1;\n  return x;\n}"}]}}
+---
+{"jsonrpc":"2.0","id":4,"method":"textDocument/formatting","params":{"textDocument":{"uri":"test:///foo.c"}}}
+#      CHECK:  "id": 4,
+# CHECK-NEXT:  "jsonrpc": "2.0",
+# CHECK-NEXT:  "result": []
+---
+{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.c","version":5},"contentChanges":[{"text":"int
 x=\n"}]}}
+---
+{"jsonrpc":"2.0","id":5,"method":"textDocument/onTypeFormatting","params":{"textDocument":{"uri":"test:///foo.c"},"position":{"line":1,"character":0},"ch":"\n"}}
+#      CHECK:  "id": 5,
+# CHECK-NEXT:  "jsonrpc": "2.0",
+# CHECK-NEXT:  "result": [
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": " ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 5,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 5,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    },
+# CHECK-NEXT:    {
+# CHECK-NEXT:      "newText": "\n    ",
+# CHECK-NEXT:      "range": {
+# CHECK-NEXT:        "end": {
+# CHECK-NEXT:          "character": 0,
+# CHECK-NEXT:          "line": 1
+# CHECK-NEXT:        },
+# CHECK-NEXT:        "start": {
+# CHECK-NEXT:          "character": 6,
+# CHECK-NEXT:          "line": 0
+# CHECK-NEXT:        }
+# CHECK-NEXT:      }
+# CHECK-NEXT:    }
+# CHECK-NEXT:  ]
+---
+{"jsonrpc":"2.0","id":6,"method":"shutdown"}
+---
+{"jsonrpc":"2.0","method":"exit"}

++++++ compiler-rt-9.0.0.src.tar.xz -> compiler-rt-9.0.1.src.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/compiler-rt-9.0.0.src/lib/crt/CMakeLists.txt 
new/compiler-rt-9.0.1.src/lib/crt/CMakeLists.txt
--- old/compiler-rt-9.0.0.src/lib/crt/CMakeLists.txt    2019-05-19 
05:29:15.000000000 +0200
+++ new/compiler-rt-9.0.1.src/lib/crt/CMakeLists.txt    2019-12-11 
20:15:30.000000000 +0100
@@ -69,7 +69,7 @@
 endfunction()
 
 check_cxx_section_exists(".init_array" COMPILER_RT_HAS_INITFINI_ARRAY
-  SOURCE "__attribute__((constructor)) void f() {}\nint main() { return 0; 
}\n")
+  SOURCE "volatile int x;\n__attribute__((constructor)) void f() {x = 0;}\nint 
main() { return 0; }\n")
 
 append_list_if(COMPILER_RT_HAS_STD_C11_FLAG -std=c11 CRT_CFLAGS)
 append_list_if(COMPILER_RT_HAS_INITFINI_ARRAY -DCRT_HAS_INITFINI_ARRAY 
CRT_CFLAGS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/compiler-rt-9.0.0.src/lib/profile/InstrProfilingUtil.c 
new/compiler-rt-9.0.1.src/lib/profile/InstrProfilingUtil.c
--- old/compiler-rt-9.0.0.src/lib/profile/InstrProfilingUtil.c  2019-06-24 
23:32:50.000000000 +0200
+++ new/compiler-rt-9.0.1.src/lib/profile/InstrProfilingUtil.c  2019-12-11 
20:15:30.000000000 +0100
@@ -189,8 +189,9 @@
   f = fdopen(fd, "r+b");
 #elif defined(_WIN32)
   // FIXME: Use the wide variants to handle Unicode filenames.
-  HANDLE h = CreateFileA(ProfileName, GENERIC_READ | GENERIC_WRITE, 0, 0,
-                         OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
+  HANDLE h = CreateFileA(ProfileName, GENERIC_READ | GENERIC_WRITE,
+                         FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_ALWAYS,
+                         FILE_ATTRIBUTE_NORMAL, 0);
   if (h == INVALID_HANDLE_VALUE)
     return NULL;
 
@@ -200,6 +201,10 @@
     return NULL;
   }
 
+  if (lprofLockFd(fd) != 0)
+    PROF_WARN("Data may be corrupted during profile merging : %s\n",
+              "Fail to obtain file lock due to system limit.");
+
   f = _fdopen(fd, "r+b");
   if (f == 0) {
     CloseHandle(h);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/compiler-rt-9.0.0.src/test/profile/Windows/Inputs/instrprof-multiprocess.c 
new/compiler-rt-9.0.1.src/test/profile/Windows/Inputs/instrprof-multiprocess.c
--- 
old/compiler-rt-9.0.0.src/test/profile/Windows/Inputs/instrprof-multiprocess.c  
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/compiler-rt-9.0.1.src/test/profile/Windows/Inputs/instrprof-multiprocess.c  
    2019-12-11 20:15:30.000000000 +0100
@@ -0,0 +1,89 @@
+/* This is a test case where the parent process forks 10 children
+ * which contend to merge profile data to the same file. With
+ * file locking support, the data from each child should not
+ * be lost.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <windows.h>
+
+void spawn_child(PROCESS_INFORMATION *pi, int child_num) {
+  wchar_t child_str[10];
+  _itow(child_num, child_str, 10);
+  if (!SetEnvironmentVariableW(L"CHILD_NUM", child_str)) {
+    printf("SetEnvironmentVariableW failed (0x%8lx).\n", GetLastError());
+    fflush(stdout);
+    exit(1);
+  }
+
+  STARTUPINFOW si;
+  memset(&si, 0, sizeof(si));
+  si.cb = sizeof(si);
+
+  memset(pi, 0, sizeof(PROCESS_INFORMATION));
+
+  if (!CreateProcessW(NULL,              // No module name (use command line)
+                      GetCommandLineW(), // Command line
+                      NULL,              // Process handle not inheritable
+                      NULL,              // Thread handle not inheritable
+                      TRUE,              // Set handle inheritance to TRUE
+                      0,                 // No flags
+                      NULL,              // Use parent's environment block
+                      NULL,              // Use parent's starting directory
+                      &si, pi)) {
+    printf("CreateProcess failed (0x%08lx).\n", GetLastError());
+    fflush(stdout);
+    exit(1);
+  }
+}
+
+int wait_child(PROCESS_INFORMATION *pi) {
+  WaitForSingleObject(pi->hProcess, INFINITE);
+
+  DWORD exit_code;
+  if (!GetExitCodeProcess(pi->hProcess, &exit_code)) {
+    printf("GetExitCodeProcess failed (0x%08lx).\n", GetLastError());
+    fflush(stdout);
+    exit(1);
+  }
+
+  CloseHandle(pi->hProcess);
+  CloseHandle(pi->hThread);
+
+  return exit_code;
+}
+
+#define NUM_CHILDREN 10
+
+int foo(int num) {
+  if (num < (NUM_CHILDREN / 2)) {
+    return 1;
+  } else if (num < NUM_CHILDREN) {
+    return 2;
+  }
+  return 3;
+}
+
+int main(int argc, char *argv[]) {
+  char *child_str = getenv("CHILD_NUM");
+  if (!child_str) {
+    PROCESS_INFORMATION child[NUM_CHILDREN];
+    // In parent
+    for (int i = 0; i < NUM_CHILDREN; i++) {
+      spawn_child(&child[i], i);
+    }
+    for (int i = 0; i < NUM_CHILDREN; i++) {
+      wait_child(&child[i]);
+    }
+    return 0;
+  } else {
+    // In child
+    int child_num = atoi(child_str);
+    int result = foo(child_num);
+    if (result == 3) {
+      fprintf(stderr, "Invalid child count!");
+      return 1;
+    }
+    return 0;
+  }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/compiler-rt-9.0.0.src/test/profile/Windows/instrprof-multiprocess.test 
new/compiler-rt-9.0.1.src/test/profile/Windows/instrprof-multiprocess.test
--- old/compiler-rt-9.0.0.src/test/profile/Windows/instrprof-multiprocess.test  
1970-01-01 01:00:00.000000000 +0100
+++ new/compiler-rt-9.0.1.src/test/profile/Windows/instrprof-multiprocess.test  
2019-12-11 20:15:30.000000000 +0100
@@ -0,0 +1,10 @@
+RUN: %clang_profgen %S/Inputs/instrprof-multiprocess.c -o %t
+RUN: rm -f %t_*.profraw
+RUN: env LLVM_PROFILE_FILE=%t_%m.profraw %run %t
+RUN: llvm-profdata show --counts -function=foo %t_*.profraw | FileCheck %s
+
+CHECK: Counters:
+CHECK:   foo:
+CHECK:     Function count: 10
+CHECK:     Block counts: [5, 5]
+CHECK: Functions shown: 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/compiler-rt-9.0.0.src/test/profile/Windows/lit.local.cfg.py 
new/compiler-rt-9.0.1.src/test/profile/Windows/lit.local.cfg.py
--- old/compiler-rt-9.0.0.src/test/profile/Windows/lit.local.cfg.py     
1970-01-01 01:00:00.000000000 +0100
+++ new/compiler-rt-9.0.1.src/test/profile/Windows/lit.local.cfg.py     
2019-12-11 20:15:30.000000000 +0100
@@ -0,0 +1,9 @@
+def getRoot(config):
+  if not config.parent:
+    return config
+  return getRoot(config.parent)
+
+root = getRoot(config)
+
+if root.host_os not in ['Windows']:
+  config.unsupported = True

++++++ libcxx-9.0.0.src.tar.xz -> libcxx-9.0.1.src.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcxx-9.0.0.src/CMakeLists.txt 
new/libcxx-9.0.1.src/CMakeLists.txt
--- old/libcxx-9.0.0.src/CMakeLists.txt 2019-07-19 11:22:23.000000000 +0200
+++ new/libcxx-9.0.1.src/CMakeLists.txt 2019-12-11 20:15:30.000000000 +0100
@@ -27,7 +27,7 @@
   project(libcxx CXX C)
 
   set(PACKAGE_NAME libcxx)
-  set(PACKAGE_VERSION 9.0.0)
+  set(PACKAGE_VERSION 9.0.1)
   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
   set(PACKAGE_BUGREPORT "[email protected]")
 

++++++ libcxxabi-9.0.0.src.tar.xz -> libcxxabi-9.0.1.src.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libcxxabi-9.0.0.src/CMakeLists.txt 
new/libcxxabi-9.0.1.src/CMakeLists.txt
--- old/libcxxabi-9.0.0.src/CMakeLists.txt      2019-07-19 11:22:41.000000000 
+0200
+++ new/libcxxabi-9.0.1.src/CMakeLists.txt      2019-12-11 20:15:30.000000000 
+0100
@@ -21,7 +21,7 @@
   project(libcxxabi CXX C)
 
   set(PACKAGE_NAME libcxxabi)
-  set(PACKAGE_VERSION 9.0.0)
+  set(PACKAGE_VERSION 9.0.1)
   set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
   set(PACKAGE_BUGREPORT "[email protected]")
 

++++++ lld-9.0.0.src.tar.xz -> lld-9.0.1.src.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/COFF/Driver.cpp 
new/lld-9.0.1.src/COFF/Driver.cpp
--- old/lld-9.0.0.src/COFF/Driver.cpp   2019-08-26 10:36:43.000000000 +0200
+++ new/lld-9.0.1.src/COFF/Driver.cpp   2019-12-11 20:15:30.000000000 +0100
@@ -1138,7 +1138,7 @@
     }
   }
 
-  if (!args.hasArg(OPT_INPUT)) {
+  if (!args.hasArg(OPT_INPUT, OPT_wholearchive_file)) {
     if (args.hasArg(OPT_deffile))
       config->noEntry = true;
     else
@@ -1626,7 +1626,7 @@
   }
 
   // Handle generation of import library from a def file.
-  if (!args.hasArg(OPT_INPUT)) {
+  if (!args.hasArg(OPT_INPUT, OPT_wholearchive_file)) {
     fixupExports();
     createImportLibrary(/*asLib=*/true);
     return;
@@ -1672,8 +1672,8 @@
 
   // Set default image name if neither /out or /def set it.
   if (config->outputFile.empty()) {
-    config->outputFile =
-        getOutputPath((*args.filtered(OPT_INPUT).begin())->getValue());
+    config->outputFile = getOutputPath(
+        (*args.filtered(OPT_INPUT, 
OPT_wholearchive_file).begin())->getValue());
   }
 
   // Fail early if an output file is not writable.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/ELF/Symbols.h 
new/lld-9.0.1.src/ELF/Symbols.h
--- old/lld-9.0.0.src/ELF/Symbols.h     2019-08-26 10:35:17.000000000 +0200
+++ new/lld-9.0.1.src/ELF/Symbols.h     2019-12-11 20:15:30.000000000 +0100
@@ -108,27 +108,27 @@
 
   // Symbol visibility. This is the computed minimum visibility of all
   // observed non-DSO symbols.
-  unsigned visibility : 2;
+  uint8_t visibility : 2;
 
   // True if the symbol was used for linking and thus need to be added to the
   // output file's symbol table. This is true for all symbols except for
   // unreferenced DSO symbols, lazy (archive) symbols, and bitcode symbols that
   // are unreferenced except by other bitcode objects.
-  unsigned isUsedInRegularObj : 1;
+  uint8_t isUsedInRegularObj : 1;
 
   // If this flag is true and the symbol has protected or default visibility, 
it
   // will appear in .dynsym. This flag is set by interposable DSO symbols in
   // executables, by most symbols in DSOs and executables built with
   // --export-dynamic, and by dynamic lists.
-  unsigned exportDynamic : 1;
+  uint8_t exportDynamic : 1;
 
   // False if LTO shouldn't inline whatever this symbol points to. If a symbol
   // is overwritten after LTO, LTO shouldn't inline the symbol because it
   // doesn't know the final contents of the symbol.
-  unsigned canInline : 1;
+  uint8_t canInline : 1;
 
   // True if this symbol is specified by --trace-symbol option.
-  unsigned traced : 1;
+  uint8_t traced : 1;
 
   inline void replace(const Symbol &New);
 
@@ -236,28 +236,28 @@
 public:
   // True the symbol should point to its PLT entry.
   // For SharedSymbol only.
-  unsigned needsPltAddr : 1;
+  uint8_t needsPltAddr : 1;
 
   // True if this symbol is in the Iplt sub-section of the Plt and the Igot
   // sub-section of the .got.plt or .got.
-  unsigned isInIplt : 1;
+  uint8_t isInIplt : 1;
 
   // True if this symbol needs a GOT entry and its GOT entry is actually in
   // Igot. This will be true only for certain non-preemptible ifuncs.
-  unsigned gotInIgot : 1;
+  uint8_t gotInIgot : 1;
 
   // True if this symbol is preemptible at load time.
-  unsigned isPreemptible : 1;
+  uint8_t isPreemptible : 1;
 
   // True if an undefined or shared symbol is used from a live section.
-  unsigned used : 1;
+  uint8_t used : 1;
 
   // True if a call to this symbol needs to be followed by a restore of the
   // PPC64 toc pointer.
-  unsigned needsTocRestore : 1;
+  uint8_t needsTocRestore : 1;
 
   // True if this symbol is defined by a linker script.
-  unsigned scriptDefined : 1;
+  uint8_t scriptDefined : 1;
 
   // The partition whose dynamic symbol table contains this symbol's 
definition.
   uint8_t partition = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/docs/ReleaseNotes.rst 
new/lld-9.0.1.src/docs/ReleaseNotes.rst
--- old/lld-9.0.0.src/docs/ReleaseNotes.rst     2019-09-07 12:57:20.000000000 
+0200
+++ new/lld-9.0.1.src/docs/ReleaseNotes.rst     2019-12-11 20:15:30.000000000 
+0100
@@ -153,7 +153,7 @@
 
 * Having more than two ``/natvis:`` now works correctly; it used to not
   work for larger binaries before.
-  (`r327895 <https://reviews.llvm.org/rL327895>`_)
+  (`r359515 <https://reviews.llvm.org/rL359515>`_)
 
 * Undefined symbols are now printed only in demangled form. Pass
   ``/demangle:no`` to see raw symbol names instead.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/COFF/entry-inference.test 
new/lld-9.0.1.src/test/COFF/entry-inference.test
--- old/lld-9.0.0.src/test/COFF/entry-inference.test    2018-10-03 
19:01:39.000000000 +0200
+++ new/lld-9.0.1.src/test/COFF/entry-inference.test    2019-12-11 
20:15:30.000000000 +0100
@@ -4,6 +4,11 @@
 # RUN: not lld-link /nodefaultlib /out:%t.exe %t.obj > %t.log 2>&1
 # RUN: FileCheck -check-prefix=MAIN %s < %t.log
 
+# Entry inference should work through /wholearchive:, they are also inputs.
+# RUN: lld-link /lib %t.obj /out:%t.lib
+# RUN: not lld-link /nodefaultlib /out:%t.exe /wholearchive:%t.lib > %t.log 
2>&1
+# RUN: FileCheck -check-prefix=MAIN %s < %t.log
+
 # RUN: sed s/ENTRYNAME/wmain/ %s | yaml2obj > %t.obj
 # RUN: not lld-link /out:%t.exe %t.obj > %t.log 2>&1
 # RUN: FileCheck -check-prefix=WMAIN %s < %t.log
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/COFF/out.test 
new/lld-9.0.1.src/test/COFF/out.test
--- old/lld-9.0.0.src/test/COFF/out.test        2017-07-08 05:06:10.000000000 
+0200
+++ new/lld-9.0.1.src/test/COFF/out.test        2019-12-11 20:15:30.000000000 
+0100
@@ -4,14 +4,17 @@
 # RUN: cp %t.obj %T/out/out1.obj
 # RUN: cp %t.obj %T/out/tmp/out2
 # RUN: cp %t.obj %T/out/tmp/out3.xyz
+# RUN: lld-link /lib %t.obj /out:%T/out/out4.lib
 
-# RUN: rm -f out1.exe out2.exe out3.exe out3.dll
+# RUN: rm -f out1.exe out2.exe out3.exe out3.dll out4.exe
 # RUN: lld-link /entry:main %T/out/out1.obj
 # RUN: lld-link /entry:main %T/out/tmp/out2
 # RUN: lld-link /dll /entry:main %T/out/tmp/out3.xyz
+# RUN: lld-link /entry:main -wholearchive:%T/out/out4.lib
 
 # RUN: llvm-readobj out1.exe | FileCheck %s
 # RUN: llvm-readobj out2.exe | FileCheck %s
 # RUN: llvm-readobj out3.dll | FileCheck %s
+# RUN: llvm-readobj out4.exe | FileCheck %s
 
 CHECK: File:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/COFF/wholearchive.s 
new/lld-9.0.1.src/test/COFF/wholearchive.s
--- old/lld-9.0.0.src/test/COFF/wholearchive.s  2018-08-02 13:33:54.000000000 
+0200
+++ new/lld-9.0.1.src/test/COFF/wholearchive.s  2019-12-11 20:15:30.000000000 
+0100
@@ -14,6 +14,10 @@
 # RUN: lld-link -dll -out:%t.dll -entry:main %t.main.obj %t.archive.lib 
-wholearchive:%t.archive.lib -implib:%t.lib
 # RUN: llvm-readobj %t.lib | FileCheck %s -check-prefix CHECK-IMPLIB
 
+# PR43744: Test no inputs except a whole archive.
+# RUN: lld-link -dll -out:%t.dll -noentry -wholearchive:%t.archive.lib 
-implib:%t.lib
+# RUN: llvm-readobj %t.lib | FileCheck %s -check-prefix CHECK-IMPLIB
+
 # RUN: mkdir -p %t.dir
 # RUN: cp %t.archive.lib %t.dir/foo.lib
 # RUN: lld-link -dll -out:%t.dll -entry:main -libpath:%t.dir %t.main.obj 
%t.dir/./foo.lib -wholearchive:foo.lib -implib:%t.lib
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/wasm/archive-weak-undefined.ll 
new/lld-9.0.1.src/test/wasm/archive-weak-undefined.ll
--- old/lld-9.0.0.src/test/wasm/archive-weak-undefined.ll       2019-02-07 
23:42:16.000000000 +0100
+++ new/lld-9.0.1.src/test/wasm/archive-weak-undefined.ll       2019-12-11 
20:15:30.000000000 +0100
@@ -1,19 +1,39 @@
+; Test that weak undefined symbols do not fetch members from archive files.
 ; RUN: llc -filetype=obj %s -o %t.o
-; RUN: llc -filetype=obj %S/Inputs/ret32.ll -o %t.a1.o
+; RUN: llc -filetype=obj %S/Inputs/ret32.ll -o %t.ret32.o
+; RUN: llc -filetype=obj %S/Inputs/hello.ll -o %t.hello.o
 ; RUN: rm -f %t.a
-; RUN: llvm-ar rcs %t.a %t.a1.o
+; RUN: llvm-ar rcs %t.a %t.ret32.o %t.hello.o
+
 ; RUN: wasm-ld %t.o %t.a -o %t.wasm
 ; RUN: obj2yaml %t.wasm | FileCheck %s
 
+; RUN: wasm-ld -u hello_str %t.o %t.a -o %t2.wasm
+; RUN: obj2yaml %t2.wasm | FileCheck %s -check-prefix=CHECK-DATA
+
 target triple = "wasm32-unknown-unknown"
 
+; Weak external function symbol
 declare extern_weak i32 @ret32()
 
+; Weak external data symbol
+@hello_str = extern_weak global i8*, align 4
+
 define void @_start() {
-entry:
+  br i1 icmp ne (i8** @hello_str, i8** null), label %if.then, label %if.end
+
+if.then:
   %call1 = call i32 @ret32()
+  br label %if.end
+
+if.end:
   ret void
 }
 
+; Ensure we have no data section.  If we do, would mean that hello_str was
+; pulled out of the library.
+; CHECK-NOT:  Type:            DATA
+; CHECK-DATA: Type:            DATA
+
 ; CHECK: Name: 'undefined:ret32'
 ; CHECK-NOT: Name: ret32
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/wasm/global-base.test 
new/lld-9.0.1.src/test/wasm/global-base.test
--- old/lld-9.0.0.src/test/wasm/global-base.test        2019-06-26 
22:12:33.000000000 +0200
+++ new/lld-9.0.1.src/test/wasm/global-base.test        2019-12-11 
20:15:30.000000000 +0100
@@ -24,11 +24,7 @@
 CHECK-1024-NEXT:          Value:           1024
 
 CHECK-1024:       - Type:            EXPORT
-CHECK-1024-NEXT:    Exports:
-CHECK-1024-NEXT:      - Name:            memory
-CHECK-1024-NEXT:        Kind:            MEMORY
-CHECK-1024-NEXT:        Index:           0
-CHECK-1024-NEXT:      - Name:            __data_end
+CHECK-1024:           - Name:            __data_end
 CHECK-1024-NEXT:        Kind:            GLOBAL
 CHECK-1024-NEXT:        Index:           1
 CHECK-1024-NEXT:      - Name:            __global_base
@@ -59,11 +55,7 @@
 CHECK-16777216-NEXT:          Value:           16777216
 
 CHECK-16777216:       - Type:            EXPORT
-CHECK-16777216-NEXT:    Exports:
-CHECK-16777216-NEXT:      - Name:            memory
-CHECK-16777216-NEXT:        Kind:            MEMORY
-CHECK-16777216-NEXT:        Index:           0
-CHECK-16777216-NEXT:      - Name:            __data_end
+CHECK-16777216:           - Name:            __data_end
 CHECK-16777216-NEXT:        Kind:            GLOBAL
 CHECK-16777216-NEXT:        Index:           1
 CHECK-16777216-NEXT:      - Name:            __global_base
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/wasm/optional-symbol.ll 
new/lld-9.0.1.src/test/wasm/optional-symbol.ll
--- old/lld-9.0.0.src/test/wasm/optional-symbol.ll      1970-01-01 
01:00:00.000000000 +0100
+++ new/lld-9.0.1.src/test/wasm/optional-symbol.ll      2019-12-11 
20:15:30.000000000 +0100
@@ -0,0 +1,14 @@
+; RUN: llc -filetype=obj -o %t.o %s
+; RUN: wasm-ld --export=get_handle %t.o -o %t.wasm
+
+target triple = "wasm32-unknown-unknown"
+
+@__dso_handle = external global i8*
+
+define i8** @get_handle() {
+  ret i8** @__dso_handle
+}
+
+define void @_start() {
+  ret void
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/test/wasm/stack-first.test 
new/lld-9.0.1.src/test/wasm/stack-first.test
--- old/lld-9.0.0.src/test/wasm/stack-first.test        2019-06-01 
00:51:59.000000000 +0200
+++ new/lld-9.0.1.src/test/wasm/stack-first.test        2019-12-11 
20:15:30.000000000 +0100
@@ -32,12 +32,12 @@
 CHECK-NEXT:       - Name:            memory
 CHECK-NEXT:         Kind:            MEMORY
 CHECK-NEXT:         Index:           0
+CHECK-NEXT:       - Name:            _start
+CHECK-NEXT:         Kind:            FUNCTION
+CHECK-NEXT:         Index:           0
 CHECK-NEXT:       - Name:            __data_end
 CHECK-NEXT:         Kind:            GLOBAL
 CHECK-NEXT:         Index:           1
 CHECK-NEXT:       - Name:            __heap_base
 CHECK-NEXT:         Kind:            GLOBAL
 CHECK-NEXT:         Index:           2
-CHECK-NEXT:       - Name:            _start
-CHECK-NEXT:         Kind:            FUNCTION
-CHECK-NEXT:         Index:           0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/wasm/Driver.cpp 
new/lld-9.0.1.src/wasm/Driver.cpp
--- old/lld-9.0.0.src/wasm/Driver.cpp   2019-07-22 19:50:00.000000000 +0200
+++ new/lld-9.0.1.src/wasm/Driver.cpp   2019-12-11 20:15:30.000000000 +0100
@@ -482,8 +482,6 @@
     }
   }
 
-  if (!config->shared)
-    WasmSym::dataEnd = symtab->addOptionalDataSymbol("__data_end");
 
   if (config->isPic) {
     WasmSym::stackPointer =
@@ -512,8 +510,6 @@
     // See: https://github.com/WebAssembly/mutable-global
     WasmSym::stackPointer = symtab->addSyntheticGlobal(
         "__stack_pointer", WASM_SYMBOL_VISIBILITY_HIDDEN, stackPointer);
-    WasmSym::globalBase = symtab->addOptionalDataSymbol("__global_base");
-    WasmSym::heapBase = symtab->addOptionalDataSymbol("__heap_base");
   }
 
   if (config->sharedMemory && !config->shared) {
@@ -539,9 +535,17 @@
         "__wasm_init_tls", WASM_SYMBOL_VISIBILITY_HIDDEN,
         make<SyntheticFunction>(i32ArgSignature, "__wasm_init_tls"));
   }
+}
+
+static void createOptionalSymbols() {
+  if (!config->relocatable)
+    WasmSym::dsoHandle = symtab->addOptionalDataSymbol("__dso_handle");
 
-  WasmSym::dsoHandle = symtab->addSyntheticDataSymbol(
-      "__dso_handle", WASM_SYMBOL_VISIBILITY_HIDDEN);
+  if (!config->isPic) {
+    WasmSym::dataEnd = symtab->addOptionalDataSymbol("__data_end");
+    WasmSym::globalBase = symtab->addOptionalDataSymbol("__global_base");
+    WasmSym::heapBase = symtab->addOptionalDataSymbol("__heap_base");
+  }
 }
 
 // Reconstructs command line arguments so that so that you can re-run
@@ -724,6 +728,8 @@
   if (errorCount())
     return;
 
+  createOptionalSymbols();
+
   // Handle the `--undefined <sym>` options.
   for (auto *arg : args.filtered(OPT_undefined))
     handleUndefined(arg->getValue());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/wasm/InputFiles.cpp 
new/lld-9.0.1.src/wasm/InputFiles.cpp
--- old/lld-9.0.0.src/wasm/InputFiles.cpp       2019-07-17 20:43:36.000000000 
+0200
+++ new/lld-9.0.1.src/wasm/InputFiles.cpp       2019-12-11 20:15:30.000000000 
+0100
@@ -173,7 +173,7 @@
   case R_WASM_MEMORY_ADDR_I32:
   case R_WASM_MEMORY_ADDR_LEB:
   case R_WASM_MEMORY_ADDR_REL_SLEB:
-    if (isa<UndefinedData>(sym))
+    if (isa<UndefinedData>(sym) || sym->isUndefWeak())
       return 0;
     return cast<DefinedData>(sym)->getVirtualAddress() + reloc.Addend;
   case R_WASM_TYPE_INDEX_LEB:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/wasm/SymbolTable.cpp 
new/lld-9.0.1.src/wasm/SymbolTable.cpp
--- old/lld-9.0.0.src/wasm/SymbolTable.cpp      2019-07-11 07:40:30.000000000 
+0200
+++ new/lld-9.0.1.src/wasm/SymbolTable.cpp      2019-12-11 20:15:30.000000000 
+0100
@@ -205,15 +205,15 @@
 // Adds an optional, linker generated, data symbols.  The symbol will only be
 // added if there is an undefine reference to it, or if it is explictly 
exported
 // via the --export flag.  Otherwise we don't add the symbol and return 
nullptr.
-DefinedData *SymbolTable::addOptionalDataSymbol(StringRef name, uint32_t value,
-                                                uint32_t flags) {
+DefinedData *SymbolTable::addOptionalDataSymbol(StringRef name,
+                                                uint32_t value) {
   Symbol *s = find(name);
   if (!s && (config->exportAll || config->exportedSymbols.count(name) != 0))
     s = insertName(name).first;
   else if (!s || s->isDefined())
     return nullptr;
   LLVM_DEBUG(dbgs() << "addOptionalDataSymbol: " << name << "\n");
-  auto *rtn = replaceSymbol<DefinedData>(s, name, flags);
+  auto *rtn = replaceSymbol<DefinedData>(s, name, 
WASM_SYMBOL_VISIBILITY_HIDDEN);
   rtn->setVirtualAddress(value);
   rtn->referenced = true;
   return rtn;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lld-9.0.0.src/wasm/SymbolTable.h 
new/lld-9.0.1.src/wasm/SymbolTable.h
--- old/lld-9.0.0.src/wasm/SymbolTable.h        2019-07-16 10:08:17.000000000 
+0200
+++ new/lld-9.0.1.src/wasm/SymbolTable.h        2019-12-11 20:15:30.000000000 
+0100
@@ -77,8 +77,7 @@
                                     InputGlobal *global);
   DefinedFunction *addSyntheticFunction(StringRef name, uint32_t flags,
                                         InputFunction *function);
-  DefinedData *addOptionalDataSymbol(StringRef name, uint32_t value = 0,
-                                     uint32_t flags = 0);
+  DefinedData *addOptionalDataSymbol(StringRef name, uint32_t value = 0);
 
   void handleSymbolVariants();
   void handleWeakUndefines();

++++++ lldb-9.0.0.src.tar.xz -> lldb-9.0.1.src.tar.xz ++++++
/work/SRC/openSUSE:Factory/llvm9/lldb-9.0.0.src.tar.xz 
/work/SRC/openSUSE:Factory/.llvm9.new.6675/lldb-9.0.1.src.tar.xz differ: char 
26, line 1

++++++ llvm-9.0.0.src.tar.xz -> llvm-9.0.1.src.tar.xz ++++++
/work/SRC/openSUSE:Factory/llvm9/llvm-9.0.0.src.tar.xz 
/work/SRC/openSUSE:Factory/.llvm9.new.6675/llvm-9.0.1.src.tar.xz differ: char 
25, line 1

++++++ llvm-do-not-install-static-libraries.patch ++++++
--- /var/tmp/diff_new_pack.q9RejU/_old  2019-12-25 10:54:56.945632079 +0100
+++ /var/tmp/diff_new_pack.q9RejU/_new  2019-12-25 10:54:56.945632079 +0100
@@ -2,10 +2,10 @@
 want after installation. By not copying them in the first place we reduce the
 disk usage during installation.
 
-Index: llvm-9.0.0.src/cfe-9.0.0.src/cmake/modules/AddClang.cmake
+Index: llvm-9.0.1.src/clang-9.0.1.src/cmake/modules/AddClang.cmake
 ===================================================================
---- llvm-9.0.0.src.orig/cfe-9.0.0.src/cmake/modules/AddClang.cmake
-+++ llvm-9.0.0.src/cfe-9.0.0.src/cmake/modules/AddClang.cmake
+--- llvm-9.0.1.src.orig/clang-9.0.1.src/cmake/modules/AddClang.cmake
++++ llvm-9.0.1.src/clang-9.0.1.src/cmake/modules/AddClang.cmake
 @@ -106,12 +106,15 @@ macro(add_clang_library name)
          set_property(GLOBAL PROPERTY CLANG_HAS_EXPORTS True)
        endif()
@@ -36,10 +36,10 @@
    else()
      # Add empty "phony" target
      add_custom_target(${name})
-Index: llvm-9.0.0.src/cmake/modules/AddLLVM.cmake
+Index: llvm-9.0.1.src/cmake/modules/AddLLVM.cmake
 ===================================================================
---- llvm-9.0.0.src.orig/cmake/modules/AddLLVM.cmake
-+++ llvm-9.0.0.src/cmake/modules/AddLLVM.cmake
+--- llvm-9.0.1.src.orig/cmake/modules/AddLLVM.cmake
++++ llvm-9.0.1.src/cmake/modules/AddLLVM.cmake
 @@ -695,11 +695,13 @@ macro(add_llvm_library name)
          set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
        endif()
@@ -59,10 +59,10 @@
  
        if (NOT LLVM_ENABLE_IDE)
          add_llvm_install_targets(install-${name}
-Index: llvm-9.0.0.src/lld-9.0.0.src/cmake/modules/AddLLD.cmake
+Index: llvm-9.0.1.src/lld-9.0.1.src/cmake/modules/AddLLD.cmake
 ===================================================================
---- llvm-9.0.0.src.orig/lld-9.0.0.src/cmake/modules/AddLLD.cmake
-+++ llvm-9.0.0.src/lld-9.0.0.src/cmake/modules/AddLLD.cmake
+--- llvm-9.0.1.src.orig/lld-9.0.1.src/cmake/modules/AddLLD.cmake
++++ llvm-9.0.1.src/lld-9.0.1.src/cmake/modules/AddLLD.cmake
 @@ -17,13 +17,6 @@ macro(add_lld_library name)
        set_property(GLOBAL PROPERTY LLD_HAS_EXPORTS True)
      endif()
@@ -77,10 +77,10 @@
      if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
        add_llvm_install_targets(install-${name}
          DEPENDS ${name}
-Index: llvm-9.0.0.src/polly-9.0.0.src/cmake/polly_macros.cmake
+Index: llvm-9.0.1.src/polly-9.0.1.src/cmake/polly_macros.cmake
 ===================================================================
---- llvm-9.0.0.src.orig/polly-9.0.0.src/cmake/polly_macros.cmake
-+++ llvm-9.0.0.src/polly-9.0.0.src/cmake/polly_macros.cmake
+--- llvm-9.0.1.src.orig/polly-9.0.1.src/cmake/polly_macros.cmake
++++ llvm-9.0.1.src/polly-9.0.1.src/cmake/polly_macros.cmake
 @@ -42,12 +42,14 @@ macro(add_polly_library name)
      llvm_config(${name} ${LLVM_LINK_COMPONENTS})
    endif( LLVM_LINK_COMPONENTS )
@@ -101,10 +101,10 @@
  endmacro(add_polly_library)
  
  macro(add_polly_loadable_module name)
-Index: llvm-9.0.0.src/polly-9.0.0.src/lib/CMakeLists.txt
+Index: llvm-9.0.1.src/polly-9.0.1.src/lib/CMakeLists.txt
 ===================================================================
---- llvm-9.0.0.src.orig/polly-9.0.0.src/lib/CMakeLists.txt
-+++ llvm-9.0.0.src/polly-9.0.0.src/lib/CMakeLists.txt
+--- llvm-9.0.1.src.orig/polly-9.0.1.src/lib/CMakeLists.txt
++++ llvm-9.0.1.src/polly-9.0.1.src/lib/CMakeLists.txt
 @@ -74,7 +74,7 @@ set_target_properties(PollyCore PROPERTI
  # LLVM_POLLY_LINK_INTO_TOOLS=ON, its dependencies like PollyISL are linked as
  # well.

++++++ llvm-docs-9.0.0.src.tar.xz -> llvm-docs-9.0.1.src.tar.xz ++++++
++++ 34007 lines of diff (skipped)

++++++ openmp-9.0.0.src.tar.xz -> openmp-9.0.1.src.tar.xz ++++++

++++++ polly-9.0.0.src.tar.xz -> polly-9.0.1.src.tar.xz ++++++
/work/SRC/openSUSE:Factory/llvm9/polly-9.0.0.src.tar.xz 
/work/SRC/openSUSE:Factory/.llvm9.new.6675/polly-9.0.1.src.tar.xz differ: char 
25, line 1


Reply via email to