Debian Patches

Status for llvm-toolchain-9/1:9.0.1-16.1

Patch Description Author Forwarded Bugs Origin Last update
19-clang_debian_version.patch =================================================================== no
0003-Debian-version-info-and-bugreport.patch no
clang-format-version.diff no
clang-analyzer-force-version.diff # Force the version of clang in the analyzer
# This was causing the static analyzer to fail silently if the clang & clang++ are
# not installed
===================================================================
no
23-strlcpy_strlcat_warning_removed.diff no
declare_clear_cache.diff no
unwind-chain-inclusion.diff # Without this patch, the first local include of unwind.h might, with the
# __has_include_next, try to include the one from the system.
# It might be /usr/include/clang/3.4/include/unwind.h
# Because of the #ifndef __CLANG_UNWIND_H, it might never include any declaration
# from the system.
no
atomic_library_1.diff no
python-clangpath.diff no
fix-clang-path-and-build.diff =================================================================== no
0048-Set-html_static_path-_static-everywhere.patch Set html_static_path = ['_static'] everywhere. Nicholas D Steeves <nsteeves@gmail.com> no 2018-02-10
symbolizer-path.diff =================================================================== no
clang-tidy-run-bin.diff =================================================================== no
0001-tools-clang-cmake-resolve-symlinks-in-ClangConfig.cmake.patch [PATCH] [clang] cmake: resolve symlinks in ClangConfig.cmake
Ensure that symlinks such as /usr/lib/cmake/clang-X.Y (pointing to
/usr/lib/llvm-X.Y/lib/cmake/llvm) are resolved. This ensures that
CLANG_INSTALL_PREFIX ends up to be /usr/lib/llvm-X.Y instead of /usr.

Partially addresses PR37128
Peter Wu <peter@lekensteyn.nl> no 2018-05-04
debug-jit-path.diff =================================================================== no
do-not-fail-on-unexpected-pass.diff =================================================================== no
disable-display-PASS-UNSUPPORTED-XFAIL.diff =================================================================== no
fix-llvm-config-obj-src-root.patch no
0001-llvm-cmake-resolve-symlinks-in-LLVMConfig.cmake.patch [PATCH] [llvm] cmake: resolve symlinks in LLVMConfig.cmake
Ensure that symlinks such as /usr/lib/llvm-X.Y/cmake (pointing to
lib/cmake/llvm) are resolved. This ensures that LLVM_INSTALL_PREFIX
becomes /usr/lib/llvm-X.Y instead of /usr.

Partially addresses PR37128
Peter Wu <peter@lekensteyn.nl> no 2018-05-04
0044-soname.diff no
lldb-soname.diff no
lldb-libname.diff no
openmp-soname.diff =================================================================== no
hurd/impl-path-hurd.diff =================================================================== no
silent-gold-test.diff fails on debian unstable amd64 Command Output (stderr):
--
/build/llvm-toolchain-snapshot-4.0~svn279916/llvm/test/tools/gold/X86/start-lib-common.ll:22:10: error: expected string not found in input
; CHECK: @x = common global i32 0, align 8
^
<stdin>:1:1: note: scanning from here
; ModuleID = '/build/llvm-toolchain-snapshot-4.0~svn279916/build-llvm/llvm/test/tools/gold/X86/Output/start-lib-common.ll.tmp3.o'
^
<stdin>:4:1: note: possible intended match here
@x = common global i32 0, align 4
^


===================================================================
no
silent-more-tests.diff # Comment the tests for the code coverage (fails otherwise) no
silent-MCJIIT-tests.diff no
silent-gold-utils.diff no
silent-test-failing-codeverage.diff =================================================================== no
silent-amd-tet.diff =================================================================== no
silent-test-macho.diff =================================================================== no
silent-llvm-isel-fuzzer.diff =================================================================== no
remove-test-freezing.diff =================================================================== no
disable-llvm-symbolizer-test.diff Silent a test failing on yakkety amd64 /tmp/buildd/llvm-toolchain-snapshot-4.0~svn279801/test/tools/llvm-symbolizer/print_context.c:16:11: error: expected string not found in input
// CHECK: inc
^
<stdin>:1:1: note: scanning from here
_fini
^
<stdin>:1:3: note: possible intended match here
_fini
^

===================================================================
Sylvestre <sylvestre@debian.org> no 2016-08-26
disable-path-test-failing.diff =================================================================== no
test-keep-alive.diff =================================================================== no
scan-build-clang-path.diff no
install-scan-build-py.diff no
scan-view-fix-path.diff =================================================================== no
fix-scan-view-path.diff =================================================================== no
lldb/lldb-link-atomic-cmake.patch Link with -latomic when mips* processor is detected Gianfranco Costamagna <locutusofborg@debian.org> no 2016-07-27
lldb/lldb-addversion-suffix-to-llvm-server-exec.patch lldb-server exec users always /usr/bin/lldb-server. Server is required
for any debugging with lldb which makes it unusable unless default version
package has been installed. Small changes to code and debian/rules allows
a workaround for lldb-server start up.

