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
