Date: Thu, 22 Aug 2019 20:26:21 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r351405 - in projects/clang900-import/contrib/openmp: . runtime/src runtime/src/i18n runtime/src/include runtime/src/include/30 runtime/src/include/40 runtime/src/include/45 runtime/src... Message-ID: <201908222026.x7MKQL8a094619@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Thu Aug 22 20:26:20 2019 New Revision: 351405 URL: https://svnweb.freebsd.org/changeset/base/351405 Log: Merge openmp trunk r366426, resolve conflicts, and add FREEBSD-Xlist. Added: projects/clang900-import/contrib/openmp/FREEBSD-Xlist (contents, props changed) projects/clang900-import/contrib/openmp/runtime/src/include/omp-tools.h.var - copied unchanged from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp-tools.h.var projects/clang900-import/contrib/openmp/runtime/src/include/omp.h.var - copied unchanged from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp.h.var projects/clang900-import/contrib/openmp/runtime/src/include/omp_lib.f.var - copied unchanged from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp_lib.f.var projects/clang900-import/contrib/openmp/runtime/src/include/omp_lib.f90.var - copied unchanged from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp_lib.f90.var projects/clang900-import/contrib/openmp/runtime/src/include/omp_lib.h.var - copied unchanged from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp_lib.h.var Deleted: projects/clang900-import/contrib/openmp/runtime/src/include/30/ projects/clang900-import/contrib/openmp/runtime/src/include/40/ projects/clang900-import/contrib/openmp/runtime/src/include/45/ projects/clang900-import/contrib/openmp/runtime/src/include/50/ Modified: projects/clang900-import/contrib/openmp/LICENSE.txt projects/clang900-import/contrib/openmp/runtime/src/dllexports projects/clang900-import/contrib/openmp/runtime/src/exports_so.txt projects/clang900-import/contrib/openmp/runtime/src/extractExternal.cpp projects/clang900-import/contrib/openmp/runtime/src/i18n/en_US.txt projects/clang900-import/contrib/openmp/runtime/src/kmp.h projects/clang900-import/contrib/openmp/runtime/src/kmp_affinity.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_affinity.h projects/clang900-import/contrib/openmp/runtime/src/kmp_alloc.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_atomic.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_atomic.h projects/clang900-import/contrib/openmp/runtime/src/kmp_barrier.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_cancel.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_config.h.cmake projects/clang900-import/contrib/openmp/runtime/src/kmp_csupport.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_debug.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_debug.h projects/clang900-import/contrib/openmp/runtime/src/kmp_debugger.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_debugger.h projects/clang900-import/contrib/openmp/runtime/src/kmp_dispatch.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_dispatch.h projects/clang900-import/contrib/openmp/runtime/src/kmp_dispatch_hier.h projects/clang900-import/contrib/openmp/runtime/src/kmp_environment.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_environment.h projects/clang900-import/contrib/openmp/runtime/src/kmp_error.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_error.h projects/clang900-import/contrib/openmp/runtime/src/kmp_ftn_cdecl.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_ftn_entry.h projects/clang900-import/contrib/openmp/runtime/src/kmp_ftn_extra.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_ftn_os.h projects/clang900-import/contrib/openmp/runtime/src/kmp_ftn_stdcall.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_global.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_gsupport.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_i18n.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_i18n.h projects/clang900-import/contrib/openmp/runtime/src/kmp_import.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_io.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_io.h projects/clang900-import/contrib/openmp/runtime/src/kmp_itt.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_itt.h projects/clang900-import/contrib/openmp/runtime/src/kmp_itt.inl projects/clang900-import/contrib/openmp/runtime/src/kmp_lock.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_lock.h projects/clang900-import/contrib/openmp/runtime/src/kmp_omp.h projects/clang900-import/contrib/openmp/runtime/src/kmp_os.h projects/clang900-import/contrib/openmp/runtime/src/kmp_platform.h projects/clang900-import/contrib/openmp/runtime/src/kmp_runtime.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_safe_c_api.h projects/clang900-import/contrib/openmp/runtime/src/kmp_sched.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_settings.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_settings.h projects/clang900-import/contrib/openmp/runtime/src/kmp_stats.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_stats.h projects/clang900-import/contrib/openmp/runtime/src/kmp_stats_timing.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_stats_timing.h projects/clang900-import/contrib/openmp/runtime/src/kmp_str.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_str.h projects/clang900-import/contrib/openmp/runtime/src/kmp_stub.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_stub.h projects/clang900-import/contrib/openmp/runtime/src/kmp_taskdeps.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_taskdeps.h projects/clang900-import/contrib/openmp/runtime/src/kmp_tasking.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_taskq.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_threadprivate.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_utility.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_version.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_version.h projects/clang900-import/contrib/openmp/runtime/src/kmp_wait_release.cpp projects/clang900-import/contrib/openmp/runtime/src/kmp_wait_release.h projects/clang900-import/contrib/openmp/runtime/src/kmp_wrapper_getpid.h projects/clang900-import/contrib/openmp/runtime/src/kmp_wrapper_malloc.h projects/clang900-import/contrib/openmp/runtime/src/libomp.rc.var projects/clang900-import/contrib/openmp/runtime/src/ompt-event-specific.h projects/clang900-import/contrib/openmp/runtime/src/ompt-general.cpp projects/clang900-import/contrib/openmp/runtime/src/ompt-internal.h projects/clang900-import/contrib/openmp/runtime/src/ompt-specific.cpp projects/clang900-import/contrib/openmp/runtime/src/ompt-specific.h projects/clang900-import/contrib/openmp/runtime/src/test-touch.c projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/disable_warnings.h projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/ittnotify.h projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/ittnotify_config.h projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/ittnotify_static.c projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/ittnotify_static.h projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/ittnotify_types.h projects/clang900-import/contrib/openmp/runtime/src/thirdparty/ittnotify/legacy/ittnotify.h projects/clang900-import/contrib/openmp/runtime/src/tsan_annotations.cpp projects/clang900-import/contrib/openmp/runtime/src/tsan_annotations.h projects/clang900-import/contrib/openmp/runtime/src/z_Linux_asm.S projects/clang900-import/contrib/openmp/runtime/src/z_Linux_util.cpp projects/clang900-import/contrib/openmp/runtime/src/z_Windows_NT-586_asm.asm projects/clang900-import/contrib/openmp/runtime/src/z_Windows_NT-586_util.cpp projects/clang900-import/contrib/openmp/runtime/src/z_Windows_NT_util.cpp Directory Properties: projects/clang900-import/contrib/openmp/ (props changed) Added: projects/clang900-import/contrib/openmp/FREEBSD-Xlist ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/contrib/openmp/FREEBSD-Xlist Thu Aug 22 20:26:20 2019 (r351405) @@ -0,0 +1,17 @@ +# $FreeBSD$ +.arcconfig +.gitignore +CMakeLists.txt +README.rst +cmake/ +libomptarget/ +runtime/.clang-format +runtime/CMakeLists.txt +runtime/README.txt +runtime/cmake/ +runtime/doc/ +runtime/exports/ +runtime/src/CMakeLists.txt +runtime/test/ +runtime/tools/ +www/ Modified: projects/clang900-import/contrib/openmp/LICENSE.txt ============================================================================== --- projects/clang900-import/contrib/openmp/LICENSE.txt Thu Aug 22 20:14:59 2019 (r351404) +++ projects/clang900-import/contrib/openmp/LICENSE.txt Thu Aug 22 20:26:20 2019 (r351405) @@ -1,5 +1,242 @@ ============================================================================== +The LLVM Project is under the Apache License v2.0 with LLVM Exceptions: +============================================================================== + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. + +============================================================================== +Legacy LLVM License (https://llvm.org/docs/DeveloperPolicy.html#legacy): +============================================================================== + The software contained in this directory tree is dual licensed under both the University of Illinois "BSD-Like" license and the MIT license. As a user of this code you may choose to use it under either license. As a contributor, @@ -111,56 +348,6 @@ the Work, but excluding communication that is conspicu submitted. If any entity institutes patent litigation against Intel or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Intel's Software, or the Work to which Intel has contributed constitutes - direct or contributory patent infringement, then any patent licenses granted - to that entity under this Agreement for the Software or Work shall terminate - as of the date such litigation is filed. - -Unless required by applicable law or agreed to in writing, the software is -provided on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, -either express or implied, including, without limitation, any warranties or -conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A -PARTICULAR PURPOSE. - -============================================================================== - -ARM Limited - -Software Grant License Agreement ("Agreement") - -Except for the license granted herein to you, ARM Limited ("ARM") reserves all -right, title, and interest in and to the Software (defined below). - -Definition - -"Software" means the code and documentation as well as any original work of -authorship, including any modifications or additions to an existing work, that -is intentionally submitted by ARM to llvm.org (http://llvm.org) ("LLVM") for -inclusion in, or documentation of, any of the products owned or managed by LLVM -(the "Work"). For the purposes of this definition, "submitted" means any form of -electronic, verbal, or written communication sent to LLVM or its -representatives, including but not limited to communication on electronic -mailing lists, source code control systems, and issue tracking systems that are -managed by, or on behalf of, LLVM for the purpose of discussing and improving -the Work, but excluding communication that is conspicuously marked otherwise. - -1. Grant of Copyright License. Subject to the terms and conditions of this - Agreement, ARM hereby grants to you and to recipients of the Software - distributed by LLVM a perpetual, worldwide, non-exclusive, no-charge, - royalty-free, irrevocable copyright license to reproduce, prepare derivative - works of, publicly display, publicly perform, sublicense, and distribute the - Software and such derivative works. - -2. Grant of Patent License. Subject to the terms and conditions of this - Agreement, ARM hereby grants you and to recipients of the Software - distributed by LLVM a perpetual, worldwide, non-exclusive, no-charge, - royalty-free, irrevocable (except as stated in this section) patent license - to make, have made, use, offer to sell, sell, import, and otherwise transfer - the Work, where such license applies only to those patent claims licensable - by ARM that are necessarily infringed by ARM's Software alone or by - combination of the Software with the Work to which such Software was - submitted. If any entity institutes patent litigation against ARM or any - other entity (including a cross-claim or counterclaim in a lawsuit) alleging - that ARM's Software, or the Work to which ARM has contributed constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for the Software or Work shall terminate as of the date such litigation is filed. Modified: projects/clang900-import/contrib/openmp/runtime/src/dllexports ============================================================================== --- projects/clang900-import/contrib/openmp/runtime/src/dllexports Thu Aug 22 20:14:59 2019 (r351404) +++ projects/clang900-import/contrib/openmp/runtime/src/dllexports Thu Aug 22 20:26:20 2019 (r351405) @@ -1,11 +1,10 @@ # #//===----------------------------------------------------------------------===// #// -#// The LLVM Compiler Infrastructure +#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +#// See https://llvm.org/LICENSE.txt for license information. +#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #// -#// This file is dual licensed under the MIT and the University of Illinois Open -#// Source Licenses. See LICENSE.txt for details. -#// #//===----------------------------------------------------------------------===// # @@ -159,7 +158,7 @@ # # Regular entry points - __kmp_wait_yield_4 + __kmp_wait_4 __kmp_fork_call __kmp_invoke_microtask %ifdef KMP_USE_MONITOR @@ -182,7 +181,6 @@ __kmp_printf %endif - %ifdef USE_DEBUGGER __kmp_debugging DATA __kmp_omp_debug_struct_info DATA @@ -191,14 +189,9 @@ # Symbols for MS mutual detection: _You_must_link_with_exactly_one_OpenMP_library DATA _You_must_link_with_Intel_OpenMP_library DATA - %ifdef msvc_compat - _You_must_link_with_Microsoft_OpenMP_library DATA - %endif - __kmp_wait_64 __kmp_release_64 - # VT_getthid 1 # vtgthid 2 @@ -228,8 +221,8 @@ __kmpc_end_ordered 125 __kmpc_end_serialized_parallel 126 __kmpc_end_single 127 - __kmpc_end_taskq 128 - __kmpc_end_taskq_task 129 +# __kmpc_end_taskq 128 +# __kmpc_end_taskq_task 129 __kmpc_flush 130 __kmpc_for_static_fini 135 __kmpc_for_static_init_4 136 @@ -246,10 +239,10 @@ __kmpc_push_num_threads 148 __kmpc_serialized_parallel 150 __kmpc_single 151 - __kmpc_task 152 - __kmpc_task_buffer 153 - __kmpc_taskq 154 - __kmpc_taskq_task 155 +# __kmpc_task 152 +# __kmpc_task_buffer 153 +# __kmpc_taskq 154 +# __kmpc_taskq_task 155 __kmpc_threadprivate 156 __kmpc_threadprivate_cached 157 __kmpc_threadprivate_register 158 @@ -286,16 +279,12 @@ __kmpc_reduce 189 __kmpc_end_reduce 190 -# OpenMP 3.0 - -%ifdef OMP_30 __kmpc_omp_task_alloc 191 __kmpc_omp_task 192 __kmpc_omp_taskwait 193 __kmpc_omp_task_begin_if0 196 __kmpc_omp_task_complete_if0 197 __kmpc_omp_task_parts 198 -%endif # OMP_30 # __omp_collector_api 199 @@ -327,9 +316,7 @@ kmpc_set_stacksize_s 222 # kmpc_set_stats 217 kmpc_set_defaults 224 -# OMP 3.0 entry points for unsigned loop iteration variables %ifndef stub - %ifdef OMP_30 __kmpc_for_static_init_8u 225 __kmpc_dispatch_init_8u 226 __kmpc_dispatch_next_8u 227 @@ -338,7 +325,6 @@ kmpc_set_defaults 224 __kmpc_dispatch_init_4u 230 __kmpc_dispatch_next_4u 231 __kmpc_dispatch_fini_4u 232 - %endif # OMP_30 %endif %ifndef stub @@ -346,17 +332,12 @@ kmpc_set_defaults 224 __kmpc_get_parent_taskid 234 %endif -# OpenMP 3.1 entry points %ifndef stub - %ifdef OMP_30 __kmpc_omp_taskyield 235 - %endif # OMP_30 # __kmpc_place_threads 236 %endif -# OpenMP 4.0 entry points %ifndef stub - %ifdef OMP_40 __kmpc_push_proc_bind 237 __kmpc_taskgroup 238 __kmpc_end_taskgroup 239 @@ -379,12 +360,9 @@ kmpc_set_defaults 224 __kmpc_team_static_init_4u 256 __kmpc_team_static_init_8 257 __kmpc_team_static_init_8u 258 - %endif # OMP_40 %endif -# OpenMP 4.5 entry points %ifndef stub - %ifdef OMP_45 __kmpc_proxy_task_completed 259 __kmpc_proxy_task_completed_ooo 260 __kmpc_doacross_init 261 @@ -393,20 +371,22 @@ kmpc_set_defaults 224 __kmpc_doacross_fini 264 __kmpc_taskloop 266 __kmpc_critical_with_hint 270 - %endif %endif kmpc_aligned_malloc 265 kmpc_set_disp_num_buffers 267 -# OpenMP 5.0 entry points %ifndef stub - %ifdef OMP_50 __kmpc_task_reduction_init 268 __kmpc_task_reduction_get_th_data 269 -# USED FOR 4.5 __kmpc_critical_with_hint 270 +# USED ABOVE __kmpc_critical_with_hint 270 __kmpc_get_target_offload 271 - __kmpc_omp_reg_task_with_affinity 272 - %endif + __kmpc_omp_reg_task_with_affinity 272 + __kmpc_pause_resource 273 + __kmpc_task_reduction_modifier_init 274 + __kmpc_task_reduction_modifier_fini 275 + __kmpc_task_allow_completion_event 276 + __kmpc_taskred_init 277 + __kmpc_taskred_modifier_init 278 %endif # User API entry points that have both lower- and upper- case versions for Fortran. @@ -464,7 +444,6 @@ kmp_aligned_malloc 747 kmp_set_warnings_on 779 kmp_set_warnings_off 780 -%ifdef OMP_30 omp_get_active_level 789 omp_get_level 790 omp_get_ancestor_thread_num 791 @@ -489,17 +468,9 @@ kmp_set_warnings_off 780 kmpc_unset_affinity_mask_proc 858 kmp_get_affinity_mask_proc 859 kmpc_get_affinity_mask_proc 860 -%endif # OMP_30 -# OpenMP 3.1 - -%ifdef OMP_30 omp_in_final 861 -%endif # OMP_30 -# OpenMP 40 - -%ifdef OMP_40 omp_get_proc_bind 862 #omp_set_proc_bind 863 #omp_curr_proc_bind 864 @@ -511,11 +482,7 @@ kmp_set_warnings_off 780 omp_set_default_device 879 omp_get_default_device 880 omp_get_num_devices 881 -%endif # OMP_40 -# OpenMP 45 - -%ifdef OMP_45 omp_init_lock_with_hint 870 omp_init_nest_lock_with_hint 871 omp_get_max_task_priority 872 @@ -535,17 +502,25 @@ kmp_set_warnings_off 780 omp_target_associate_ptr 888 omp_target_disassociate_ptr 889 %endif -%endif # OMP_45 kmp_set_disp_num_buffers 890 -%ifdef OMP_50 omp_control_tool 891 omp_set_default_allocator 892 omp_get_default_allocator 893 omp_alloc 894 omp_free 895 omp_get_device_num 896 + omp_init_allocator 897 + omp_destroy_allocator 898 + %ifndef stub + __kmpc_set_default_allocator + __kmpc_get_default_allocator + __kmpc_alloc + __kmpc_free + __kmpc_init_allocator + __kmpc_destroy_allocator + %endif omp_set_affinity_format 748 omp_get_affinity_format 749 omp_display_affinity 750 @@ -554,8 +529,12 @@ kmp_set_disp_num_buffers 890 ompc_get_affinity_format 753 ompc_display_affinity 754 ompc_capture_affinity 755 + omp_pause_resource 756 + omp_pause_resource_all 757 + omp_get_supported_active_levels 758 + omp_fulfill_event 759 - OMP_NULL_ALLOCATOR DATA + omp_null_allocator DATA omp_default_mem_alloc DATA omp_large_cap_mem_alloc DATA omp_const_mem_alloc DATA @@ -564,8 +543,13 @@ kmp_set_disp_num_buffers 890 omp_cgroup_mem_alloc DATA omp_pteam_mem_alloc DATA omp_thread_mem_alloc DATA -%endif # OMP_50 + omp_default_mem_space DATA + omp_large_cap_mem_space DATA + omp_const_mem_space DATA + omp_high_bw_mem_space DATA + omp_low_lat_mem_space DATA + %ifndef stub # Ordinals between 900 and 999 are reserved @@ -1014,8 +998,6 @@ kmp_set_disp_num_buffers 890 __kmpc_atomic_float10_div_cpt_fp %endif - %ifdef OMP_40 - # ATOMIC extensions for OpenMP 4.0 spec (x86 and x64 only) __kmpc_atomic_fixed1_swp 2412 @@ -1190,8 +1172,6 @@ kmp_set_disp_num_buffers 890 __kmpc_atomic_float10_sub_cpt_rev_fp __kmpc_atomic_float10_div_cpt_rev_fp %endif - %endif # OMP_40 - %endif # arch_64 Modified: projects/clang900-import/contrib/openmp/runtime/src/exports_so.txt ============================================================================== --- projects/clang900-import/contrib/openmp/runtime/src/exports_so.txt Thu Aug 22 20:14:59 2019 (r351404) +++ projects/clang900-import/contrib/openmp/runtime/src/exports_so.txt Thu Aug 22 20:26:20 2019 (r351405) @@ -3,11 +3,10 @@ # #//===----------------------------------------------------------------------===// #// -#// The LLVM Compiler Infrastructure +#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +#// See https://llvm.org/LICENSE.txt for license information. +#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #// -#// This file is dual licensed under the MIT and the University of Illinois Open -#// Source Licenses. See LICENSE.txt for details. -#// #//===----------------------------------------------------------------------===// # @@ -39,7 +38,6 @@ VERSION { _You_must_link_with_*; # Mutual detection/MS compatibility symbols. - # # Debugger support. # @@ -55,7 +53,6 @@ VERSION { ___kmp_allocate; ___kmp_free; __kmp_thread_pool; - __kmp_thread_pool_nth; __kmp_reset_stats; @@ -84,7 +81,7 @@ VERSION { __kmp_reap_worker; __kmp_release_64; __kmp_wait_64; - __kmp_wait_yield_4; + __kmp_wait_4; # ittnotify symbols to be used by debugger __kmp_itt_fini_ittlib; Modified: projects/clang900-import/contrib/openmp/runtime/src/extractExternal.cpp ============================================================================== --- projects/clang900-import/contrib/openmp/runtime/src/extractExternal.cpp Thu Aug 22 20:14:59 2019 (r351404) +++ projects/clang900-import/contrib/openmp/runtime/src/extractExternal.cpp Thu Aug 22 20:26:20 2019 (r351405) @@ -4,10 +4,9 @@ //===----------------------------------------------------------------------===// // -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.txt for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// Modified: projects/clang900-import/contrib/openmp/runtime/src/i18n/en_US.txt ============================================================================== --- projects/clang900-import/contrib/openmp/runtime/src/i18n/en_US.txt Thu Aug 22 20:14:59 2019 (r351404) +++ projects/clang900-import/contrib/openmp/runtime/src/i18n/en_US.txt Thu Aug 22 20:26:20 2019 (r351405) @@ -3,11 +3,10 @@ # #//===----------------------------------------------------------------------===// #// -#// The LLVM Compiler Infrastructure +#// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +#// See https://llvm.org/LICENSE.txt for license information. +#// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #// -#// This file is dual licensed under the MIT and the University of Illinois Open -#// Source Licenses. See LICENSE.txt for details. -#// #//===----------------------------------------------------------------------===// # @@ -426,8 +425,8 @@ AffHWSubsetManyTiles "KMP_HW_SUBSET ignored: t AffHWSubsetManyProcs "KMP_HW_SUBSET ignored: too many Procs requested." HierSchedInvalid "Hierarchy ignored: unsupported level: %1$s." AffFormatDefault "OMP: pid %1$s tid %2$s thread %3$s bound to OS proc set {%4$s}" +APIDeprecated "%1$s routine deprecated, please use %2$s instead." - # -------------------------------------------------------------------------------------------------- -*- HINTS -*- # -------------------------------------------------------------------------------------------------- @@ -490,4 +489,3 @@ SystemLimitOnThreads "System-related limit on # -------------------------------------------------------------------------------------------------- # end of file # # -------------------------------------------------------------------------------------------------- - Copied: projects/clang900-import/contrib/openmp/runtime/src/include/omp-tools.h.var (from r351404, vendor/llvm-openmp/dist/runtime/src/include/omp-tools.h.var) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/clang900-import/contrib/openmp/runtime/src/include/omp-tools.h.var Thu Aug 22 20:26:20 2019 (r351405, copy of r351404, vendor/llvm-openmp/dist/runtime/src/include/omp-tools.h.var) @@ -0,0 +1,1082 @@ +/* + * include/omp-tools.h.var + */ + +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef __OMPT__ +#define __OMPT__ + +/***************************************************************************** + * system include files + *****************************************************************************/ + +#include <stdint.h> +#include <stddef.h> + +/***************************************************************************** + * iteration macros + *****************************************************************************/ + +#define FOREACH_OMPT_INQUIRY_FN(macro) \ + macro (ompt_enumerate_states) \ + macro (ompt_enumerate_mutex_impls) \ + \ + macro (ompt_set_callback) \ + macro (ompt_get_callback) \ + \ + macro (ompt_get_state) \ + \ + macro (ompt_get_parallel_info) \ + macro (ompt_get_task_info) \ + macro (ompt_get_task_memory) \ + macro (ompt_get_thread_data) \ + macro (ompt_get_unique_id) \ + macro (ompt_finalize_tool) \ + \ + macro(ompt_get_num_procs) \ + macro(ompt_get_num_places) \ + macro(ompt_get_place_proc_ids) \ + macro(ompt_get_place_num) \ + macro(ompt_get_partition_place_nums) \ + macro(ompt_get_proc_id) \ + \ + macro(ompt_get_target_info) \ + macro(ompt_get_num_devices) + +#define FOREACH_OMPT_STATE(macro) \ + \ + /* first available state */ \ + macro (ompt_state_undefined, 0x102) /* undefined thread state */ \ + \ + /* work states (0..15) */ \ + macro (ompt_state_work_serial, 0x000) /* working outside parallel */ \ + macro (ompt_state_work_parallel, 0x001) /* working within parallel */ \ + macro (ompt_state_work_reduction, 0x002) /* performing a reduction */ \ + \ + /* barrier wait states (16..31) */ \ + macro (ompt_state_wait_barrier, 0x010) /* waiting at a barrier */ \ + macro (ompt_state_wait_barrier_implicit_parallel, 0x011) \ + /* implicit barrier at the end of parallel region */\ + macro (ompt_state_wait_barrier_implicit_workshare, 0x012) \ + /* implicit barrier at the end of worksharing */ \ + macro (ompt_state_wait_barrier_implicit, 0x013) /* implicit barrier */ \ + macro (ompt_state_wait_barrier_explicit, 0x014) /* explicit barrier */ \ + \ + /* task wait states (32..63) */ \ + macro (ompt_state_wait_taskwait, 0x020) /* waiting at a taskwait */ \ + macro (ompt_state_wait_taskgroup, 0x021) /* waiting at a taskgroup */ \ + \ + /* mutex wait states (64..127) */ \ + macro (ompt_state_wait_mutex, 0x040) \ + macro (ompt_state_wait_lock, 0x041) /* waiting for lock */ \ + macro (ompt_state_wait_critical, 0x042) /* waiting for critical */ \ + macro (ompt_state_wait_atomic, 0x043) /* waiting for atomic */ \ + macro (ompt_state_wait_ordered, 0x044) /* waiting for ordered */ \ + \ + /* target wait states (128..255) */ \ + macro (ompt_state_wait_target, 0x080) /* waiting for target region */ \ + macro (ompt_state_wait_target_map, 0x081) /* waiting for target data mapping operation */ \ + macro (ompt_state_wait_target_update, 0x082) /* waiting for target update operation */ \ + \ + /* misc (256..511) */ \ + macro (ompt_state_idle, 0x100) /* waiting for work */ \ + macro (ompt_state_overhead, 0x101) /* overhead excluding wait states */ \ + \ + /* implementation-specific states (512..) */ + + +#define FOREACH_KMP_MUTEX_IMPL(macro) \ + macro (kmp_mutex_impl_none, 0) /* unknown implementation */ \ + macro (kmp_mutex_impl_spin, 1) /* based on spin */ \ + macro (kmp_mutex_impl_queuing, 2) /* based on some fair policy */ \ + macro (kmp_mutex_impl_speculative, 3) /* based on HW-supported speculation */ + +#define FOREACH_OMPT_EVENT(macro) \ + \ + /*--- Mandatory Events ---*/ \ + macro (ompt_callback_thread_begin, ompt_callback_thread_begin_t, 1) /* thread begin */ \ + macro (ompt_callback_thread_end, ompt_callback_thread_end_t, 2) /* thread end */ \ + \ + macro (ompt_callback_parallel_begin, ompt_callback_parallel_begin_t, 3) /* parallel begin */ \ + macro (ompt_callback_parallel_end, ompt_callback_parallel_end_t, 4) /* parallel end */ \ + \ + macro (ompt_callback_task_create, ompt_callback_task_create_t, 5) /* task begin */ \ + macro (ompt_callback_task_schedule, ompt_callback_task_schedule_t, 6) /* task schedule */ \ + macro (ompt_callback_implicit_task, ompt_callback_implicit_task_t, 7) /* implicit task */ \ + \ + macro (ompt_callback_target, ompt_callback_target_t, 8) /* target */ \ + macro (ompt_callback_target_data_op, ompt_callback_target_data_op_t, 9) /* target data op */ \ + macro (ompt_callback_target_submit, ompt_callback_target_submit_t, 10) /* target submit */ \ + \ + macro (ompt_callback_control_tool, ompt_callback_control_tool_t, 11) /* control tool */ \ + \ + macro (ompt_callback_device_initialize, ompt_callback_device_initialize_t, 12) /* device initialize */ \ + macro (ompt_callback_device_finalize, ompt_callback_device_finalize_t, 13) /* device finalize */ \ + \ + macro (ompt_callback_device_load, ompt_callback_device_load_t, 14) /* device load */ \ + macro (ompt_callback_device_unload, ompt_callback_device_unload_t, 15) /* device unload */ \ + \ + /* Optional Events */ \ + macro (ompt_callback_sync_region_wait, ompt_callback_sync_region_t, 16) /* sync region wait begin or end */ \ + \ + macro (ompt_callback_mutex_released, ompt_callback_mutex_t, 17) /* mutex released */ \ + \ + macro (ompt_callback_dependences, ompt_callback_dependences_t, 18) /* report task dependences */ \ + macro (ompt_callback_task_dependence, ompt_callback_task_dependence_t, 19) /* report task dependence */ \ + \ + macro (ompt_callback_work, ompt_callback_work_t, 20) /* task at work begin or end */ \ + \ + macro (ompt_callback_master, ompt_callback_master_t, 21) /* task at master begin or end */ \ + \ + macro (ompt_callback_target_map, ompt_callback_target_map_t, 22) /* target map */ \ + \ + macro (ompt_callback_sync_region, ompt_callback_sync_region_t, 23) /* sync region begin or end */ \ + \ + macro (ompt_callback_lock_init, ompt_callback_mutex_acquire_t, 24) /* lock init */ \ + macro (ompt_callback_lock_destroy, ompt_callback_mutex_t, 25) /* lock destroy */ \ + \ + macro (ompt_callback_mutex_acquire, ompt_callback_mutex_acquire_t, 26) /* mutex acquire */ \ + macro (ompt_callback_mutex_acquired, ompt_callback_mutex_t, 27) /* mutex acquired */ \ + \ + macro (ompt_callback_nest_lock, ompt_callback_nest_lock_t, 28) /* nest lock */ \ + \ + macro (ompt_callback_flush, ompt_callback_flush_t, 29) /* after executing flush */ \ + \ + macro (ompt_callback_cancel, ompt_callback_cancel_t, 30) /* cancel innermost binding region */ \ + \ + macro (ompt_callback_reduction, ompt_callback_sync_region_t, 31) /* reduction */ \ + \ + macro (ompt_callback_dispatch, ompt_callback_dispatch_t, 32) /* dispatch of work */ + +/***************************************************************************** + * implementation specific types + *****************************************************************************/ + +typedef enum kmp_mutex_impl_t { +#define kmp_mutex_impl_macro(impl, code) impl = code, + FOREACH_KMP_MUTEX_IMPL(kmp_mutex_impl_macro) +#undef kmp_mutex_impl_macro +} kmp_mutex_impl_t; + +/***************************************************************************** + * definitions generated from spec + *****************************************************************************/ + +typedef enum ompt_callbacks_t { + ompt_callback_thread_begin = 1, + ompt_callback_thread_end = 2, + ompt_callback_parallel_begin = 3, + ompt_callback_parallel_end = 4, + ompt_callback_task_create = 5, + ompt_callback_task_schedule = 6, + ompt_callback_implicit_task = 7, + ompt_callback_target = 8, + ompt_callback_target_data_op = 9, + ompt_callback_target_submit = 10, + ompt_callback_control_tool = 11, + ompt_callback_device_initialize = 12, + ompt_callback_device_finalize = 13, + ompt_callback_device_load = 14, + ompt_callback_device_unload = 15, + ompt_callback_sync_region_wait = 16, + ompt_callback_mutex_released = 17, + ompt_callback_dependences = 18, + ompt_callback_task_dependence = 19, + ompt_callback_work = 20, + ompt_callback_master = 21, + ompt_callback_target_map = 22, + ompt_callback_sync_region = 23, + ompt_callback_lock_init = 24, + ompt_callback_lock_destroy = 25, + ompt_callback_mutex_acquire = 26, + ompt_callback_mutex_acquired = 27, + ompt_callback_nest_lock = 28, + ompt_callback_flush = 29, + ompt_callback_cancel = 30, + ompt_callback_reduction = 31, + ompt_callback_dispatch = 32 +} ompt_callbacks_t; + +typedef enum ompt_record_t { + ompt_record_ompt = 1, + ompt_record_native = 2, + ompt_record_invalid = 3 +} ompt_record_t; + +typedef enum ompt_record_native_t { + ompt_record_native_info = 1, + ompt_record_native_event = 2 +} ompt_record_native_t; + +typedef enum ompt_set_result_t { + ompt_set_error = 0, + ompt_set_never = 1, + ompt_set_impossible = 2, + ompt_set_sometimes = 3, + ompt_set_sometimes_paired = 4, + ompt_set_always = 5 +} ompt_set_result_t; + +typedef uint64_t ompt_id_t; + +typedef uint64_t ompt_device_time_t; + +typedef uint64_t ompt_buffer_cursor_t; + +typedef enum ompt_thread_t { + ompt_thread_initial = 1, + ompt_thread_worker = 2, + ompt_thread_other = 3, + ompt_thread_unknown = 4 +} ompt_thread_t; + +typedef enum ompt_scope_endpoint_t { + ompt_scope_begin = 1, + ompt_scope_end = 2 +} ompt_scope_endpoint_t; + +typedef enum ompt_dispatch_t { + ompt_dispatch_iteration = 1, + ompt_dispatch_section = 2 +} ompt_dispatch_t; + +typedef enum ompt_sync_region_t { + ompt_sync_region_barrier = 1, + ompt_sync_region_barrier_implicit = 2, + ompt_sync_region_barrier_explicit = 3, + ompt_sync_region_barrier_implementation = 4, + ompt_sync_region_taskwait = 5, + ompt_sync_region_taskgroup = 6, + ompt_sync_region_reduction = 7 +} ompt_sync_region_t; + +typedef enum ompt_target_data_op_t { + ompt_target_data_alloc = 1, + ompt_target_data_transfer_to_device = 2, + ompt_target_data_transfer_from_device = 3, + ompt_target_data_delete = 4, + ompt_target_data_associate = 5, + ompt_target_data_disassociate = 6 +} ompt_target_data_op_t; + +typedef enum ompt_work_t { + ompt_work_loop = 1, + ompt_work_sections = 2, + ompt_work_single_executor = 3, + ompt_work_single_other = 4, + ompt_work_workshare = 5, + ompt_work_distribute = 6, + ompt_work_taskloop = 7 +} ompt_work_t; + +typedef enum ompt_mutex_t { + ompt_mutex_lock = 1, + ompt_mutex_test_lock = 2, + ompt_mutex_nest_lock = 3, + ompt_mutex_test_nest_lock = 4, + ompt_mutex_critical = 5, + ompt_mutex_atomic = 6, + ompt_mutex_ordered = 7 +} ompt_mutex_t; + +typedef enum ompt_native_mon_flag_t { + ompt_native_data_motion_explicit = 0x01, + ompt_native_data_motion_implicit = 0x02, + ompt_native_kernel_invocation = 0x04, + ompt_native_kernel_execution = 0x08, + ompt_native_driver = 0x10, + ompt_native_runtime = 0x20, + ompt_native_overhead = 0x40, + ompt_native_idleness = 0x80 +} ompt_native_mon_flag_t; + +typedef enum ompt_task_flag_t { + ompt_task_initial = 0x00000001, + ompt_task_implicit = 0x00000002, *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201908222026.x7MKQL8a094619>