Skip to content

Commit 6cd0d33

Browse files
committed
Merge clang, llvm, lld, lldb, compiler-rt and libc++ 6.0.0 release, and
several follow-up fixes. MFC r327952: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r321788). Upstream has branched for the 6.0.0 release, which should be in about 6 weeks. Please report bugs and regressions, so we can get them into the release. Please note that from 3.5.0 onwards, clang, llvm and lldb require C++11 support to build; see UPDATING for more information. MFC r328010: Pull in r322473 from upstream llvm trunk (by Andrei Elovikov): [LV] Don't call recordVectorLoopValueForInductionCast for newly-created IV from a trunc. Summary: This method is supposed to be called for IVs that have casts in their use-def chains that are completely ignored after vectorization under PSE. However, for truncates of such IVs the same InductionDescriptor is used during creation/widening of both original IV based on PHINode and new IV based on TruncInst. This leads to unintended second call to recordVectorLoopValueForInductionCast with a VectorLoopVal set to the newly created IV for a trunc and causes an assert due to attempt to store new information for already existing entry in the map. This is wrong and should not be done. Fixes PR35773. Reviewers: dorit, Ayal, mssimpso Reviewed By: dorit Subscribers: RKSimon, dim, dcaballe, hsaito, llvm-commits, hiraditya Differential Revision: https://reviews.llvm.org/D41913 This should fix "Vector value already set for part" assertions when building the net/iodine and sysutils/daa2iso ports. Reported by: jbeich PR: 224867, 224868 MFC r328090: Pull in r322623 from upstream llvm trunk (by Andrew V. Tischenko): Allow usage of X86-prefixes as separate instrs. Differential Revision: https://reviews.llvm.org/D42102 This should fix parse errors when x86 prefixes (such as 'lock' and 'rep') are followed by various non-mnemonic tokens, e.g. comments, .byte directives and labels. PR: 224669, 225054 MFC r328091: Revert r327340, as the workaround for rep prefixes followed by .byte directives is no longer needed after r328090. MFC r328141 (by emaste): lld: Fix for ld.lld does not accept "AT" syntax for declaring LMA region AT> lma_region expression allows to specify the memory region for section load address. Should fix [upstream LLVM] PR35684. LLVM review: https://reviews.llvm.org/D41397 Obtained from: LLVM r322359 by George Rimar MFC r328143 (by emaste): lld: Handle parsing AT(ADDR(.foo-bar)). The problem we had with it is that anything inside an AT is an expression, so we failed to parse the section name because of the - in it. Requested by: royger Obtained from: LLVM r322801 by Rafael Espindola MFC r328144 (by emaste): lld: Fix incorrect physical address on self-referencing AT command. When a section placement (AT) command references the section itself, the physical address of the section in the ELF header was calculated incorrectly due to alignment happening right after the location pointer's value was captured. The problem was diagnosed and the first version of the patch written by Erick Reyes. Obtained from: LLVM r322421 by Rafael Espindola MFC r328145: Pull in r322016 from upstream llvm trunk (by Sanjay Patel): [ValueTracking] remove overzealous assert The test is derived from a failing fuzz test: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=5008 Credit to @RKSimon for pointing out the problem. This should fix "Bad flavor while matching min/max" errors when building the graphics/libsixel and science/kst2 ports. Reported by: jbeich PR: 225268, 225269 MFC r328146: Pull in r322106 from upstream llvm trunk (by Alexey Bataev): [COST]Fix PR35865: Fix cost model evaluation for shuffle on X86. Summary: If the vector type is transformed to non-vector single type, the compile may crash trying to get vector information about non-vector type. Reviewers: RKSimon, spatel, mkuper, hfinkel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D41862 This should fix "Not a vector MVT!" errors when building the games/dhewm3 port. Reported by: jbeich PR: 225271 MFC r328286 (by emaste): lld: Don't mark a shared library as needed because of a lazy symbol. Obtained from: LLVM r323221 by Rafael Esp?ndola MFC r328381: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r323338). PR: 224669 MFC r328513: Pull in r322245 from upstream clang trunk (by Craig Topper): [X86] Make -mavx512f imply -mfma and -mf16c in the frontend like it does in the backend. Similarly, make -mno-fma and -mno-f16c imply -mno-avx512f. Withou this "-mno-sse -mavx512f" ends up with avx512f being enabled in the frontend but disabled in the backend. Reported by: pawel PR: 225488 MFC r328542 (by emaste): lld: Use lookup instead of find. NFC, just simpler. Obtained from: LLVM r323395 by Rafael Espindola MFC r328543 (by emaste): lld: Only lookup LMARegion once. NFC. This is similar to how we handle MemRegion. Obtained from: LLVM r323396 by Rafael Espindola MFC r328544 (by emaste): lld: Remove MemRegionOffset. NFC. We can just use a member variable in MemoryRegion. Obtained from: LLVM r323399 by Rafael Espindola MFC r328545 (by emaste): lld: Simplify. NFC. Obtained from: LLVM r323440 by Rafael Espindola MFC r328546 (by emaste): lld: Improve LMARegion handling. This fixes the crash reported at [LLVM] PR36083. The issue is that we were trying to put all the sections in the same PT_LOAD and crashing trying to write past the end of the file. This also adds accounting for used space in LMARegion, without it all 3 PT_LOADs would have the same physical address. Obtained from: LLVM r323449 by Rafael Espindola MFC r328547 (by emaste): lld: Move LMAOffset from the OutputSection to the PhdrEntry. NFC. If two sections are in the same PT_LOAD, their relatives offsets, virtual address and physical addresses are all the same. [Rafael] initially wanted to have a single global LMAOffset, on the assumption that every ELF file was in practiced loaded contiguously in both physical and virtual memory. Unfortunately that is not the case. The linux kernel has: LOAD 0x200000 0xffffffff81000000 0x0000000001000000 0xced000 0xced000 R E 0x200000 LOAD 0x1000000 0xffffffff81e00000 0x0000000001e00000 0x15f000 0x15f000 RW 0x200000 LOAD 0x1200000 0x0000000000000000 0x0000000001f5f000 0x01b198 0x01b198 RW 0x200000 LOAD 0x137b000 0xffffffff81f7b000 0x0000000001f7b000 0x116000 0x1ec000 RWE 0x200000 The delta for all but the third PT_LOAD is the same: 0xffffffff80000000. [Rafael] thinks the 3rd one is a hack for implementing per cpu data, but we can't break that. Obtained from: LLVM r323456 by Rafael Espindola MFC r328548 (by emaste): lld: Put the header in the first PT_LOAD even if that PT_LOAD has a LMAExpr The root problem is that we were creating a PT_LOAD just for the header. That was technically valid, but inconvenient: we should not be making the ELF discontinuous. The solution is to allow a section with LMAExpr to be added to a PT_LOAD if that PT_LOAD doesn't already have a LMAExpr. LLVM PR: 36017 Obtained from: LLVM r323625 by Rafael Espindola MFC r328594 (by emaste): Pull in r322108 from upstream llvm trunk (by Rafael Esp?ndola): Make one of the emitFill methods non virtual. NFC. This is just preparatory work to fix [LLVM] PR35858. MFC r328595 (by emaste): Pull in r322123 from upstream llvm trunk (by Rafael Esp?ndola): Don't create MCFillFragment directly. Instead use higher level APIs that take care of most bookkeeping. MFC r328596 (by emaste): Pull in r322131 from upstream llvm trunk (by Rafael Esp?ndola): Use a MCExpr for the size of MCFillFragment. This allows the size to be found during ralaxation. This fixes [LLVM] pr35858. Requested by: royger MFC r328753: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r323948). PR: 224669 MFC r328817: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r324090). This introduces retpoline support, with the -mretpoline flag. The upstream initial commit message (r323155 by Chandler Carruth) contains quite a bit of explanation. Quoting: Introduce the "retpoline" x86 mitigation technique for variant #2 of the speculative execution vulnerabilities disclosed today, specifically identified by CVE-2017-5715, "Branch Target Injection", and is one of the two halves to Spectre. Summary: First, we need to explain the core of the vulnerability. Note that this is a very incomplete description, please see the Project Zero blog post for details: https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html The basis for branch target injection is to direct speculative execution of the processor to some "gadget" of executable code by poisoning the prediction of indirect branches with the address of that gadget. The gadget in turn contains an operation that provides a side channel for reading data. Most commonly, this will look like a load of secret data followed by a branch on the loaded value and then a load of some predictable cache line. The attacker then uses timing of the processors cache to determine which direction the branch took *in the speculative execution*, and in turn what one bit of the loaded value was. Due to the nature of these timing side channels and the branch predictor on Intel processors, this allows an attacker to leak data only accessible to a privileged domain (like the kernel) back into an unprivileged domain. The goal is simple: avoid generating code which contains an indirect branch that could have its prediction poisoned by an attacker. In many cases, the compiler can simply use directed conditional branches and a small search tree. LLVM already has support for lowering switches in this way and the first step of this patch is to disable jump-table lowering of switches and introduce a pass to rewrite explicit indirectbr sequences into a switch over integers. However, there is no fully general alternative to indirect calls. We introduce a new construct we call a "retpoline" to implement indirect calls in a non-speculatable way. It can be thought of loosely as a trampoline for indirect calls which uses the RET instruction on x86. Further, we arrange for a specific call->ret sequence which ensures the processor predicts the return to go to a controlled, known location. The retpoline then "smashes" the return address pushed onto the stack by the call with the desired target of the original indirect call. The result is a predicted return to the next instruction after a call (which can be used to trap speculative execution within an infinite loop) and an actual indirect branch to an arbitrary address. On 64-bit x86 ABIs, this is especially easily done in the compiler by using a guaranteed scratch register to pass the target into this device. For 32-bit ABIs there isn't a guaranteed scratch register and so several different retpoline variants are introduced to use a scratch register if one is available in the calling convention and to otherwise use direct stack push/pop sequences to pass the target address. This "retpoline" mitigation is fully described in the following blog post: https://support.google.com/faqs/answer/7625886 We also support a target feature that disables emission of the retpoline thunk by the compiler to allow for custom thunks if users want them. These are particularly useful in environments like kernels that routinely do hot-patching on boot and want to hot-patch their thunk to different code sequences. They can write this custom thunk and use `-mretpoline-external-thunk` *in addition* to `-mretpoline`. In this case, on x86-64 thu thunk names must be: ``` __llvm_external_retpoline_r11 ``` or on 32-bit: ``` __llvm_external_retpoline_eax __llvm_external_retpoline_ecx __llvm_external_retpoline_edx __llvm_external_retpoline_push ``` And the target of the retpoline is passed in the named register, or in the case of the `push` suffix on the top of the stack via a `pushl` instruction. There is one other important source of indirect branches in x86 ELF binaries: the PLT. These patches also include support for LLD to generate PLT entries that perform a retpoline-style indirection. The only other indirect branches remaining that we are aware of are from precompiled runtimes (such as crt0.o and similar). The ones we have found are not really attackable, and so we have not focused on them here, but eventually these runtimes should also be replicated for retpoline-ed configurations for completeness. For kernels or other freestanding or fully static executables, the compiler switch `-mretpoline` is sufficient to fully mitigate this particular attack. For dynamic executables, you must compile *all* libraries with `-mretpoline` and additionally link the dynamic executable and all shared libraries with LLD and pass `-z retpolineplt` (or use similar functionality from some other linker). We strongly recommend also using `-z now` as non-lazy binding allows the retpoline-mitigated PLT to be substantially smaller. When manually apply similar transformations to `-mretpoline` to the Linux kernel we observed very small performance hits to applications running typic al workloads, and relatively minor hits (approximately 2%) even for extremely syscall-heavy applications. This is largely due to the small number of indirect branches that occur in performance sensitive paths of the kernel. When using these patches on statically linked applications, especially C++ applications, you should expect to see a much more dramatic performance hit. For microbenchmarks that are switch, indirect-, or virtual-call heavy we have seen overheads ranging from 10% to 50%. However, real-world workloads exhibit substantially lower performance impact. Notably, techniques such as PGO and ThinLTO dramatically reduce the impact of hot indirect calls (by speculatively promoting them to direct calls) and allow optimized search trees to be used to lower switches. If you need to deploy these techniques in C++ applications, we *strongly* recommend that you ensure all hot call targets are statically linked (avoiding PLT indirection) and use both PGO and ThinLTO. Well tuned servers using all of these techniques saw 5% - 10% overhead from the use of retpoline. We will add detailed documentation covering these components in subsequent patches, but wanted to make the core functionality available as soon as possible. Happy for more code review, but we'd really like to get these patches landed and backported ASAP for obvious reasons. We're planning to backport this to both 6.0 and 5.0 release streams and get a 5.0 release with just this cherry picked ASAP for distros and vendors. This patch is the work of a number of people over the past month: Eric, Reid, Rui, and myself. I'm mailing it out as a single commit due to the time sensitive nature of landing this and the need to backport it. Huge thanks to everyone who helped out here, and everyone at Intel who helped out in discussions about how to craft this. Also, credit goes to Paul Turner (at Google, but not an LLVM contributor) for much of the underlying retpoline design. Reviewers: echristo, rnk, ruiu, craig.topper, DavidKreitzer Subscribers: sanjoy, emaste, mcrosier, mgorny, mehdi_amini, hiraditya, llvm-commits Differential Revision: https://reviews.llvm.org/D41723 PR: 224669 MFC r329033: Pull in r324594 from upstream clang trunk (by Alexander Ivchenko): Fix for #31362 - ms_abi is implemented incorrectly for values >=16 bytes. Summary: This patch is a fix for following issue: https://bugs.llvm.org/show_bug.cgi?id=31362 The problem was caused by front end lowering C calling conventions without taking into account calling conventions enforced by attribute. In this case win64cc was no correctly lowered on targets other than Windows. Reviewed By: rnk (Reid Kleckner) Differential Revision: https://reviews.llvm.org/D43016 Author: belickim <[email protected]> This fixes clang 6.0.0 assertions when building the emulators/wine and emulators/wine-devel ports, and should also make it use the correct Windows calling conventions. Bump __FreeBSD_version to make the fix easy to detect. PR: 224863 MFC r329223: Pull in r323998 from upstream clang trunk (by Richard Smith): PR36157: When injecting an implicit function declaration in C89, find the right DeclContext rather than injecting it wherever we happen to be. This avoids creating functions whose DeclContext is a struct or similar. This fixes assertion failures when parsing certain not-completely-valid struct declarations. Reported by: ae PR: 225862 MFC r329410: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r325330). PR: 224669 MFC r329983: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 (branches/release_60 r325932). This corresponds to 6.0.0 rc3. PR: 224669 MFC r330384: Upgrade our copies of clang, llvm, lld, lldb, compiler-rt and libc++ to 6.0.0 release (upstream r326565). Release notes for llvm, clang and lld will be available here soon: <http://releases.llvm.org/6.0.0/docs/ReleaseNotes.html> <http://releases.llvm.org/6.0.0/tools/clang/docs/ReleaseNotes.html> <http://releases.llvm.org/6.0.0/tools/lld/docs/ReleaseNotes.html> Relnotes: yes PR: 224669 MFC r330686: Pull in r326882 from upstream llvm trunk (by Sjoerd Meijer): [ARM] Fix for PR36577 Don't PerformSHLSimplify if the given node is used by a node that also uses a constant because we may get stuck in an infinite combine loop. bugzilla: https://bugs.llvm.org/show_bug.cgi?id=36577 Patch by Sam Parker. Differential Revision: https://reviews.llvm.org/D44097 This fixes a hang when compiling one particular file in java/openjdk8 for armv6 and armv7. Reported by: swills PR: 226388 MFC r331065: Pull in r327638 from upstream llvm trunk (by Matthew Simpson): [ConstantFolding, InstSimplify] Handle more vector GEPs This patch addresses some additional cases where the compiler crashes upon encountering vector GEPs. This should fix PR36116. Differential Revision: https://reviews.llvm.org/D44219 Reference: https://bugs.llvm.org/show_bug.cgi?id=36116 This fixes an assertion when building the emulators/snes9x port. Reported by: jbeich PR: 225471 MFC r331066: Pull in r321999 from upstream clang trunk (by Ivan A. Kosarev): [CodeGen] Fix TBAA info for accesses to members of base classes Resolves: Bug 35724 - regression (r315984): fatal error: error in backend: Broken function found (Did not see access type in access path!) https://bugs.llvm.org/show_bug.cgi?id=35724 Differential Revision: https://reviews.llvm.org/D41547 This fixes "Did not see access type in access path" fatal errors when building the devel/gdb port (version 8.1). Reported by: jbeich PR: 226658 MFC r331366: Pull in r327101 from upstream llvm trunk (by Rafael Espindola): Don't treat .symver as a regular alias definition. This patch starts simplifying the handling of .symver. For now it just moves the responsibility for creating an alias down to the streamer. With that the asm streamer can pass a .symver unchanged, which is nice since gas cannot parse "foo@bar = zed". In a followup I hope to move the handling down to the writer so that we don't need special hacks for avoiding breaking names with @@@ on windows. Pull in r327160 from upstream llvm trunk (by Rafael Espindola): Delay creating an alias for @@@. With this we only create an alias for @@@ once we know if it should use @ or @@. This avoids last minutes renames and hacks to handle MS names. This only handles the ELF writer. LTO still has issues with @@@ aliases. Pull in r327928 from upstream llvm trunk (by Vitaly Buka): Object: Move attribute calculation into RecordStreamer. NFC Summary: Preparation for D44274 Reviewers: pcc, espindola Subscribers: hiraditya Differential Revision: https://reviews.llvm.org/D44276 Pull in r327930 from upstream llvm trunk (by Vitaly Buka): Object: Fix handling of @@@ in .symver directive Summary: name@@@nodename is going to be replaced with name@@nodename if symbols is defined in the assembled file, or name@nodename if undefined. https://sourceware.org/binutils/docs/as/Symver.html Fixes PR36623 Reviewers: pcc, espindola Subscribers: mehdi_amini, hiraditya Differential Revision: https://reviews.llvm.org/D44274 Together, these changes fix handling of @@@ in .symver directives when doing Link Time Optimization. Reported by: Shawn Webb <[email protected]> MFC r331731: Pull in r328738 from upstream lld trunk (by Rafael Espindola): Strip @ver suffices from the LTO output. This fixes pr36623. The problem is that we have to parse versions out of names before LTO so that LTO can use that information. When we get the LTO produced .o files, we replace the previous symbols with the LTO produced ones, but they still have @ in their names. We could just trim the name directly, but calling parseSymbolVersion to do it is simpler. This is a follow-up to r331366, since we discovered that lld could append version strings to symbols twice, when using Link Time Optimization.
1 parent 58aade4 commit 6cd0d33