To use this one needs to add cmake definition during configure. eg
-DDEBIAN_VERSION_SUFFIX=-$(LLVM_VERSION)

Better implementation would be to use /usr/share/llvm-$(VERSION)/bin but
that change seems to require a big change to the path handling code
which could then break something else.

This probably should have upstream bug but I couldn't find any existing report.

===================================================================
no
lldb/lldb-missing-install.diff =================================================================== no
lldb/lldb-disable-swig-error.diff =================================================================== no
disable-error-xray.diff =================================================================== no
openmp/openmp-check-execstack.diff =================================================================== no
openmp/openmp-mips-affinity.patch =================================================================== no
openmp/bootstrap-with-openmp-version-export-missing.diff =================================================================== no
libcxx/libcxxabi-test-don-t-fail-extended-long-double.patch Powerpc has extended double that doesn't match x86 coding. Power format would
need special tests to verify correctness but for now it is enough to prevent
incorrect test from running.

===================================================================
no
libcxx/libcxx-test-fix-lockfree-test-for-i386.patch Lock is_always_lock free test fails on i386 because std::atomic is aligned
to 8 bytes while long long is aligned to 4 bytes. clang can't generate inline
code for unaligned 8 byte atomics even tough instruction set and gcc support
it.

That makes it expected thaqt ATOMIC_LLONG_LOCK_FREE and
std::atomic<long long>::is_always_lock_free don't match on i386. Correct test
for std::atomic<long long> is to check if target cpu support cmpxchg8 instruction.
To set instruction support one can check __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8 define.


===================================================================
yes upstream
libcxx/libcxxabi-arm-ehabi-fix.patch Fix arm EHABI code to work. armhf had exception test failing without EHABI support.

No known upstream bug about this. Actual code change is more like workaround than
something that upstream would accept. Proper fix would be adding _Unwind_Control_Block
to clang unwind.h. _Unwind_Control_Block should also extend _Unwind_Exception to make
sure their ABI stays in sync.

No known upstream bug about this.

===================================================================
no
libcxx/libcxx-test-atomics-set-compare-exchange-to-be-expected-fails-on-arm.patch Clang 3.9 regression causes a bug when generating code for
std::atomic_compare_and_exchange*(std::atomic<long long>,...) without
optimizations. If same code is compiled with -O2 tests pass without problems.
Atomics are implement in headers with builtin functions which makes this
affect application code instead of libc++ library code.

libcxx tests default to -O0 compilation so these test need to be marked failing
on arm to allow installing packages. Use cases is so borderline failure that it
shouldn't prevent building the package. (64bit atomics in 32bit mode)

===================================================================
no
libcxx/libcxx-silent-test-libcxx.diff =================================================================== no
libcxx/libcxx-silent-failure-ppc64el.diff =================================================================== no
libcxx/libcxx-silent-failure-arm64.diff =================================================================== no
mips-fpxx-enable.diff =================================================================== no
mips-force-nomadd4.diff The MIPS port aims to support the Loongson 3 family of CPUs in addition
of the other MIPS CPUs. On the Loongson 3 family the MADD4 instructions
are fused, while they are not fused on the other MIPS CPUs. In order to
support both, we have to disabled those instructions.

For that, the patch below basically corresponds to the --with-madd4=no
used on the GCC side.
no
26-set-correct-float-abi.diff set correct float abi settings for armel and armhf debian armel supports systems that don't have a fpu so should use a "float abi"
setting of soft by default.

Debian armhf needs a float abi setting of "hard"
Peter Michael Green <plugwash@debian.org> no
clang-baseline-fix-i386.patch =================================================================== no
disable-sse2-old-x86.diff =================================================================== no
clang-arm-default-vfp3-on-armv7a.patch =================================================================== no
clangd-atomic-cmake.patch =================================================================== no
remove-apple-clang-manpage.diff =================================================================== no
0049-Use-Debian-provided-MathJax-everywhere.patch Use Debian-provided MathJax everywhere. Nicholas D Steeves <nsteeves@gmail.com> no 2018-02-10
hurd/hurd-pathmax.diff =================================================================== no
hurd/hurd-cxx-paths.diff This should be factorized with Linux.cpp and the GNU/kFreeBSD case.