File tree

4,301 files changed

+351386
-168029
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

4,301 files changed

+351386
-168029
lines changed

ObsoleteFiles.inc

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,123 @@
3838
# xargs -n1 | sort | uniq -d;
3939
# done
4040

41+
# 20180331: new clang import which bumps version from 5.0.1 to 6.0.0.
42+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/allocator_interface.h
43+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/asan_interface.h
44+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/common_interface_defs.h
45+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/coverage_interface.h
46+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/dfsan_interface.h
47+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/esan_interface.h
48+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/linux_syscall_hooks.h
49+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/lsan_interface.h
50+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/msan_interface.h
51+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface.h
52+
OLD_FILES+=usr/lib/clang/5.0.1/include/sanitizer/tsan_interface_atomic.h
53+
OLD_DIRS+=usr/lib/clang/5.0.1/include/sanitizer
54+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_builtin_vars.h
55+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_cmath.h
56+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_complex_builtins.h
57+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_intrinsics.h
58+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_math_forward_declares.h
59+
OLD_FILES+=usr/lib/clang/5.0.1/include/__clang_cuda_runtime_wrapper.h
60+
OLD_FILES+=usr/lib/clang/5.0.1/include/__stddef_max_align_t.h
61+
OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_aes.h
62+
OLD_FILES+=usr/lib/clang/5.0.1/include/__wmmintrin_pclmul.h
63+
OLD_FILES+=usr/lib/clang/5.0.1/include/adxintrin.h
64+
OLD_FILES+=usr/lib/clang/5.0.1/include/altivec.h
65+
OLD_FILES+=usr/lib/clang/5.0.1/include/ammintrin.h
66+
OLD_FILES+=usr/lib/clang/5.0.1/include/arm_acle.h
67+
OLD_FILES+=usr/lib/clang/5.0.1/include/arm_neon.h
68+
OLD_FILES+=usr/lib/clang/5.0.1/include/armintr.h
69+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx2intrin.h
70+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512bwintrin.h
71+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512cdintrin.h
72+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512dqintrin.h
73+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512erintrin.h
74+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512fintrin.h
75+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmaintrin.h
76+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512ifmavlintrin.h
77+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512pfintrin.h
78+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmiintrin.h
79+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vbmivlintrin.h
80+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlbwintrin.h
81+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlcdintrin.h
82+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vldqintrin.h
83+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vlintrin.h
84+
OLD_FILES+=usr/lib/clang/5.0.1/include/avx512vpopcntdqintrin.h
85+
OLD_FILES+=usr/lib/clang/5.0.1/include/avxintrin.h
86+
OLD_FILES+=usr/lib/clang/5.0.1/include/bmi2intrin.h
87+
OLD_FILES+=usr/lib/clang/5.0.1/include/bmiintrin.h
88+
OLD_FILES+=usr/lib/clang/5.0.1/include/clflushoptintrin.h
89+
OLD_FILES+=usr/lib/clang/5.0.1/include/clzerointrin.h
90+
OLD_FILES+=usr/lib/clang/5.0.1/include/cpuid.h
91+
OLD_FILES+=usr/lib/clang/5.0.1/include/emmintrin.h
92+
OLD_FILES+=usr/lib/clang/5.0.1/include/f16cintrin.h
93+
OLD_FILES+=usr/lib/clang/5.0.1/include/fma4intrin.h
94+
OLD_FILES+=usr/lib/clang/5.0.1/include/fmaintrin.h
95+
OLD_FILES+=usr/lib/clang/5.0.1/include/fxsrintrin.h
96+
OLD_FILES+=usr/lib/clang/5.0.1/include/htmintrin.h
97+
OLD_FILES+=usr/lib/clang/5.0.1/include/htmxlintrin.h
98+
OLD_FILES+=usr/lib/clang/5.0.1/include/ia32intrin.h
99+
OLD_FILES+=usr/lib/clang/5.0.1/include/immintrin.h
100+
OLD_FILES+=usr/lib/clang/5.0.1/include/lwpintrin.h
101+
OLD_FILES+=usr/lib/clang/5.0.1/include/lzcntintrin.h
102+
OLD_FILES+=usr/lib/clang/5.0.1/include/mm3dnow.h
103+
OLD_FILES+=usr/lib/clang/5.0.1/include/mm_malloc.h
104+
OLD_FILES+=usr/lib/clang/5.0.1/include/mmintrin.h
105+
OLD_FILES+=usr/lib/clang/5.0.1/include/module.modulemap
106+
OLD_FILES+=usr/lib/clang/5.0.1/include/msa.h
107+
OLD_FILES+=usr/lib/clang/5.0.1/include/mwaitxintrin.h
108+
OLD_FILES+=usr/lib/clang/5.0.1/include/nmmintrin.h
109+
OLD_FILES+=usr/lib/clang/5.0.1/include/opencl-c.h
110+
OLD_FILES+=usr/lib/clang/5.0.1/include/pkuintrin.h
111+
OLD_FILES+=usr/lib/clang/5.0.1/include/pmmintrin.h
112+
OLD_FILES+=usr/lib/clang/5.0.1/include/popcntintrin.h
113+
OLD_FILES+=usr/lib/clang/5.0.1/include/prfchwintrin.h
114+
OLD_FILES+=usr/lib/clang/5.0.1/include/rdseedintrin.h
115+
OLD_FILES+=usr/lib/clang/5.0.1/include/rtmintrin.h
116+
OLD_FILES+=usr/lib/clang/5.0.1/include/s390intrin.h
117+
OLD_FILES+=usr/lib/clang/5.0.1/include/shaintrin.h
118+
OLD_FILES+=usr/lib/clang/5.0.1/include/smmintrin.h
119+
OLD_FILES+=usr/lib/clang/5.0.1/include/tbmintrin.h
120+
OLD_FILES+=usr/lib/clang/5.0.1/include/tmmintrin.h
121+
OLD_FILES+=usr/lib/clang/5.0.1/include/vadefs.h
122+
OLD_FILES+=usr/lib/clang/5.0.1/include/vecintrin.h
123+
OLD_FILES+=usr/lib/clang/5.0.1/include/wmmintrin.h
124+
OLD_FILES+=usr/lib/clang/5.0.1/include/x86intrin.h
125+
OLD_FILES+=usr/lib/clang/5.0.1/include/xmmintrin.h
126+
OLD_FILES+=usr/lib/clang/5.0.1/include/xopintrin.h
127+
OLD_FILES+=usr/lib/clang/5.0.1/include/xsavecintrin.h
128+
OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveintrin.h
129+
OLD_FILES+=usr/lib/clang/5.0.1/include/xsaveoptintrin.h
130+
OLD_FILES+=usr/lib/clang/5.0.1/include/xsavesintrin.h
131+
OLD_FILES+=usr/lib/clang/5.0.1/include/xtestintrin.h
132+
OLD_DIRS+=usr/lib/clang/5.0.1/include
133+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.a
134+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-i386.so
135+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-i386.a
136+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-preinit-x86_64.a
137+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.a
138+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan-x86_64.so
139+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-i386.a
140+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.asan_cxx-x86_64.a
141+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-arm.a
142+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-armhf.a
143+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-i386.a
144+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.profile-x86_64.a
145+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-i386.a
146+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.safestack-x86_64.a
147+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-i386.a
148+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats-x86_64.a
149+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-i386.a
150+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.stats_client-x86_64.a
151+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-i386.a
152+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone-x86_64.a
153+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-i386.a
154+
OLD_FILES+=usr/lib/clang/5.0.1/lib/freebsd/libclang_rt.ubsan_standalone_cxx-x86_64.a
155+
OLD_DIRS+=usr/lib/clang/5.0.1/lib/freebsd
156+
OLD_DIRS+=usr/lib/clang/5.0.1/lib
157+
OLD_DIRS+=usr/lib/clang/5.0.1
41158
# 20180213: remove c_rehash(1)
42159
OLD_FILES+=usr/share/openssl/man/man1/c_rehash.1.gz
43160
# 20180212: Obsolete forth files

UPDATING

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ from older versions of FreeBSD, try WITHOUT_CLANG and WITH_GCC to bootstrap to
1616
the tip of head, and then rebuild without this option. The bootstrap process
1717
from older version of current across the gcc/clang cutover is a bit fragile.
1818

19+
20180331:
20+
Clang, llvm, lld, lldb, compiler-rt and libc++ have been upgraded to
21+
6.0.0. Please see the 20141231 entry below for information about
22+
prerequisites and upgrading, if you are not already using clang 3.5.0
23+
or higher.
24+
1925
20180211:
2026
The LOADER_FIREWIRE_SUPPORT build variable as been renamed to
2127
WITH/OUT_LOADER_FIREWIRE. LOADER_{NO_,}GELI_SUPPORT has been renamed
@@ -25,7 +31,6 @@ from older version of current across the gcc/clang cutover is a bit fragile.
2531
The geli password typed at boot is now hidden. To restore the previous
2632
behavior, see geli(8) for configuration options.
2733

28-
20180113:
2934
The SW_WATCHDOG option is no longer necessary to enable the
3035
hardclock-based software watchdog if no hardware watchdog is
3136
configured. As before, SW_WATCHDOG will cause the software

contrib/compiler-rt/include/sanitizer/allocator_interface.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,25 +32,25 @@ extern "C" {
3232
size_t __sanitizer_get_allocated_size(const volatile void *p);
3333

3434
/* Number of bytes, allocated and not yet freed by the application. */
35-
size_t __sanitizer_get_current_allocated_bytes();
35+
size_t __sanitizer_get_current_allocated_bytes(void);
3636

3737
/* Number of bytes, mmaped by the allocator to fulfill allocation requests.
3838
Generally, for request of X bytes, allocator can reserve and add to free
3939
lists a large number of chunks of size X to use them for future requests.
4040
All these chunks count toward the heap size. Currently, allocator never
4141
releases memory to OS (instead, it just puts freed chunks to free
4242
lists). */
43-
size_t __sanitizer_get_heap_size();
43+
size_t __sanitizer_get_heap_size(void);
4444

4545
/* Number of bytes, mmaped by the allocator, which can be used to fulfill
4646
allocation requests. When a user program frees memory chunk, it can first
4747
fall into quarantine and will count toward __sanitizer_get_free_bytes()
4848
later. */
49-
size_t __sanitizer_get_free_bytes();
49+
size_t __sanitizer_get_free_bytes(void);
5050

5151
/* Number of bytes in unmapped pages, that are released to OS. Currently,
5252
always returns 0. */
53-
size_t __sanitizer_get_unmapped_bytes();
53+
size_t __sanitizer_get_unmapped_bytes(void);
5454

5555
/* Malloc hooks that may be optionally provided by user.
5656
__sanitizer_malloc_hook(ptr, size) is called immediately after
@@ -76,6 +76,13 @@ extern "C" {
7676
void (*malloc_hook)(const volatile void *, size_t),
7777
void (*free_hook)(const volatile void *));
7878

79+
/* Drains allocator quarantines (calling thread's and global ones), returns
80+
freed memory back to OS and releases other non-essential internal allocator
81+
resources in attempt to reduce process RSS.
82+
Currently available with ASan only.
83+
*/
84+
void __sanitizer_purge_allocator(void);
85+
7986
#ifdef __cplusplus
8087
} // extern "C"
8188
#endif