===================================================================
no
930008-arm.diff =================================================================== no
bootstrap-fix-include-next.diff When doing a bootstrap, we use a newly built clang.
When this one is used, if already installed on the system,
we have clang header in two places:
llvm-toolchain-7-7/build-llvm/lib/clang/7.0.0/include/inttypes.h
and
/usr/include/clang/7.0.0/include/inttypes.h

Because clang expects only one of his headers to be available, it uses
include_next to get the glibc (libc6-dev package) header.

However, in the previous example, because we have inttypes.h twice in the
include search path, clang's header will call itself without any effect.
Therefore, it will do include_next until the define from the libc is existing (ex: _INTTYPES_H)


===================================================================
no
clang-riscv64-multiarch.diff =================================================================== no
clang-riscv64-rv64gc.diff =================================================================== no
llvm-riscv64-fix-cffi.diff commit c6b09bff5671600f8e764d3847023d0996f328d9

[RISCV] Fix wrong CFI directives

Summary: Removes CFI CFA directives that could incorrectly propagate
beyond the basic block they were inteded for. Specifically it removes
the epilogue CFI directives. See the branch_and_tail_call test for an
example of the issue. Should fix the stack unwinding issues caused by
the incorrect directives.

Reviewers: asb, lenary, shiva0217
Reviewed By: lenary
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D69723
Luís Marques <luismarques@lowrisc.org> no 2019-11-14
D60657-riscv-pcrel_lo.diff commit 41449c58c58e466bcf9cdc4f7415950382bad8d7

[RISCV] Fix evaluation of %pcrel_lo

The following testcase

function:
.Lpcrel_label1:
auipc a0, %pcrel_hi(other_function)
addi a1, a0, %pcrel_lo(.Lpcrel_label1)
.p2align 2 # Causes a new fragment to be emitted

.type other_function,@function
other_function:
ret

exposes an odd behaviour in which only the %pcrel_hi relocation is
evaluated but not the %pcrel_lo.

$ llvm-mc -triple riscv64 -filetype obj t.s | llvm-objdump -d -r -

<stdin>: file format ELF64-riscv

Disassembly of section .text:
0000000000000000 function:
0: 17 05 00 00 auipc a0, 0
4: 93 05 05 00 mv a1, a0
0000000000000004: R_RISCV_PCREL_LO12_I other_function+4

0000000000000008 other_function:
8: 67 80 00 00 ret

The reason seems to be that in RISCVAsmBackend::shouldForceRelocation we
only consider the fragment but in RISCVMCExpr::evaluatePCRelLo we
consider the section. This usually works but there are cases where the
section may still be the same but the fragment may be another one. In
that case we end forcing a %pcrel_lo relocation without any %pcrel_hi.

This patch makes RISCVAsmBackend::shouldForceRelocation use the section,
if any, to determine if the relocation must be forced or not.

Differential Revision: https://reviews.llvm.org/D60657

diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index f6b727ae37c..5881a0a86ef 100644
Roger Ferrer Ibanez <roger.ferrer@bsc.es> no 2019-11-08
D74453-riscv-atomic_cmp_xchg.diff [PATCH] [LegalizeTypes][RISCV] Correctly sign-extend comparison for ATOMIC_CMP_XCHG

Summary:
Currently, the comparison argument used for ATOMIC_CMP_XCHG is legalised
with GetPromotedInteger, which leaves the upper bits of the value
undefind. Since this is used for comparing in an LR/SC loop with a
full-width comparison, we must sign extend it. We introduce a new
getExtendForAtomicCmpSwapArg to complement getExtendForAtomicOps, since
many targets have compare-and-swap instructions (or pseudos) that
correctly handle an any-extend input, and the existing function
determines the extension of the result, whereas we are concerned with
the input.

This is related to https://reviews.llvm.org/D58829, which solved the
issue for ATOMIC_CMP_SWAP_WITH_SUCCESS, but not the simpler
ATOMIC_CMP_SWAP.


Reviewed By: asb



Differential Revision: https://reviews.llvm.org/D74453
Jessica Clarke <jrtc27@jrtc27.com> no 2020-04-01
D67877.patch =================================================================== no debian https://reviews.llvm.org/D67877
disable-lit-cpuid-install.diff =================================================================== no
no-z3.patch Description:
Disable z3 to avoid pulling ocaml into main.
For some reason the cmake option LLVM_ENABLE_Z3_SOLVER was not taken into account


===================================================================
Gianfranco Costamagna <locutusofborg@debian.org> no 2019-11-26
x86-fuzzer.patch fuzzer: EMULATION_ARGUMENT is also required when building on i386 for x86_64 Adrian Bunk <bunk@debian.org> no
D71028-mips-rust-test.diff [PATCH] [Mips] Add support for min/max/umin/umax atomics
In order to properly implement these atomic we need one register more than other
binary atomics. It is used for storing result from comparing values in addition
to the one that is used for actual result of operation.