contrib/compiler-rt/include/sanitizer/asan_interface.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,19 +64,19 @@ extern "C" {
6464

6565
// Useful for calling from a debugger to get information about an ASan error.
6666
// Returns 1 if an error has been (or is being) reported, otherwise returns 0.
67-
int __asan_report_present();
67+
int __asan_report_present(void);
6868

6969
// Useful for calling from a debugger to get information about an ASan error.
7070
// If an error has been (or is being) reported, the following functions return
7171
// the pc, bp, sp, address, access type (0 = read, 1 = write), access size and
7272
// bug description (e.g. "heap-use-after-free"). Otherwise they return 0.
73-
void *__asan_get_report_pc();
74-
void *__asan_get_report_bp();
75-
void *__asan_get_report_sp();
76-
void *__asan_get_report_address();
77-
int __asan_get_report_access_type();
78-
size_t __asan_get_report_access_size();
79-
const char *__asan_get_report_description();
73+
void *__asan_get_report_pc(void);
74+
void *__asan_get_report_bp(void);
75+
void *__asan_get_report_sp(void);
76+
void *__asan_get_report_address(void);
77+
int __asan_get_report_access_type(void);
78+
size_t __asan_get_report_access_size(void);
79+
const char *__asan_get_report_description(void);
8080

8181
// Useful for calling from the debugger to get information about a pointer.
8282
// Returns the category of the given pointer as a constant string.
@@ -118,21 +118,21 @@ extern "C" {
118118
// User may provide function that would be called right when ASan detects
119119
// an error. This can be used to notice cases when ASan detects an error, but
120120
// the program crashes before ASan report is printed.
121-
void __asan_on_error();
121+
void __asan_on_error(void);
122122

123123
// Prints accumulated stats to stderr. Used for debugging.
124-
void __asan_print_accumulated_stats();
124+
void __asan_print_accumulated_stats(void);
125125

126126
// This function may be optionally provided by user and should return
127127
// a string containing ASan runtime options. See asan_flags.h for details.
128-
const char* __asan_default_options();
128+
const char* __asan_default_options(void);
129129

130130
// The following 2 functions facilitate garbage collection in presence of
131131
// asan's fake stack.
132132

133133
// Returns an opaque handler to be used later in __asan_addr_is_in_fake_stack.
134134
// Returns NULL if the current thread does not have a fake stack.
135-
void *__asan_get_current_fake_stack();
135+
void *__asan_get_current_fake_stack(void);
136136

137137
// If fake_stack is non-NULL and addr belongs to a fake frame in
138138
// fake_stack, returns the address on real stack that corresponds to
@@ -144,6 +144,10 @@ extern "C" {
144144
void *__asan_addr_is_in_fake_stack(void *fake_stack, void *addr, void **beg,
145145
void **end);
146146

147+
// Performs cleanup before a [[noreturn]] function. Must be called
148+
// before things like _exit and execl to avoid false positives on stack.
149+
void __asan_handle_no_return(void);
150+
147151
#ifdef __cplusplus
148152
} // extern "C"
149153
#endif

contrib/compiler-rt/include/sanitizer/common_interface_defs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ extern "C" {
115115
const void *beg, const void *mid, const void *end);
116116

117117
// Print the stack trace leading to this call. Useful for debugging user code.
118-
void __sanitizer_print_stack_trace();
118+
void __sanitizer_print_stack_trace(void);
119119

120120
// Symbolizes the supplied 'pc' using the format string 'fmt'.
121121
// Outputs at most 'out_buf_size' bytes into 'out_buf'.

contrib/compiler-rt/include/sanitizer/coverage_interface.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,13 @@ extern "C" {
2020
#endif
2121

2222
// Record and dump coverage info.
23-
void __sanitizer_cov_dump();
23+
void __sanitizer_cov_dump(void);
2424

25-
// Dump collected coverage info. Sorts pcs by module into individual
26-
// .sancov files.
25+
// Clear collected coverage info.
26+
void __sanitizer_cov_reset(void);
27+
28+
// Dump collected coverage info. Sorts pcs by module into individual .sancov
29+
// files.
2730
void __sanitizer_dump_coverage(const uintptr_t *pcs, uintptr_t len);
2831

2932
#ifdef __cplusplus

contrib/compiler-rt/include/sanitizer/esan_interface.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ extern "C" {
3737
// This function can be called mid-run (or at the end of a run for
3838
// a server process that doesn't shut down normally) to request that
3939
// data for that point in the run be reported from the tool.
40-
void COMPILER_RT_WEAK __esan_report();
40+
void COMPILER_RT_WEAK __esan_report(void);
4141

4242
// This function returns the number of samples that the esan tool has collected
4343
// to this point. This is useful for testing.
44-
unsigned int COMPILER_RT_WEAK __esan_get_sample_count();
44+
unsigned int COMPILER_RT_WEAK __esan_get_sample_count(void);
4545

4646
#ifdef __cplusplus
4747
} // extern "C"
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
//===-- sanitizer/asan_interface.h ------------------------------*- C++ -*-===//
2+
//
3+
// The LLVM Compiler Infrastructure
4+
//
5+
// This file is distributed under the University of Illinois Open Source
6+
// License. See LICENSE.TXT for details.
7+
//
8+
//===----------------------------------------------------------------------===//
9+
//
10+
// This file is a part of HWAddressSanitizer.
11+
//
12+
// Public interface header.
13+
//===----------------------------------------------------------------------===//
14+
#ifndef SANITIZER_HWASAN_INTERFACE_H
15+
#define SANITIZER_HWASAN_INTERFACE_H
16+
17+
#include <sanitizer/common_interface_defs.h>
18+
19+
#ifdef __cplusplus
20+
extern "C" {
21+
#endif
22+
// This function may be optionally provided by user and should return
23+
// a string containing HWASan runtime options. See asan_flags.h for details.
24+
const char* __hwasan_default_options(void);
25+
26+
void __hwasan_enable_allocator_tagging(void);
27+
void __hwasan_disable_allocator_tagging(void);
28+
29+
#ifdef __cplusplus
30+
} // extern "C"
31+
#endif
32+
33+
#endif // SANITIZER_HWASAN_INTERFACE_H

contrib/compiler-rt/include/sanitizer/lsan_interface.h

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ extern "C" {
2121
#endif
2222
// Allocations made between calls to __lsan_disable() and __lsan_enable() will
2323
// be treated as non-leaks. Disable/enable pairs may be nested.
24-
void __lsan_disable();
25-
void __lsan_enable();
24+
void __lsan_disable(void);
25+
void __lsan_enable(void);
2626

2727
// The heap object into which p points will be treated as a non-leak.
2828
void __lsan_ignore_object(const void *p);
@@ -49,7 +49,7 @@ extern "C" {
4949
// the time of first invocation of this function.
5050
// By calling this function early during process shutdown, you can instruct
5151
// LSan to ignore shutdown-only leaks which happen later on.
52-
void __lsan_do_leak_check();
52+
void __lsan_do_leak_check(void);
5353

5454
// Check for leaks now. Returns zero if no leaks have been found or if leak
5555
// detection is disabled, non-zero otherwise.
@@ -58,17 +58,23 @@ extern "C" {
5858
// terminate the process. It does not affect the behavior of
5959
// __lsan_do_leak_check() or the end-of-process leak check, and is not
6060
// affected by them.
61-
int __lsan_do_recoverable_leak_check();
61+
int __lsan_do_recoverable_leak_check(void);
6262

6363
// The user may optionally provide this function to disallow leak checking
6464
// for the program it is linked into (if the return value is non-zero). This
6565
// function must be defined as returning a constant value; any behavior beyond
6666
// that is unsupported.
67-
int __lsan_is_turned_off();
67+
// To avoid dead stripping, you may need to define this function with
68+
// __attribute__((used))
69+
int __lsan_is_turned_off(void);
70+
71+
// This function may be optionally provided by user and should return
72+
// a string containing LSan runtime options. See lsan_flags.inc for details.
73+
const char *__lsan_default_options(void);
6874

6975
// This function may be optionally provided by the user and should return
7076
// a string containing LSan suppressions.
71-
const char *__lsan_default_suppressions();
77+
const char *__lsan_default_suppressions(void);
7278
#ifdef __cplusplus
7379
} // extern "C"
7480

0 commit comments

Comments
 (0)