https://reviews.llvm.org/D71028

[Backported to 9 by replacing Register with unsigned]
Mirko Brkusanin <Mirko.Brkusanin@rt-rk.com> no 2019-12-12
python3-shebang.patch change all shebangs to Python3 find . -name "*.py" -exec sed "s|\!/usr/bin/env python$|\!/usr/bin/env python3|g" -i {} \; no
print-lldb-path.patch =================================================================== Gianfranco Costamagna <locutusofborg@debian.org> no 2020-01-21
no-cgi.patch cgi method is deprecated, use html instead Gianfranco Costamagna <locutusofborg@debian.org> no 2020-02-25
947f9692440836dcb8d88b74b69dd379d85974ce.patch [PATCH] Fix sanitizer-common build with glibc 2.31
Summary:
As mentioned in D69104, glibc changed ABI recently with the [[ https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f959dfe849e0646e27403f2e4091536496ac0f0| 2f959dfe ]] change.
D69104 dealt with just 32-bit ARM, but that is just one of the many affected architectures.
E.g. x86_64, i?86, riscv64, sparc 32-bit, s390 31-bit are affected too (and various others).

This patch instead of adding a long list of further architectures that wouldn't be checked ever next to arm 32-bit changes the structures to match the 2.31 layout and performs the checking on Linux for ipc_perm mode position/size only on non-Linux or on Linux with glibc 2.31 or later. I think this matches what is done for aarch64 already.
If needed, we could list architectures that haven't changed ABI (e.g. powerpc), so that they would be checked even with older glibcs. AFAIK sanitizers don't actually use ipc_perm.mode and
so all they care about is the size and alignment of the whole structure.

Note, s390 31-bit and arm 32-bit big-endian changed ABI even further, there will now be shmctl with old symbol version and shmctl@@GLIBC_2.31 which will be incompatible. I'm afraid this isn't really solvable unless the sanitizer libraries are symbol versioned and use matching symbol versions to glibc symbols for stuff they intercept, plus use dlvsym.
This patch doesn't try to address that.

Patch by Jakub Jelinek.


Reviewed By: eugenis



Differential Revision: https://reviews.llvm.org/D70662
Evgenii Stepanov <eugenis@google.com> no 2019-11-25
riscv64-multilib-empty.patch =================================================================== no
373184.patch [PATCH] Revert "[SCEV] add no wrap flag for SCEVAddExpr."
This reverts r366419 because the analysis performed is within the context of
the loop and it's only valid to add wrapping flags to "global" expressions if
they're always correct.

(cherry picked from commit 58e8c793d0e43150a6452e971a32d7407a8a7401)
Tim Northover <tnorthover@apple.com> no 2019-09-30
f8e146f3430de3a6cd904f3f3f7aa1bfaefee14c.patch [PATCH] [InstCombine] Fix big-endian miscompile of (bitcast (zext/trunc (bitcast)))

Summary:
optimizeVectorResize is rewriting patterns like:
%1 = bitcast vector %src to integer
%2 = trunc/zext %1
%dst = bitcast %2 to vector

Since bitcasting between integer an vector types gives
different integer values depending on endianness, we need
to take endianness into account. As it happens the old
implementation only produced the correct result for little
endian targets.



Reviewed By: spatel, lebedev.ri



Differential Revision: https://reviews.llvm.org/D70844

(cherry picked from commit a9d6b0e5444741d08ff1df7cf71d1559e7fefc1f)
Bjorn Pettersson <bjorn.a.pettersson@ericsson.com> no 2019-11-28
3185c30c54d0af5bffbff3bcfd721668d086ff10.patch [PATCH] Prefer __vector over vector keyword for altivec
`vector' uses the keyword-and-predefine mode from gcc, while __vector is
reliably supported.

As a side effect, it also makes the code consistent in its usage of __vector.

Differential Revision: https://reviews.llvm.org/D74129
serge-sans-paille <sguelton@redhat.com> no 2020-02-06
llvm9-D71443-PPC-MC-redef-symbol.patch [PATCH] [MC][PowerPC] Fix a crash when redefining a symbol after .set
Fix PR44284. This is probably not valid assembly but we should not crash.

Reviewed By: luporl, #powerpc, steven.zhang

Differential Revision: https://reviews.llvm.org/D71443

(cherry picked from commit f99eedeb72644671cd584f48e4c136d47f6b0020)
Fangrui Song <maskray@google.com> no 2019-12-12
llvm-9.0-D78196.patch diff --git a/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp b/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.cpp no

All known versions for source package 'llvm-toolchain-9'

Links