From owner-svn-src-vendor@freebsd.org Mon May 1 15:03:05 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id BA0E0D58F2A; Mon, 1 May 2017 15:03:05 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7014390A; Mon, 1 May 2017 15:03:05 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v41F34xc016927; Mon, 1 May 2017 15:03:04 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v41F2w6n016858; Mon, 1 May 2017 15:02:58 GMT (envelope-from des@FreeBSD.org) Message-Id: <201705011502.v41F2w6n016858@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Mon, 1 May 2017 15:02:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317649 - in vendor/openpam/dist: . bin bin/openpam_dump_policy bin/pamtest bin/su doc doc/man include include/security lib lib/libpam misc modules modules/pam_deny modules/pam_permit m... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 May 2017 15:03:05 -0000 Author: des Date: Mon May 1 15:02:58 2017 New Revision: 317649 URL: https://svnweb.freebsd.org/changeset/base/317649 Log: Vendor import of OpenPAM Resedacea. Modified: vendor/openpam/dist/HISTORY vendor/openpam/dist/Makefile.am vendor/openpam/dist/Makefile.in vendor/openpam/dist/RELNOTES vendor/openpam/dist/autogen.sh vendor/openpam/dist/bin/Makefile.am vendor/openpam/dist/bin/Makefile.in vendor/openpam/dist/bin/openpam_dump_policy/Makefile.am vendor/openpam/dist/bin/openpam_dump_policy/Makefile.in vendor/openpam/dist/bin/openpam_dump_policy/openpam_dump_policy.c vendor/openpam/dist/bin/pamtest/Makefile.am vendor/openpam/dist/bin/pamtest/Makefile.in vendor/openpam/dist/bin/pamtest/pamtest.1 vendor/openpam/dist/bin/pamtest/pamtest.c vendor/openpam/dist/bin/su/Makefile.am vendor/openpam/dist/bin/su/Makefile.in vendor/openpam/dist/bin/su/su.1 vendor/openpam/dist/bin/su/su.c vendor/openpam/dist/configure vendor/openpam/dist/configure.ac vendor/openpam/dist/doc/Makefile.am vendor/openpam/dist/doc/Makefile.in vendor/openpam/dist/doc/man/Makefile.am vendor/openpam/dist/doc/man/Makefile.in vendor/openpam/dist/doc/man/openpam.3 vendor/openpam/dist/doc/man/openpam.man vendor/openpam/dist/doc/man/openpam_borrow_cred.3 vendor/openpam/dist/doc/man/openpam_free_data.3 vendor/openpam/dist/doc/man/openpam_free_envlist.3 vendor/openpam/dist/doc/man/openpam_get_feature.3 vendor/openpam/dist/doc/man/openpam_get_option.3 vendor/openpam/dist/doc/man/openpam_log.3 vendor/openpam/dist/doc/man/openpam_nullconv.3 vendor/openpam/dist/doc/man/openpam_readline.3 vendor/openpam/dist/doc/man/openpam_readlinev.3 vendor/openpam/dist/doc/man/openpam_readword.3 vendor/openpam/dist/doc/man/openpam_restore_cred.3 vendor/openpam/dist/doc/man/openpam_set_feature.3 vendor/openpam/dist/doc/man/openpam_set_option.3 vendor/openpam/dist/doc/man/openpam_straddch.3 vendor/openpam/dist/doc/man/openpam_subst.3 vendor/openpam/dist/doc/man/openpam_ttyconv.3 vendor/openpam/dist/doc/man/pam.3 vendor/openpam/dist/doc/man/pam.conf.5 vendor/openpam/dist/doc/man/pam.man vendor/openpam/dist/doc/man/pam_acct_mgmt.3 vendor/openpam/dist/doc/man/pam_authenticate.3 vendor/openpam/dist/doc/man/pam_chauthtok.3 vendor/openpam/dist/doc/man/pam_close_session.3 vendor/openpam/dist/doc/man/pam_conv.3 vendor/openpam/dist/doc/man/pam_end.3 vendor/openpam/dist/doc/man/pam_error.3 vendor/openpam/dist/doc/man/pam_get_authtok.3 vendor/openpam/dist/doc/man/pam_get_data.3 vendor/openpam/dist/doc/man/pam_get_item.3 vendor/openpam/dist/doc/man/pam_get_user.3 vendor/openpam/dist/doc/man/pam_getenv.3 vendor/openpam/dist/doc/man/pam_getenvlist.3 vendor/openpam/dist/doc/man/pam_info.3 vendor/openpam/dist/doc/man/pam_open_session.3 vendor/openpam/dist/doc/man/pam_prompt.3 vendor/openpam/dist/doc/man/pam_putenv.3 vendor/openpam/dist/doc/man/pam_set_data.3 vendor/openpam/dist/doc/man/pam_set_item.3 vendor/openpam/dist/doc/man/pam_setcred.3 vendor/openpam/dist/doc/man/pam_setenv.3 vendor/openpam/dist/doc/man/pam_sm_acct_mgmt.3 vendor/openpam/dist/doc/man/pam_sm_authenticate.3 vendor/openpam/dist/doc/man/pam_sm_chauthtok.3 vendor/openpam/dist/doc/man/pam_sm_close_session.3 vendor/openpam/dist/doc/man/pam_sm_open_session.3 vendor/openpam/dist/doc/man/pam_sm_setcred.3 vendor/openpam/dist/doc/man/pam_start.3 vendor/openpam/dist/doc/man/pam_strerror.3 vendor/openpam/dist/doc/man/pam_verror.3 vendor/openpam/dist/doc/man/pam_vinfo.3 vendor/openpam/dist/doc/man/pam_vprompt.3 vendor/openpam/dist/include/Makefile.am vendor/openpam/dist/include/Makefile.in vendor/openpam/dist/include/security/Makefile.am vendor/openpam/dist/include/security/Makefile.in vendor/openpam/dist/include/security/openpam.h vendor/openpam/dist/include/security/openpam_attr.h vendor/openpam/dist/include/security/openpam_version.h vendor/openpam/dist/include/security/pam_appl.h vendor/openpam/dist/include/security/pam_constants.h vendor/openpam/dist/include/security/pam_modules.h vendor/openpam/dist/include/security/pam_types.h vendor/openpam/dist/lib/Makefile.am vendor/openpam/dist/lib/Makefile.in vendor/openpam/dist/lib/libpam/Makefile.am vendor/openpam/dist/lib/libpam/Makefile.in vendor/openpam/dist/lib/libpam/openpam_asprintf.c vendor/openpam/dist/lib/libpam/openpam_asprintf.h vendor/openpam/dist/lib/libpam/openpam_borrow_cred.c vendor/openpam/dist/lib/libpam/openpam_check_owner_perms.c vendor/openpam/dist/lib/libpam/openpam_configure.c vendor/openpam/dist/lib/libpam/openpam_constants.c vendor/openpam/dist/lib/libpam/openpam_constants.h vendor/openpam/dist/lib/libpam/openpam_cred.h vendor/openpam/dist/lib/libpam/openpam_ctype.h vendor/openpam/dist/lib/libpam/openpam_debug.h vendor/openpam/dist/lib/libpam/openpam_dispatch.c vendor/openpam/dist/lib/libpam/openpam_dlfunc.h vendor/openpam/dist/lib/libpam/openpam_dynamic.c vendor/openpam/dist/lib/libpam/openpam_features.c vendor/openpam/dist/lib/libpam/openpam_features.h vendor/openpam/dist/lib/libpam/openpam_findenv.c vendor/openpam/dist/lib/libpam/openpam_free_data.c vendor/openpam/dist/lib/libpam/openpam_free_envlist.c vendor/openpam/dist/lib/libpam/openpam_get_feature.c vendor/openpam/dist/lib/libpam/openpam_get_option.c vendor/openpam/dist/lib/libpam/openpam_impl.h vendor/openpam/dist/lib/libpam/openpam_load.c vendor/openpam/dist/lib/libpam/openpam_log.c vendor/openpam/dist/lib/libpam/openpam_nullconv.c vendor/openpam/dist/lib/libpam/openpam_readline.c vendor/openpam/dist/lib/libpam/openpam_readlinev.c vendor/openpam/dist/lib/libpam/openpam_readword.c vendor/openpam/dist/lib/libpam/openpam_restore_cred.c vendor/openpam/dist/lib/libpam/openpam_set_feature.c vendor/openpam/dist/lib/libpam/openpam_set_option.c vendor/openpam/dist/lib/libpam/openpam_static.c vendor/openpam/dist/lib/libpam/openpam_straddch.c vendor/openpam/dist/lib/libpam/openpam_strlcat.c vendor/openpam/dist/lib/libpam/openpam_strlcat.h vendor/openpam/dist/lib/libpam/openpam_strlcmp.h vendor/openpam/dist/lib/libpam/openpam_strlcpy.c vendor/openpam/dist/lib/libpam/openpam_strlcpy.h vendor/openpam/dist/lib/libpam/openpam_strlset.c vendor/openpam/dist/lib/libpam/openpam_strlset.h vendor/openpam/dist/lib/libpam/openpam_subst.c vendor/openpam/dist/lib/libpam/openpam_ttyconv.c vendor/openpam/dist/lib/libpam/openpam_vasprintf.c vendor/openpam/dist/lib/libpam/openpam_vasprintf.h vendor/openpam/dist/lib/libpam/pam_acct_mgmt.c vendor/openpam/dist/lib/libpam/pam_authenticate.c vendor/openpam/dist/lib/libpam/pam_authenticate_secondary.c vendor/openpam/dist/lib/libpam/pam_chauthtok.c vendor/openpam/dist/lib/libpam/pam_close_session.c vendor/openpam/dist/lib/libpam/pam_end.c vendor/openpam/dist/lib/libpam/pam_error.c vendor/openpam/dist/lib/libpam/pam_get_authtok.c vendor/openpam/dist/lib/libpam/pam_get_data.c vendor/openpam/dist/lib/libpam/pam_get_item.c vendor/openpam/dist/lib/libpam/pam_get_mapped_authtok.c vendor/openpam/dist/lib/libpam/pam_get_mapped_username.c vendor/openpam/dist/lib/libpam/pam_get_user.c vendor/openpam/dist/lib/libpam/pam_getenv.c vendor/openpam/dist/lib/libpam/pam_getenvlist.c vendor/openpam/dist/lib/libpam/pam_info.c vendor/openpam/dist/lib/libpam/pam_open_session.c vendor/openpam/dist/lib/libpam/pam_prompt.c vendor/openpam/dist/lib/libpam/pam_putenv.c vendor/openpam/dist/lib/libpam/pam_set_data.c vendor/openpam/dist/lib/libpam/pam_set_item.c vendor/openpam/dist/lib/libpam/pam_set_mapped_authtok.c vendor/openpam/dist/lib/libpam/pam_set_mapped_username.c vendor/openpam/dist/lib/libpam/pam_setcred.c vendor/openpam/dist/lib/libpam/pam_setenv.c vendor/openpam/dist/lib/libpam/pam_sm_acct_mgmt.c vendor/openpam/dist/lib/libpam/pam_sm_authenticate.c vendor/openpam/dist/lib/libpam/pam_sm_authenticate_secondary.c vendor/openpam/dist/lib/libpam/pam_sm_chauthtok.c vendor/openpam/dist/lib/libpam/pam_sm_close_session.c vendor/openpam/dist/lib/libpam/pam_sm_get_mapped_authtok.c vendor/openpam/dist/lib/libpam/pam_sm_get_mapped_username.c vendor/openpam/dist/lib/libpam/pam_sm_open_session.c vendor/openpam/dist/lib/libpam/pam_sm_set_mapped_authtok.c vendor/openpam/dist/lib/libpam/pam_sm_set_mapped_username.c vendor/openpam/dist/lib/libpam/pam_sm_setcred.c vendor/openpam/dist/lib/libpam/pam_start.c vendor/openpam/dist/lib/libpam/pam_strerror.c vendor/openpam/dist/lib/libpam/pam_verror.c vendor/openpam/dist/lib/libpam/pam_vinfo.c vendor/openpam/dist/lib/libpam/pam_vprompt.c vendor/openpam/dist/misc/gendoc.pl vendor/openpam/dist/mkpkgng.in vendor/openpam/dist/modules/Makefile.am vendor/openpam/dist/modules/Makefile.in vendor/openpam/dist/modules/pam_deny/Makefile.am vendor/openpam/dist/modules/pam_deny/Makefile.in vendor/openpam/dist/modules/pam_deny/pam_deny.c vendor/openpam/dist/modules/pam_permit/Makefile.am vendor/openpam/dist/modules/pam_permit/Makefile.in vendor/openpam/dist/modules/pam_permit/pam_permit.c vendor/openpam/dist/modules/pam_return/Makefile.am vendor/openpam/dist/modules/pam_return/Makefile.in vendor/openpam/dist/modules/pam_return/pam_return.c vendor/openpam/dist/modules/pam_unix/Makefile.am vendor/openpam/dist/modules/pam_unix/Makefile.in vendor/openpam/dist/modules/pam_unix/pam_unix.c vendor/openpam/dist/t/Makefile.am vendor/openpam/dist/t/Makefile.in vendor/openpam/dist/t/t_openpam_ctype.c vendor/openpam/dist/t/t_openpam_dispatch.c vendor/openpam/dist/t/t_openpam_readlinev.c vendor/openpam/dist/t/t_openpam_readword.c vendor/openpam/dist/t/t_pam_conv.c vendor/openpam/dist/t/t_pam_conv.h Modified: vendor/openpam/dist/HISTORY ============================================================================== --- vendor/openpam/dist/HISTORY Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/HISTORY Mon May 1 15:02:58 2017 (r317649) @@ -1,3 +1,23 @@ +OpenPAM Resedacea 2017-04-30 + + - BUGFIX: Reinstore the NULL check in pam_end(3) which was removed in + OpenPAM Radula, as it breaks common error-handling constructs. + + - BUGFIX: Return PAM_SYMBOL_ERR instead of PAM_SYSTEM_ERR from the + dispatcher when the required service function could not be found. + + - ENHANCE: Introduce the PAM_BAD_HANDLE error code for when pamh is + NULL in API functions that have a NULL check. + + - ENHANCE: Introduce the PAM_BAD_ITEM, PAM_BAD_FEATURE and + PAM_BAD_CONSTANT error codes for situations where we previously + incorrectly used PAM_SYMBOL_ERR to denote that an invalid constant + had been passed to an API function. + + - ENHANCE: Improve the RETURN VALUES section in API man pages, + especially for functions that cannot fail, which were incorrectly + documented as returning -1 on failure. +============================================================================ OpenPAM Radula 2017-02-19 - BUGFIX: Fix an inverted test which prevented pam_get_authtok(3) and Modified: vendor/openpam/dist/Makefile.am ============================================================================== --- vendor/openpam/dist/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 917 2017-02-18 14:45:27Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ ACLOCAL_AMFLAGS = -I m4 Modified: vendor/openpam/dist/Makefile.in ============================================================================== --- vendor/openpam/dist/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 917 2017-02-18 14:45:27Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ @@ -165,7 +165,7 @@ CSCOPE = cscope DIST_SUBDIRS = misc include lib bin modules doc t am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/mkpkgng.in INSTALL README TODO compile config.guess \ - config.sub depcomp install-sh ltmain.sh missing + config.sub install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) Modified: vendor/openpam/dist/RELNOTES ============================================================================== --- vendor/openpam/dist/RELNOTES Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/RELNOTES Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ - Release notes for OpenPAM Radula - ================================ + Release notes for OpenPAM Resedacea + =================================== OpenPAM is developed primarily on FreeBSD, but is expected to work on almost any POSIX-like platform that has GNU autotools, GNU make and Modified: vendor/openpam/dist/autogen.sh ============================================================================== --- vendor/openpam/dist/autogen.sh Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/autogen.sh Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ #!/bin/sh # -# $Id: autogen.sh 814 2014-09-12 07:46:46Z des $ +# $OpenPAM: autogen.sh 938 2017-04-30 21:34:42Z des $ # libtoolize --copy --force Modified: vendor/openpam/dist/bin/Makefile.am ============================================================================== --- vendor/openpam/dist/bin/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 907 2017-01-18 09:39:01Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ SUBDIRS = openpam_dump_policy Modified: vendor/openpam/dist/bin/Makefile.in ============================================================================== --- vendor/openpam/dist/bin/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 907 2017-01-18 09:39:01Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ Modified: vendor/openpam/dist/bin/openpam_dump_policy/Makefile.am ============================================================================== --- vendor/openpam/dist/bin/openpam_dump_policy/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/openpam_dump_policy/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_srcdir)/lib/libpam Modified: vendor/openpam/dist/bin/openpam_dump_policy/Makefile.in ============================================================================== --- vendor/openpam/dist/bin/openpam_dump_policy/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/openpam_dump_policy/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ Modified: vendor/openpam/dist/bin/openpam_dump_policy/openpam_dump_policy.c ============================================================================== --- vendor/openpam/dist/bin/openpam_dump_policy/openpam_dump_policy.c Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/openpam_dump_policy/openpam_dump_policy.c Mon May 1 15:02:58 2017 (r317649) @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: openpam_dump_policy.c 890 2016-01-11 16:22:09Z des $ + * $OpenPAM: openpam_dump_policy.c 938 2017-04-30 21:34:42Z des $ */ #ifdef HAVE_CONFIG_H Modified: vendor/openpam/dist/bin/pamtest/Makefile.am ============================================================================== --- vendor/openpam/dist/bin/pamtest/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/pamtest/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ AM_CPPFLAGS = -I$(top_srcdir)/include Modified: vendor/openpam/dist/bin/pamtest/Makefile.in ============================================================================== --- vendor/openpam/dist/bin/pamtest/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/pamtest/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ Modified: vendor/openpam/dist/bin/pamtest/pamtest.1 ============================================================================== --- vendor/openpam/dist/bin/pamtest/pamtest.1 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/pamtest/pamtest.1 Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2011 Dag-Erling Smørgrav +.\" Copyright (c) 2011-2017 Dag-Erling Smørgrav .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -26,9 +26,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pamtest.1 924 2017-02-19 20:52:28Z des $ +.\" $OpenPAM: pamtest.1 939 2017-04-30 21:36:50Z des $ .\" -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt PAMTEST 1 .Os .Sh NAME Modified: vendor/openpam/dist/bin/pamtest/pamtest.c ============================================================================== --- vendor/openpam/dist/bin/pamtest/pamtest.c Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/pamtest/pamtest.c Mon May 1 15:02:58 2017 (r317649) @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: pamtest.c 685 2013-07-11 16:33:34Z des $ + * $OpenPAM: pamtest.c 938 2017-04-30 21:34:42Z des $ */ #ifdef HAVE_CONFIG_H Modified: vendor/openpam/dist/bin/su/Makefile.am ============================================================================== --- vendor/openpam/dist/bin/su/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/su/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ AM_CPPFLAGS = -I$(top_srcdir)/include Modified: vendor/openpam/dist/bin/su/Makefile.in ============================================================================== --- vendor/openpam/dist/bin/su/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/su/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 834 2014-10-28 10:25:58Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ Modified: vendor/openpam/dist/bin/su/su.1 ============================================================================== --- vendor/openpam/dist/bin/su/su.1 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/su/su.1 Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2011 Dag-Erling Smørgrav +.\" Copyright (c) 2011-2017 Dag-Erling Smørgrav .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -26,9 +26,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: su.1 924 2017-02-19 20:52:28Z des $ +.\" $OpenPAM: su.1 939 2017-04-30 21:36:50Z des $ .\" -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt SU 1 .Os .Sh NAME Modified: vendor/openpam/dist/bin/su/su.c ============================================================================== --- vendor/openpam/dist/bin/su/su.c Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/bin/su/su.c Mon May 1 15:02:58 2017 (r317649) @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: su.c 648 2013-03-05 17:54:27Z des $ + * $OpenPAM: su.c 938 2017-04-30 21:34:42Z des $ */ #ifdef HAVE_CONFIG_H Modified: vendor/openpam/dist/configure ============================================================================== --- vendor/openpam/dist/configure Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/configure Mon May 1 15:02:58 2017 (r317649) @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac Id: configure.ac 924 2017-02-19 20:52:28Z des . +# From configure.ac OpenPAM: configure.ac 939 2017-04-30 21:36:50Z des . # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for OpenPAM 20170219. +# Generated by GNU Autoconf 2.69 for OpenPAM 20170430. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='OpenPAM' PACKAGE_TARNAME='openpam' -PACKAGE_VERSION='20170219' -PACKAGE_STRING='OpenPAM 20170219' +PACKAGE_VERSION='20170430' +PACKAGE_STRING='OpenPAM 20170430' PACKAGE_BUGREPORT='des@des.no' PACKAGE_URL='http://www.openpam.org/' @@ -1345,7 +1345,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures OpenPAM 20170219 to adapt to many kinds of systems. +\`configure' configures OpenPAM 20170430 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1415,7 +1415,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of OpenPAM 20170219:";; + short | recursive ) echo "Configuration of OpenPAM 20170430:";; esac cat <<\_ACEOF @@ -1540,7 +1540,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -OpenPAM configure 20170219 +OpenPAM configure 20170430 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1909,7 +1909,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by OpenPAM $as_me 20170219, which was +It was created by OpenPAM $as_me 20170430, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2774,7 +2774,7 @@ fi # Define the identity of the package. PACKAGE='openpam' - VERSION='20170219' + VERSION='20170430' cat >>confdefs.h <<_ACEOF @@ -13577,7 +13577,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by OpenPAM $as_me 20170219, which was +This file was extended by OpenPAM $as_me 20170430, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -13644,7 +13644,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -OpenPAM config.status 20170219 +OpenPAM config.status 20170430 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Modified: vendor/openpam/dist/configure.ac ============================================================================== --- vendor/openpam/dist/configure.ac Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/configure.ac Mon May 1 15:02:58 2017 (r317649) @@ -1,8 +1,8 @@ -dnl $Id: configure.ac 924 2017-02-19 20:52:28Z des $ +dnl $OpenPAM: configure.ac 939 2017-04-30 21:36:50Z des $ AC_PREREQ([2.62]) -AC_REVISION([$Id: configure.ac 924 2017-02-19 20:52:28Z des $]) -AC_INIT([OpenPAM], [20170219], [des@des.no], [openpam], [http://www.openpam.org/]) +AC_REVISION([$OpenPAM: configure.ac 939 2017-04-30 21:36:50Z des $]) +AC_INIT([OpenPAM], [20170430], [des@des.no], [openpam], [http://www.openpam.org/]) AC_CONFIG_SRCDIR([lib/libpam/pam_start.c]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([foreign]) Modified: vendor/openpam/dist/doc/Makefile.am ============================================================================== --- vendor/openpam/dist/doc/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,3 +1,3 @@ -# $Id: Makefile.am 648 2013-03-05 17:54:27Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ SUBDIRS = man Modified: vendor/openpam/dist/doc/Makefile.in ============================================================================== --- vendor/openpam/dist/doc/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 648 2013-03-05 17:54:27Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ Modified: vendor/openpam/dist/doc/man/Makefile.am ============================================================================== --- vendor/openpam/dist/doc/man/Makefile.am Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/Makefile.am Mon May 1 15:02:58 2017 (r317649) @@ -1,4 +1,4 @@ -# $Id: Makefile.am 907 2017-01-18 09:39:01Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ NULL = Modified: vendor/openpam/dist/doc/man/Makefile.in ============================================================================== --- vendor/openpam/dist/doc/man/Makefile.in Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/Makefile.in Mon May 1 15:02:58 2017 (r317649) @@ -14,7 +14,7 @@ @SET_MAKE@ -# $Id: Makefile.am 907 2017-01-18 09:39:01Z des $ +# $OpenPAM: Makefile.am 938 2017-04-30 21:34:42Z des $ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ Modified: vendor/openpam/dist/doc/man/openpam.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\" Generated by gendoc.pl -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt OPENPAM 3 .Os .Sh NAME @@ -81,7 +81,7 @@ .Ft "int" .Fn pam_vprompt "const pam_handle_t *pamh" "int style" "char **resp" "const char *fmt" "va_list ap" .\" -.\" $Id: openpam.man 648 2013-03-05 17:54:27Z des $ +.\" $OpenPAM: openpam.man 938 2017-04-30 21:34:42Z des $ .\" .Sh DESCRIPTION These functions are OpenPAM extensions to the PAM API. Modified: vendor/openpam/dist/doc/man/openpam.man ============================================================================== --- vendor/openpam/dist/doc/man/openpam.man Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam.man Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\" -.\" $Id: openpam.man 648 2013-03-05 17:54:27Z des $ +.\" $OpenPAM: openpam.man 938 2017-04-30 21:34:42Z des $ .\" .Sh DESCRIPTION These functions are OpenPAM extensions to the PAM API. Modified: vendor/openpam/dist/doc/man/openpam_borrow_cred.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_borrow_cred.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_borrow_cred.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_borrow_cred.c by gendoc.pl -.\" $Id: openpam_borrow_cred.c 649 2013-03-05 17:58:33Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_borrow_cred.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_BORROW_CRED 3 .Os .Sh NAME @@ -29,6 +29,8 @@ The .Fn openpam_borrow_cred function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_PERM_DENIED Modified: vendor/openpam/dist/doc/man/openpam_free_data.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_free_data.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_free_data.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_free_data.c by gendoc.pl -.\" $Id: openpam_free_data.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_free_data.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_FREE_DATA 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_free_envlist.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_free_envlist.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_free_envlist.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_free_envlist.c by gendoc.pl -.\" $Id: openpam_free_envlist.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_free_envlist.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_FREE_ENVLIST 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_get_feature.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_get_feature.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_get_feature.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_get_feature.c by gendoc.pl -.\" $Id: openpam_get_feature.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_get_feature.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_GET_FEATURE 3 .Os .Sh NAME @@ -50,8 +50,10 @@ The .Fn openpam_get_feature function returns one of the following values: .Bl -tag -width 18n -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_FEATURE +Unrecognized or restricted feature. .El .Sh SEE ALSO .Xr openpam_set_feature 3 , Modified: vendor/openpam/dist/doc/man/openpam_get_option.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_get_option.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_get_option.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_get_option.c by gendoc.pl -.\" $Id: openpam_get_option.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_get_option.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_GET_OPTION 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_log.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_log.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_log.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_log.c by gendoc.pl -.\" $Id: openpam_log.c 686 2013-07-11 16:36:02Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_log.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_LOG 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_nullconv.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_nullconv.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_nullconv.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_nullconv.c by gendoc.pl -.\" $Id: openpam_nullconv.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_nullconv.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_NULLCONV 3 .Os .Sh NAME @@ -38,6 +38,8 @@ The .Fn openpam_nullconv function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_CONV_ERR Conversation failure. .El Modified: vendor/openpam/dist/doc/man/openpam_readline.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_readline.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_readline.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_readline.c by gendoc.pl -.\" $Id: openpam_readline.c 703 2013-08-16 11:57:54Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_readline.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_READLINE 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_readlinev.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_readlinev.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_readlinev.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_readlinev.c by gendoc.pl -.\" $Id: openpam_readlinev.c 890 2016-01-11 16:22:09Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_readlinev.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_READLINEV 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_readword.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_readword.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_readword.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_readword.c by gendoc.pl -.\" $Id: openpam_readword.c 916 2017-02-07 12:25:58Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_readword.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_READWORD 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_restore_cred.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_restore_cred.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_restore_cred.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_restore_cred.c by gendoc.pl -.\" $Id: openpam_restore_cred.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_restore_cred.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_RESTORE_CRED 3 .Os .Sh NAME @@ -23,6 +23,8 @@ The .Fn openpam_restore_cred function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_NO_MODULE_DATA Module data not found. .It Bq Er PAM_SYSTEM_ERR Modified: vendor/openpam/dist/doc/man/openpam_set_feature.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_set_feature.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_set_feature.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_set_feature.c by gendoc.pl -.\" $Id: openpam_set_feature.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_set_feature.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_SET_FEATURE 3 .Os .Sh NAME @@ -32,8 +32,10 @@ The .Fn openpam_set_feature function returns one of the following values: .Bl -tag -width 18n -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_FEATURE +Unrecognized or restricted feature. .El .Sh SEE ALSO .Xr openpam_get_feature 3 , Modified: vendor/openpam/dist/doc/man/openpam_set_option.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_set_option.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_set_option.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_set_option.c by gendoc.pl -.\" $Id: openpam_set_option.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_set_option.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_SET_OPTION 3 .Os .Sh NAME @@ -23,6 +23,8 @@ The .Fn openpam_set_option function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_SYSTEM_ERR Modified: vendor/openpam/dist/doc/man/openpam_straddch.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_straddch.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_straddch.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_straddch.c by gendoc.pl -.\" $Id: openpam_straddch.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_straddch.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_STRADDCH 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/openpam_subst.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_subst.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_subst.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_subst.c by gendoc.pl -.\" $Id: openpam_subst.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_subst.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_SUBST 3 .Os .Sh NAME @@ -81,6 +81,10 @@ The .Fn openpam_subst function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_ITEM +Unrecognized or restricted item. .It Bq Er PAM_TRY_AGAIN Try again. .El Modified: vendor/openpam/dist/doc/man/openpam_ttyconv.3 ============================================================================== --- vendor/openpam/dist/doc/man/openpam_ttyconv.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/openpam_ttyconv.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from openpam_ttyconv.c by gendoc.pl -.\" $Id: openpam_ttyconv.c 890 2016-01-11 16:22:09Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: openpam_ttyconv.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt OPENPAM_TTYCONV 3 .Os .Sh NAME @@ -32,6 +32,8 @@ The .Fn openpam_ttyconv function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR Modified: vendor/openpam/dist/doc/man/pam.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\" Generated by gendoc.pl -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt PAM 3 .Os .Sh NAME @@ -60,7 +60,7 @@ .Ft "const char *" .Fn pam_strerror "const pam_handle_t *pamh" "int error_number" .\" -.\" $Id: pam.man 648 2013-03-05 17:54:27Z des $ +.\" $OpenPAM: pam.man 938 2017-04-30 21:34:42Z des $ .\" .Sh DESCRIPTION The Pluggable Authentication Modules (PAM) library abstracts a number @@ -180,6 +180,14 @@ Authentication token lock busy. Failed to recover old authentication token. .It Bq Er PAM_AUTH_ERR Authentication error. +.It Bq Er PAM_BAD_CONSTANT +Bad constant. +.It Bq Er PAM_BAD_FEATURE +Unrecognized or restricted feature. +.It Bq Er PAM_BAD_HANDLE +Invalid PAM handle. +.It Bq Er PAM_BAD_ITEM +Unrecognized or restricted item. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR Modified: vendor/openpam/dist/doc/man/pam.conf.5 ============================================================================== --- vendor/openpam/dist/doc/man/pam.conf.5 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam.conf.5 Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\"- -.\" Copyright (c) 2005-2011 Dag-Erling Smørgrav +.\" Copyright (c) 2005-2017 Dag-Erling Smørgrav .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without @@ -26,9 +26,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pam.conf.5 924 2017-02-19 20:52:28Z des $ +.\" $OpenPAM: pam.conf.5 939 2017-04-30 21:36:50Z des $ .\" -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt PAM.CONF 5 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/pam.man ============================================================================== --- vendor/openpam/dist/doc/man/pam.man Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam.man Mon May 1 15:02:58 2017 (r317649) @@ -1,5 +1,5 @@ .\" -.\" $Id: pam.man 648 2013-03-05 17:54:27Z des $ +.\" $OpenPAM: pam.man 938 2017-04-30 21:34:42Z des $ .\" .Sh DESCRIPTION The Pluggable Authentication Modules (PAM) library abstracts a number Modified: vendor/openpam/dist/doc/man/pam_acct_mgmt.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_acct_mgmt.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_acct_mgmt.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_acct_mgmt.c by gendoc.pl -.\" $Id: pam_acct_mgmt.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_acct_mgmt.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_ACCT_MGMT 3 .Os .Sh NAME @@ -37,6 +37,8 @@ The .Fn pam_acct_mgmt function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_ABORT General failure. .It Bq Er PAM_ACCT_EXPIRED Modified: vendor/openpam/dist/doc/man/pam_authenticate.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_authenticate.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_authenticate.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_authenticate.c by gendoc.pl -.\" $Id: pam_authenticate.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_authenticate.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_AUTHENTICATE 3 .Os .Sh NAME @@ -41,18 +41,22 @@ Fail if the user's authentication token If any other bits are set, .Fn pam_authenticate will return -.Dv PAM_SYMBOL_ERR . +.Dv PAM_BAD_CONSTANT . .Sh RETURN VALUES The .Fn pam_authenticate function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_ABORT General failure. .It Bq Er PAM_AUTHINFO_UNAVAIL Authentication information is unavailable. .It Bq Er PAM_AUTH_ERR Authentication error. +.It Bq Er PAM_BAD_CONSTANT +Bad constant. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR @@ -65,8 +69,6 @@ Maximum number of tries exceeded. Permission denied. .It Bq Er PAM_SERVICE_ERR Error in service module. -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. .It Bq Er PAM_SYSTEM_ERR System error. .It Bq Er PAM_USER_UNKNOWN Modified: vendor/openpam/dist/doc/man/pam_chauthtok.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_chauthtok.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_chauthtok.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_chauthtok.c by gendoc.pl -.\" $Id: pam_chauthtok.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_chauthtok.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_CHAUTHTOK 3 .Os .Sh NAME @@ -33,12 +33,14 @@ Change only those authentication tokens If any other bits are set, .Fn pam_chauthtok will return -.Dv PAM_SYMBOL_ERR . +.Dv PAM_BAD_CONSTANT . .Sh RETURN VALUES The .Fn pam_chauthtok function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_ABORT General failure. .It Bq Er PAM_AUTHTOK_DISABLE_AGING @@ -49,6 +51,8 @@ Authentication token failure. Authentication token lock busy. .It Bq Er PAM_AUTHTOK_RECOVERY_ERR Failed to recover old authentication token. +.It Bq Er PAM_BAD_CONSTANT +Bad constant. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR @@ -57,8 +61,6 @@ Conversation failure. Permission denied. .It Bq Er PAM_SERVICE_ERR Error in service module. -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. .It Bq Er PAM_SYSTEM_ERR System error. .It Bq Er PAM_TRY_AGAIN Modified: vendor/openpam/dist/doc/man/pam_close_session.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_close_session.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_close_session.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_close_session.c by gendoc.pl -.\" $Id: pam_close_session.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_close_session.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_CLOSE_SESSION 3 .Os .Sh NAME @@ -30,14 +30,18 @@ Do not emit any messages. If any other bits are set, .Fn pam_close_session will return -.Dv PAM_SYMBOL_ERR . +.Dv PAM_BAD_CONSTANT . .Sh RETURN VALUES The .Fn pam_close_session function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_ABORT General failure. +.It Bq Er PAM_BAD_CONSTANT +Bad constant. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR @@ -48,8 +52,6 @@ Permission denied. Error in service module. .It Bq Er PAM_SESSION_ERR Session failure. -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. .It Bq Er PAM_SYSTEM_ERR System error. .El Modified: vendor/openpam/dist/doc/man/pam_conv.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_conv.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_conv.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\"- .\" Copyright (c) 2002-2003 Networks Associates Technology, Inc. -.\" Copyright (c) 2004-2014 Dag-Erling Smørgrav +.\" Copyright (c) 2004-2017 Dag-Erling Smørgrav .\" All rights reserved. .\" .\" This software was developed for the FreeBSD Project by ThinkSec AS and @@ -32,9 +32,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $Id: pam_conv.3 924 2017-02-19 20:52:28Z des $ +.\" $OpenPAM: pam_conv.3 939 2017-04-30 21:36:50Z des $ .\" -.Dd February 19, 2017 +.Dd April 30, 2017 .Dt PAM_CONV 3 .Os .Sh NAME Modified: vendor/openpam/dist/doc/man/pam_end.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_end.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_end.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_end.c by gendoc.pl -.\" $Id: pam_end.c 913 2017-01-21 15:11:12Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_end.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_END 3 .Os .Sh NAME @@ -25,7 +25,13 @@ last API call before the call to .Sh RETURN VALUES The .Fn pam_end -function returns 0 on success and -1 on failure. +function returns one of the following values: +.Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_HANDLE +Invalid PAM handle. +.El .Sh SEE ALSO .Xr pam 3 , .Xr pam_strerror 3 Modified: vendor/openpam/dist/doc/man/pam_error.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_error.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_error.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_error.c by gendoc.pl -.\" $Id: pam_error.c 648 2013-03-05 17:54:27Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_error.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_ERROR 3 .Os .Sh NAME @@ -22,6 +22,8 @@ The .Fn pam_error function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR Modified: vendor/openpam/dist/doc/man/pam_get_authtok.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_get_authtok.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_get_authtok.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_get_authtok.c by gendoc.pl -.\" $Id: pam_get_authtok.c 913 2017-01-21 15:11:12Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_get_authtok.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_GET_AUTHTOK 3 .Os .Sh NAME @@ -121,6 +121,12 @@ The .Fn pam_get_authtok function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_CONSTANT +Bad constant. +.It Bq Er PAM_BAD_ITEM +Unrecognized or restricted item. .It Bq Er PAM_BUF_ERR Memory buffer error. .It Bq Er PAM_CONV_ERR Modified: vendor/openpam/dist/doc/man/pam_get_data.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_get_data.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_get_data.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_get_data.c by gendoc.pl -.\" $Id: pam_get_data.c 913 2017-01-21 15:11:12Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_get_data.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_GET_DATA 3 .Os .Sh NAME @@ -39,6 +39,8 @@ The .Fn pam_get_data function returns one of the following values: .Bl -tag -width 18n +.It Bq Er PAM_SUCCESS +Success. .It Bq Er PAM_NO_MODULE_DATA Module data not found. .El Modified: vendor/openpam/dist/doc/man/pam_get_item.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_get_item.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_get_item.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_get_item.c by gendoc.pl -.\" $Id: pam_get_item.c 913 2017-01-21 15:11:12Z des $ -.Dd February 19, 2017 +.\" $OpenPAM: pam_get_item.c 938 2017-04-30 21:34:42Z des $ +.Dd April 30, 2017 .Dt PAM_GET_ITEM 3 .Os .Sh NAME @@ -74,8 +74,10 @@ The .Fn pam_get_item function returns one of the following values: .Bl -tag -width 18n -.It Bq Er PAM_SYMBOL_ERR -Invalid symbol. +.It Bq Er PAM_SUCCESS +Success. +.It Bq Er PAM_BAD_ITEM +Unrecognized or restricted item. .El .Sh SEE ALSO .Xr pam 3 , Modified: vendor/openpam/dist/doc/man/pam_get_user.3 ============================================================================== --- vendor/openpam/dist/doc/man/pam_get_user.3 Mon May 1 12:56:12 2017 (r317648) +++ vendor/openpam/dist/doc/man/pam_get_user.3 Mon May 1 15:02:58 2017 (r317649) @@ -1,6 +1,6 @@ .\" Generated from pam_get_user.c by gendoc.pl *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Mon May 1 15:03:41 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B495CD58F83; Mon, 1 May 2017 15:03:41 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6AFD6A4C; Mon, 1 May 2017 15:03:41 +0000 (UTC) (envelope-from des@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v41F3eWn017046; Mon, 1 May 2017 15:03:40 GMT (envelope-from des@FreeBSD.org) Received: (from des@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v41F3e3F017045; Mon, 1 May 2017 15:03:40 GMT (envelope-from des@FreeBSD.org) Message-Id: <201705011503.v41F3e3F017045@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org using -f From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= Date: Mon, 1 May 2017 15:03:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317650 - vendor/openpam/RESEDACEA X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 01 May 2017 15:03:41 -0000 Author: des Date: Mon May 1 15:03:40 2017 New Revision: 317650 URL: https://svnweb.freebsd.org/changeset/base/317650 Log: Tag OpenPAM Resedacea. Added: vendor/openpam/RESEDACEA/ - copied from r317649, vendor/openpam/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:30:22 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4D298D5BC90; Tue, 2 May 2017 18:30:22 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 03CD74E; Tue, 2 May 2017 18:30:21 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IUKnO098592; Tue, 2 May 2017 18:30:20 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IUKM0098591; Tue, 2 May 2017 18:30:20 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021830.v42IUKM0098591@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:30:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317684 - vendor/llvm/llvm-trunk-r301939 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:30:22 -0000 Author: dim Date: Tue May 2 18:30:20 2017 New Revision: 317684 URL: https://svnweb.freebsd.org/changeset/base/317684 Log: Tag llvm trunk r301939. Added: vendor/llvm/llvm-trunk-r301939/ - copied from r317683, vendor/llvm/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:30:17 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2608AD5BC8C; Tue, 2 May 2017 18:30:17 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A27A7FFF; Tue, 2 May 2017 18:30:16 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IUFeA098544; Tue, 2 May 2017 18:30:15 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IUDwK098524; Tue, 2 May 2017 18:30:13 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021830.v42IUDwK098524@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:30:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317683 - in vendor/llvm/dist: cmake/modules docs docs/TableGen include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/Bitcode include/llvm/CodeGen include/llvm/CodeGen/Global... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:30:17 -0000 Author: dim Date: Tue May 2 18:30:13 2017 New Revision: 317683 URL: https://svnweb.freebsd.org/changeset/base/317683 Log: Vendor import of llvm trunk r301939: https://llvm.org/svn/llvm-project/llvm/trunk@301939 Added: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragment.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentRecord.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugFragmentVisitor.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugLineFragment.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleDebugUnknownFragment.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptor.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModuleDebugStream.h (contents, props changed) vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.h (contents, props changed) vendor/llvm/dist/include/llvm/Transforms/Scalar/SimpleLoopUnswitch.h (contents, props changed) vendor/llvm/dist/lib/CodeGen/MachineFrameInfo.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragment.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragmentRecord.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugFragmentVisitor.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugInlineeLinesFragment.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugLineFragment.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleDebugUnknownFragment.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiModuleDescriptor.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiModuleDescriptorBuilder.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModuleDebugStream.cpp (contents, props changed) vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModuleDebugStreamBuilder.cpp (contents, props changed) vendor/llvm/dist/lib/Support/Unix/DynamicLibrary.inc (contents, props changed) vendor/llvm/dist/lib/Target/Mips/MicroMipsSizeReduction.cpp (contents, props changed) vendor/llvm/dist/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp (contents, props changed) vendor/llvm/dist/test/Analysis/AliasSet/unknown-inst-tracking.ll vendor/llvm/dist/test/CodeGen/AMDGPU/llvm.amdgcn.init.exec.ll vendor/llvm/dist/test/CodeGen/AVR/rot.ll vendor/llvm/dist/test/CodeGen/BPF/mem_offset_be.ll vendor/llvm/dist/test/CodeGen/Hexagon/cfgopt-fall-through.ll vendor/llvm/dist/test/CodeGen/Hexagon/rdf-def-mask.ll vendor/llvm/dist/test/CodeGen/Hexagon/unreachable-mbb-phi-subreg.mir vendor/llvm/dist/test/CodeGen/Mips/micromips-sizereduction/ vendor/llvm/dist/test/CodeGen/Mips/micromips-sizereduction/micromips-lwsp-swsp.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext-x86-64.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/ext.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-ext-x86-64.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/legalize-ext.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop-x32.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/regbankselect-X86_64.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-ext.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-inc.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop-x32.mir vendor/llvm/dist/test/CodeGen/X86/addcarry.ll vendor/llvm/dist/test/CodeGen/X86/cast-vsel.ll vendor/llvm/dist/test/CodeGen/X86/inline-0bh.ll vendor/llvm/dist/test/CodeGen/X86/pr28129.ll vendor/llvm/dist/test/CodeGen/X86/pr31088.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-large-location-size.ll vendor/llvm/dist/test/DebugInfo/AMDGPU/dbg-value-sched-crash.ll vendor/llvm/dist/test/DebugInfo/Generic/thrownTypes.ll vendor/llvm/dist/test/DebugInfo/PDB/Inputs/simple-line-info.yaml vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-yaml-lineinfo-write.test vendor/llvm/dist/test/Instrumentation/AddressSanitizer/no-globals.ll vendor/llvm/dist/test/MC/AArch64/arm32-large-relocs.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/arm32-tls-relocs.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/elf-reloc-pcreladdressing-ilp32.s (contents, props changed) vendor/llvm/dist/test/MC/AArch64/lp64-diagnostics.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/altmacro_expression.s (contents, props changed) vendor/llvm/dist/test/MC/AsmParser/negativ_altmacro_expression.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/PacketRules/ vendor/llvm/dist/test/MC/Hexagon/PacketRules/registers_readonly.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/PacketRules/solo.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/multiple_errs.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/registers_readonly.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/ro-c9.s (contents, props changed) vendor/llvm/dist/test/MC/Hexagon/ro-cc9.s (contents, props changed) vendor/llvm/dist/test/MC/WebAssembly/reloc-code.ll vendor/llvm/dist/test/MC/WebAssembly/reloc-data.ll vendor/llvm/dist/test/MC/WebAssembly/sections.ll vendor/llvm/dist/test/MC/X86/pr27884.s (contents, props changed) vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAnd.ll vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineAndOr.ll vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineOr.ll vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineOrAnd.ll vendor/llvm/dist/test/Transforms/CodeExtractor/SingleCondition.ll vendor/llvm/dist/test/Transforms/GlobalOpt/localize-constexpr-debuginfo.ll vendor/llvm/dist/test/Transforms/InferAddressSpaces/AMDGPU/infer-addrspacecast.ll vendor/llvm/dist/test/Transforms/Inline/AArch64/switch.ll vendor/llvm/dist/test/Transforms/InstCombine/apint-and.ll vendor/llvm/dist/test/Transforms/InstCombine/demorgan.ll vendor/llvm/dist/test/Transforms/LoopUnswitch/pr32818.ll vendor/llvm/dist/test/Transforms/NewGVN/pr32852.ll vendor/llvm/dist/test/Transforms/PGOProfile/memop_size_opt_zero.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/ vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2006-06-13-SingleEntryPHI.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2006-06-27-DeadSwitchCase.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-05-09-Unreachable.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-05-09-tl.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-07-12-ExitDomInfo.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-07-13-DomInfo.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-07-18-DomInfo.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-08-01-Dom.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-08-01-LCSSA.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2007-10-04-DomFrontier.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2008-06-02-DomInfo.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2008-06-17-DomFrontier.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2010-11-18-LCSSA.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2011-06-02-CritSwitch.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2011-09-26-EHCrash.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2012-04-02-IndirectBr.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2012-04-30-LoopUnswitch-LPad-Crash.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2012-05-20-Phi.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/2015-09-18-Addrspace.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/LIV-loop-condtion.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/basictest.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/cleanuppad.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/copy-metadata.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/crash.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/exponential-behavior.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/infinite-loop.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/msan.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/preserve-analyses.ll vendor/llvm/dist/test/Transforms/SimpleLoopUnswitch/trivial-unswitch.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/speculate-call.ll vendor/llvm/dist/test/Verifier/DISubprogram.ll vendor/llvm/dist/test/Verifier/speculatable-callsite-invalid.ll vendor/llvm/dist/test/Verifier/speculatable-callsite.ll vendor/llvm/dist/test/tools/llvm-pdbdump/raw-stream-data.test vendor/llvm/dist/test/tools/llvm-readobj/Inputs/const-import.lib (contents, props changed) vendor/llvm/dist/test/tools/llvm-readobj/coff-const-import.test vendor/llvm/dist/test/tools/llvm-readobj/resources.test vendor/llvm/dist/tools/llvm-pdbdump/C13DebugFragmentVisitor.cpp (contents, props changed) vendor/llvm/dist/tools/llvm-pdbdump/C13DebugFragmentVisitor.h (contents, props changed) vendor/llvm/dist/unittests/Support/DynamicLibrary/CMakeLists.txt (contents, props changed) vendor/llvm/dist/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp (contents, props changed) vendor/llvm/dist/unittests/Support/DynamicLibrary/PipSqueak.cxx (contents, props changed) vendor/llvm/dist/unittests/Support/DynamicLibrary/PipSqueak.h (contents, props changed) Deleted: vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleSubstream.h vendor/llvm/dist/include/llvm/DebugInfo/CodeView/ModuleSubstreamVisitor.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModInfo.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModInfoBuilder.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/ModStream.h vendor/llvm/dist/include/llvm/Object/ModuleSummaryIndexObjectFile.h vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleSubstream.cpp vendor/llvm/dist/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModInfo.cpp vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModInfoBuilder.cpp vendor/llvm/dist/lib/DebugInfo/PDB/Native/ModStream.cpp vendor/llvm/dist/lib/Object/ModuleSummaryIndexObjectFile.cpp vendor/llvm/dist/lib/Support/SearchForAddressOfSpecialSymbol.cpp vendor/llvm/dist/lib/Target/ARM/ARMInstructionSelector.h vendor/llvm/dist/test/CodeGen/X86/GlobalISel/X86-regbankselect.mir vendor/llvm/dist/test/CodeGen/X86/adde-carry.ll vendor/llvm/dist/test/CodeGen/X86/pr14657.ll vendor/llvm/dist/test/Transforms/InstCombine/apint-and1.ll vendor/llvm/dist/test/Transforms/InstCombine/apint-and2.ll vendor/llvm/dist/test/Transforms/InstCombine/demorgan-zext.ll Modified: vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake vendor/llvm/dist/cmake/modules/VersionFromVCS.cmake vendor/llvm/dist/docs/AMDGPUUsage.rst vendor/llvm/dist/docs/CMakeLists.txt vendor/llvm/dist/docs/LangRef.rst vendor/llvm/dist/docs/ProgrammersManual.rst vendor/llvm/dist/docs/README.txt vendor/llvm/dist/docs/StackMaps.rst vendor/llvm/dist/docs/TableGen/LangIntro.rst vendor/llvm/dist/docs/doxygen.cfg.in vendor/llvm/dist/include/llvm/ADT/APInt.h vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h vendor/llvm/dist/include/llvm/Analysis/CGSCCPassManager.h vendor/llvm/dist/include/llvm/Analysis/CallGraph.h vendor/llvm/dist/include/llvm/Analysis/IVUsers.h vendor/llvm/dist/include/llvm/Analysis/InlineCost.h vendor/llvm/dist/include/llvm/Analysis/InstructionSimplify.h vendor/llvm/dist/include/llvm/Analysis/MemoryBuiltins.h vendor/llvm/dist/include/llvm/Analysis/ScalarEvolutionExpander.h vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfo.h vendor/llvm/dist/include/llvm/Analysis/TargetTransformInfoImpl.h vendor/llvm/dist/include/llvm/Analysis/ValueTracking.h vendor/llvm/dist/include/llvm/Bitcode/BitcodeReader.h vendor/llvm/dist/include/llvm/Bitcode/LLVMBitCodes.h vendor/llvm/dist/include/llvm/CodeGen/BasicTTIImpl.h vendor/llvm/dist/include/llvm/CodeGen/FunctionLoweringInfo.h vendor/llvm/dist/include/llvm/CodeGen/GlobalISel/InstructionSelector.h vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h vendor/llvm/dist/include/llvm/CodeGen/MIRYamlMapping.h vendor/llvm/dist/include/llvm/CodeGen/MachineFrameInfo.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAGNodes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CVRecord.h vendor/llvm/dist/include/llvm/DebugInfo/CodeView/CodeView.h vendor/llvm/dist/include/llvm/DebugInfo/CodeView/Line.h vendor/llvm/dist/include/llvm/DebugInfo/CodeView/TypeDatabase.h vendor/llvm/dist/include/llvm/DebugInfo/DIContext.h vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFContext.h vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFDebugLine.h vendor/llvm/dist/include/llvm/DebugInfo/DWARF/DWARFFormValue.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiStream.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/DbiStreamBuilder.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/NativeCompilandSymbol.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/NativeEnumModules.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/RawTypes.h vendor/llvm/dist/include/llvm/DebugInfo/PDB/Native/StringTableBuilder.h vendor/llvm/dist/include/llvm/DebugInfo/Symbolize/Symbolize.h vendor/llvm/dist/include/llvm/IR/Argument.h vendor/llvm/dist/include/llvm/IR/Attributes.h vendor/llvm/dist/include/llvm/IR/Attributes.td vendor/llvm/dist/include/llvm/IR/CallSite.h vendor/llvm/dist/include/llvm/IR/CallingConv.h vendor/llvm/dist/include/llvm/IR/DIBuilder.h vendor/llvm/dist/include/llvm/IR/DebugInfoMetadata.h vendor/llvm/dist/include/llvm/IR/Function.h vendor/llvm/dist/include/llvm/IR/InstrTypes.h vendor/llvm/dist/include/llvm/IR/Instructions.h vendor/llvm/dist/include/llvm/IR/IntrinsicInst.h vendor/llvm/dist/include/llvm/IR/Intrinsics.td vendor/llvm/dist/include/llvm/IR/IntrinsicsAMDGPU.td vendor/llvm/dist/include/llvm/IR/ModuleSummaryIndex.h vendor/llvm/dist/include/llvm/IR/ValueHandle.h vendor/llvm/dist/include/llvm/InitializePasses.h vendor/llvm/dist/include/llvm/MC/ConstantPools.h vendor/llvm/dist/include/llvm/MC/LaneBitmask.h vendor/llvm/dist/include/llvm/MC/MCAssembler.h vendor/llvm/dist/include/llvm/MC/MCContext.h vendor/llvm/dist/include/llvm/MC/MCDwarf.h vendor/llvm/dist/include/llvm/MC/MCExpr.h vendor/llvm/dist/include/llvm/MC/MCFragment.h vendor/llvm/dist/include/llvm/MC/MCInst.h vendor/llvm/dist/include/llvm/MC/MCLinkerOptimizationHint.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmLexer.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmParser.h vendor/llvm/dist/include/llvm/MC/MCParser/MCTargetAsmParser.h vendor/llvm/dist/include/llvm/MC/MCRegisterInfo.h vendor/llvm/dist/include/llvm/MC/MCSection.h vendor/llvm/dist/include/llvm/MC/MCSectionWasm.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/MC/MCSubtargetInfo.h vendor/llvm/dist/include/llvm/MC/MCSymbol.h vendor/llvm/dist/include/llvm/MC/MCWasmObjectWriter.h vendor/llvm/dist/include/llvm/Object/Binary.h vendor/llvm/dist/include/llvm/Object/COFF.h vendor/llvm/dist/include/llvm/Object/COFFImportFile.h vendor/llvm/dist/include/llvm/Object/ELF.h vendor/llvm/dist/include/llvm/Support/AArch64TargetParser.def vendor/llvm/dist/include/llvm/Support/BinaryStreamArray.h vendor/llvm/dist/include/llvm/Support/BinaryStreamReader.h vendor/llvm/dist/include/llvm/Support/BinaryStreamWriter.h vendor/llvm/dist/include/llvm/Support/CMakeLists.txt vendor/llvm/dist/include/llvm/Support/DynamicLibrary.h vendor/llvm/dist/include/llvm/Support/ELFRelocs/AArch64.def vendor/llvm/dist/include/llvm/Support/KnownBits.h vendor/llvm/dist/include/llvm/Support/LEB128.h vendor/llvm/dist/include/llvm/Support/ScopedPrinter.h vendor/llvm/dist/include/llvm/Support/StringSaver.h vendor/llvm/dist/include/llvm/Support/Wasm.h vendor/llvm/dist/include/llvm/Target/Target.td vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Transforms/Scalar/NaryReassociate.h vendor/llvm/dist/include/llvm/Transforms/Utils/Cloning.h vendor/llvm/dist/include/llvm/Transforms/Utils/Local.h vendor/llvm/dist/include/llvm/Transforms/Utils/ModuleUtils.h vendor/llvm/dist/include/llvm/Transforms/Utils/SimplifyIndVar.h vendor/llvm/dist/include/llvm/Transforms/Utils/ValueMapper.h vendor/llvm/dist/include/llvm/Transforms/Vectorize/SLPVectorizer.h vendor/llvm/dist/lib/Analysis/AssumptionCache.cpp vendor/llvm/dist/lib/Analysis/CFLGraph.h vendor/llvm/dist/lib/Analysis/CallGraphSCCPass.cpp vendor/llvm/dist/lib/Analysis/DemandedBits.cpp vendor/llvm/dist/lib/Analysis/InlineCost.cpp vendor/llvm/dist/lib/Analysis/InstructionSimplify.cpp vendor/llvm/dist/lib/Analysis/LazyValueInfo.cpp vendor/llvm/dist/lib/Analysis/Lint.cpp vendor/llvm/dist/lib/Analysis/PHITransAddr.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp vendor/llvm/dist/lib/Analysis/ScalarEvolutionExpander.cpp vendor/llvm/dist/lib/Analysis/TargetTransformInfo.cpp vendor/llvm/dist/lib/Analysis/ValueTracking.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLToken.h vendor/llvm/dist/lib/Bitcode/Reader/BitcodeReader.cpp vendor/llvm/dist/lib/Bitcode/Reader/MetadataLoader.cpp vendor/llvm/dist/lib/Bitcode/Reader/ValueList.cpp vendor/llvm/dist/lib/Bitcode/Reader/ValueList.h vendor/llvm/dist/lib/Bitcode/Writer/BitcodeWriter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/CodeViewDebug.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfUnit.h vendor/llvm/dist/lib/CodeGen/CMakeLists.txt vendor/llvm/dist/lib/CodeGen/CodeGenPrepare.cpp vendor/llvm/dist/lib/CodeGen/DFAPacketizer.cpp vendor/llvm/dist/lib/CodeGen/GlobalISel/CallLowering.cpp vendor/llvm/dist/lib/CodeGen/GlobalISel/IRTranslator.cpp vendor/llvm/dist/lib/CodeGen/GlobalISel/InstructionSelector.cpp vendor/llvm/dist/lib/CodeGen/MIRParser/MIRParser.cpp vendor/llvm/dist/lib/CodeGen/MIRPrinter.cpp vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/StatepointLowering.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp vendor/llvm/dist/lib/CodeGen/StackMaps.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringBase.cpp vendor/llvm/dist/lib/CodeGen/UnreachableBlockElim.cpp vendor/llvm/dist/lib/DebugInfo/CodeView/CMakeLists.txt vendor/llvm/dist/lib/DebugInfo/CodeView/EnumTables.cpp vendor/llvm/dist/lib/DebugInfo/CodeView/TypeDatabase.cpp vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFContext.cpp vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugLine.cpp vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFDebugPubTable.cpp vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFFormValue.cpp vendor/llvm/dist/lib/DebugInfo/DWARF/DWARFGdbIndex.cpp vendor/llvm/dist/lib/DebugInfo/PDB/CMakeLists.txt vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiStream.cpp vendor/llvm/dist/lib/DebugInfo/PDB/Native/DbiStreamBuilder.cpp vendor/llvm/dist/lib/DebugInfo/PDB/Native/StringTableBuilder.cpp vendor/llvm/dist/lib/DebugInfo/Symbolize/Symbolize.cpp vendor/llvm/dist/lib/ExecutionEngine/Interpreter/Execution.cpp vendor/llvm/dist/lib/Fuzzer/FuzzerInternal.h vendor/llvm/dist/lib/Fuzzer/test/cxxstring.test vendor/llvm/dist/lib/IR/AsmWriter.cpp vendor/llvm/dist/lib/IR/Attributes.cpp vendor/llvm/dist/lib/IR/ConstantRange.cpp vendor/llvm/dist/lib/IR/DIBuilder.cpp vendor/llvm/dist/lib/IR/DebugInfoMetadata.cpp vendor/llvm/dist/lib/IR/Function.cpp vendor/llvm/dist/lib/IR/Instructions.cpp vendor/llvm/dist/lib/IR/LLVMContextImpl.h vendor/llvm/dist/lib/IR/Metadata.cpp vendor/llvm/dist/lib/IR/ModuleSummaryIndex.cpp vendor/llvm/dist/lib/IR/Value.cpp vendor/llvm/dist/lib/IR/Verifier.cpp vendor/llvm/dist/lib/LTO/LTO.cpp vendor/llvm/dist/lib/LTO/ThinLTOCodeGenerator.cpp vendor/llvm/dist/lib/MC/ELFObjectWriter.cpp vendor/llvm/dist/lib/MC/MCCodeView.cpp vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp vendor/llvm/dist/lib/MC/MCParser/MCAsmLexer.cpp vendor/llvm/dist/lib/MC/StringTableBuilder.cpp vendor/llvm/dist/lib/MC/WasmObjectWriter.cpp vendor/llvm/dist/lib/MC/WinCOFFObjectWriter.cpp vendor/llvm/dist/lib/Object/CMakeLists.txt vendor/llvm/dist/lib/Object/ELF.cpp vendor/llvm/dist/lib/Passes/PassBuilder.cpp vendor/llvm/dist/lib/Passes/PassRegistry.def vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/CMakeLists.txt vendor/llvm/dist/lib/Support/DynamicLibrary.cpp vendor/llvm/dist/lib/Support/PrettyStackTrace.cpp vendor/llvm/dist/lib/Support/ScopedPrinter.cpp vendor/llvm/dist/lib/Support/SourceMgr.cpp vendor/llvm/dist/lib/Support/Windows/DynamicLibrary.inc vendor/llvm/dist/lib/Target/AArch64/AArch64AsmPrinter.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64FastISel.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64ISelLowering.h vendor/llvm/dist/lib/Target/AArch64/AArch64InstrInfo.td vendor/llvm/dist/lib/Target/AArch64/AArch64InstructionSelector.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64Subtarget.h vendor/llvm/dist/lib/Target/AArch64/AArch64TargetMachine.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp vendor/llvm/dist/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.h vendor/llvm/dist/lib/Target/AMDGPU/AMDGPU.td vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUAsmPrinter.h vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.cpp vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUISelLowering.h vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUInstrInfo.td vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp vendor/llvm/dist/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/AMDGPU/GCNSchedStrategy.cpp vendor/llvm/dist/lib/Target/AMDGPU/R600Intrinsics.td vendor/llvm/dist/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp vendor/llvm/dist/lib/Target/AMDGPU/SIDefines.h vendor/llvm/dist/lib/Target/AMDGPU/SIFixSGPRCopies.cpp vendor/llvm/dist/lib/Target/AMDGPU/SIISelLowering.cpp vendor/llvm/dist/lib/Target/AMDGPU/SIInstructions.td vendor/llvm/dist/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARM.h vendor/llvm/dist/lib/Target/ARM/ARMCallLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMFastISel.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td vendor/llvm/dist/lib/Target/ARM/ARMInstructionSelector.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp vendor/llvm/dist/lib/Target/ARM/CMakeLists.txt vendor/llvm/dist/lib/Target/AVR/AVRFrameLowering.cpp vendor/llvm/dist/lib/Target/AVR/AVRISelLowering.cpp vendor/llvm/dist/lib/Target/AVR/AVRISelLowering.h vendor/llvm/dist/lib/Target/AVR/AVRInstrInfo.td vendor/llvm/dist/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/AVR/MCTargetDesc/AVRMCCodeEmitter.h vendor/llvm/dist/lib/Target/BPF/Disassembler/BPFDisassembler.cpp vendor/llvm/dist/lib/Target/Hexagon/AsmParser/HexagonAsmParser.cpp vendor/llvm/dist/lib/Target/Hexagon/Disassembler/HexagonDisassembler.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonBitTracker.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonCFGOptimizer.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonDepITypes.h vendor/llvm/dist/lib/Target/Hexagon/HexagonDepITypes.td vendor/llvm/dist/lib/Target/Hexagon/HexagonDepInstrInfo.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrFormats.td vendor/llvm/dist/lib/Target/Hexagon/HexagonInstrFormatsV60.td vendor/llvm/dist/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp vendor/llvm/dist/lib/Target/Hexagon/HexagonMachineScheduler.h vendor/llvm/dist/lib/Target/Hexagon/HexagonRegisterInfo.td vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonBaseInfo.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCChecker.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCCompound.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCInstrInfo.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonMCShuffler.h vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.cpp vendor/llvm/dist/lib/Target/Hexagon/MCTargetDesc/HexagonShuffler.h vendor/llvm/dist/lib/Target/Hexagon/RDFLiveness.cpp vendor/llvm/dist/lib/Target/Lanai/LanaiRegisterInfo.cpp vendor/llvm/dist/lib/Target/Lanai/LanaiRegisterInfo.h vendor/llvm/dist/lib/Target/Mips/CMakeLists.txt vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsELFObjectWriter.cpp vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsFixupKinds.h vendor/llvm/dist/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp vendor/llvm/dist/lib/Target/Mips/Mips.h vendor/llvm/dist/lib/Target/Mips/MipsFastISel.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXAsmPrinter.cpp vendor/llvm/dist/lib/Target/NVPTX/NVPTXLowerArgs.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstrVSX.td vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.cpp vendor/llvm/dist/lib/Target/Sparc/SparcISelLowering.h vendor/llvm/dist/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetTransformInfo.cpp vendor/llvm/dist/lib/Target/TargetLoweringObjectFile.cpp vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/WebAssembly/WebAssemblyInstrMemory.td vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h vendor/llvm/dist/lib/Target/X86/X86InstrCompiler.td vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86InstructionSelector.cpp vendor/llvm/dist/lib/Target/X86/X86LegalizerInfo.cpp vendor/llvm/dist/lib/Target/X86/X86OptimizeLEAs.cpp vendor/llvm/dist/lib/Target/X86/X86SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/X86/X86Subtarget.cpp vendor/llvm/dist/lib/Target/X86/X86Subtarget.h vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.h vendor/llvm/dist/lib/Target/XCore/XCoreLowerThreadLocal.cpp vendor/llvm/dist/lib/Transforms/IPO/ArgumentPromotion.cpp vendor/llvm/dist/lib/Transforms/IPO/FunctionAttrs.cpp vendor/llvm/dist/lib/Transforms/IPO/FunctionImport.cpp vendor/llvm/dist/lib/Transforms/IPO/GlobalOpt.cpp vendor/llvm/dist/lib/Transforms/IPO/LLVMBuild.txt vendor/llvm/dist/lib/Transforms/IPO/MergeFunctions.cpp vendor/llvm/dist/lib/Transforms/IPO/PartialInlining.cpp vendor/llvm/dist/lib/Transforms/IPO/PassManagerBuilder.cpp vendor/llvm/dist/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAddSub.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCalls.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCompares.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineInternal.h vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombinePHI.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSelect.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineShifts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineVectorOps.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstructionCombining.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/AddressSanitizer.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/IndirectCallPromotion.cpp vendor/llvm/dist/lib/Transforms/Instrumentation/MemorySanitizer.cpp vendor/llvm/dist/lib/Transforms/ObjCARC/ObjCARC.h vendor/llvm/dist/lib/Transforms/ObjCARC/PtrState.cpp vendor/llvm/dist/lib/Transforms/Scalar/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp vendor/llvm/dist/lib/Transforms/Scalar/EarlyCSE.cpp vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/IndVarSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/InferAddressSpaces.cpp vendor/llvm/dist/lib/Transforms/Scalar/JumpThreading.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopIdiomRecognize.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopInstSimplify.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopRotation.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopSimplifyCFG.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopUnswitch.cpp vendor/llvm/dist/lib/Transforms/Scalar/MemCpyOptimizer.cpp vendor/llvm/dist/lib/Transforms/Scalar/NaryReassociate.cpp vendor/llvm/dist/lib/Transforms/Scalar/NewGVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp vendor/llvm/dist/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp vendor/llvm/dist/lib/Transforms/Scalar/SROA.cpp vendor/llvm/dist/lib/Transforms/Scalar/Scalar.cpp vendor/llvm/dist/lib/Transforms/Scalar/SeparateConstOffsetFromGEP.cpp vendor/llvm/dist/lib/Transforms/Utils/BasicBlockUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/InlineFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/LibCallsShrinkWrap.cpp vendor/llvm/dist/lib/Transforms/Utils/Local.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopSimplify.cpp vendor/llvm/dist/lib/Transforms/Utils/LoopUnroll.cpp vendor/llvm/dist/lib/Transforms/Utils/ModuleUtils.cpp vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyCFG.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyIndVar.cpp vendor/llvm/dist/lib/Transforms/Utils/SimplifyInstructions.cpp vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp vendor/llvm/dist/test/Analysis/ScalarEvolution/flags-from-poison.ll vendor/llvm/dist/test/Assembler/dinamespace.ll vendor/llvm/dist/test/Assembler/disubprogram.ll vendor/llvm/dist/test/Bitcode/DINamespace.ll vendor/llvm/dist/test/Bitcode/attributes.ll vendor/llvm/dist/test/Bitcode/compatibility.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-anyregcc.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-stackmap.ll vendor/llvm/dist/test/CodeGen/AArch64/arm64-tls-dynamics.ll vendor/llvm/dist/test/CodeGen/AArch64/stackmap-liveness.ll vendor/llvm/dist/test/CodeGen/AMDGPU/annotate-kernel-features-hsa.ll vendor/llvm/dist/test/CodeGen/AMDGPU/inline-asm.ll vendor/llvm/dist/test/CodeGen/AMDGPU/zext-lid.ll vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-irtranslator.ll vendor/llvm/dist/test/CodeGen/ARM/GlobalISel/arm-isel.ll vendor/llvm/dist/test/CodeGen/ARM/bool-ext-inc.ll vendor/llvm/dist/test/CodeGen/AVR/calling-conv/c/stack.ll vendor/llvm/dist/test/CodeGen/AVR/return.ll vendor/llvm/dist/test/CodeGen/AVR/varargs.ll vendor/llvm/dist/test/CodeGen/MIR/Generic/frame-info.mir vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/add.ll vendor/llvm/dist/test/CodeGen/Mips/llvm-ir/sub.ll vendor/llvm/dist/test/CodeGen/NVPTX/f16-instructions.ll vendor/llvm/dist/test/CodeGen/PowerPC/build-vector-tests.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-anyregcc.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-i128-abi.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-stackmap.ll vendor/llvm/dist/test/CodeGen/PowerPC/swaps-le-1.ll vendor/llvm/dist/test/CodeGen/PowerPC/swaps-le-2.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx-ldst.ll vendor/llvm/dist/test/CodeGen/PowerPC/vsx.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/binop.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/callingconv.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/irtranslator-call.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/memop.ll vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-add.mir vendor/llvm/dist/test/CodeGen/X86/GlobalISel/select-memop.mir vendor/llvm/dist/test/CodeGen/X86/all-ones-vector.ll vendor/llvm/dist/test/CodeGen/X86/anyregcc.ll vendor/llvm/dist/test/CodeGen/X86/avx-intrinsics-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/avx512-intrinsics-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/bool-ext-inc.ll vendor/llvm/dist/test/CodeGen/X86/bswap_tree.ll vendor/llvm/dist/test/CodeGen/X86/clz.ll vendor/llvm/dist/test/CodeGen/X86/deopt-bundles.ll vendor/llvm/dist/test/CodeGen/X86/deopt-intrinsic-cconv.ll vendor/llvm/dist/test/CodeGen/X86/deopt-intrinsic.ll vendor/llvm/dist/test/CodeGen/X86/known-bits.ll vendor/llvm/dist/test/CodeGen/X86/known-signbits-vector.ll vendor/llvm/dist/test/CodeGen/X86/lea-opt-with-debug.mir vendor/llvm/dist/test/CodeGen/X86/mul-i1024.ll vendor/llvm/dist/test/CodeGen/X86/mul-i256.ll vendor/llvm/dist/test/CodeGen/X86/mul-i512.ll vendor/llvm/dist/test/CodeGen/X86/patchpoint-invoke.ll vendor/llvm/dist/test/CodeGen/X86/sse2-intrinsics-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/stack-protector-dbginfo.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-fast-isel.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-large-constants.ll vendor/llvm/dist/test/CodeGen/X86/stackmap-liveness.ll vendor/llvm/dist/test/CodeGen/X86/stackmap.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-allocas.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-live-in.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-stackmap-format.ll vendor/llvm/dist/test/CodeGen/X86/statepoint-vector.ll vendor/llvm/dist/test/CodeGen/X86/vector-shuffle-combining.ll vendor/llvm/dist/test/CodeGen/X86/widened-broadcast.ll vendor/llvm/dist/test/DebugInfo/COFF/cpp-mangling.ll vendor/llvm/dist/test/DebugInfo/COFF/scopes.ll vendor/llvm/dist/test/DebugInfo/Generic/dwarf-public-names.ll vendor/llvm/dist/test/DebugInfo/Generic/namespace.ll vendor/llvm/dist/test/DebugInfo/Generic/namespace_function_definition.ll vendor/llvm/dist/test/DebugInfo/Generic/namespace_inline_function_definition.ll vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-headers.test vendor/llvm/dist/test/DebugInfo/PDB/pdbdump-yaml-lineinfo.test vendor/llvm/dist/test/DebugInfo/X86/dwarf-linkage-names.ll vendor/llvm/dist/test/DebugInfo/X86/dwarf-public-names.ll vendor/llvm/dist/test/DebugInfo/X86/generate-odr-hash.ll vendor/llvm/dist/test/DebugInfo/X86/gnu-public-names-tu.ll vendor/llvm/dist/test/DebugInfo/X86/gnu-public-names.ll vendor/llvm/dist/test/DebugInfo/X86/inline-namespace.ll vendor/llvm/dist/test/DebugInfo/X86/lexical-block-file-inline.ll vendor/llvm/dist/test/DebugInfo/X86/multiple-at-const-val.ll vendor/llvm/dist/test/DebugInfo/X86/parameters.ll vendor/llvm/dist/test/DebugInfo/X86/pr19307.ll vendor/llvm/dist/test/DebugInfo/X86/union-template.ll vendor/llvm/dist/test/DebugInfo/dwarfdump-dump-gdbindex.test vendor/llvm/dist/test/Feature/optnone-opt.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/global_metadata.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/global_metadata_darwin.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/global_metadata_windows.ll vendor/llvm/dist/test/Instrumentation/AddressSanitizer/instrument_global.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-class-type.ll vendor/llvm/dist/test/Linker/2011-08-18-unique-class-type2.ll vendor/llvm/dist/test/Linker/pr26037.ll vendor/llvm/dist/test/MC/AArch64/adrp-relocation.s vendor/llvm/dist/test/MC/AArch64/arm32-elf-relocs.s vendor/llvm/dist/test/MC/AArch64/arm64-elf-reloc-condbr.s vendor/llvm/dist/test/MC/AArch64/arm64-elf-relocs.s vendor/llvm/dist/test/MC/AArch64/arm64-tls-relocs.s vendor/llvm/dist/test/MC/AArch64/directive-arch-negative.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-ldrlit.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-tstb.s vendor/llvm/dist/test/MC/AArch64/elf-reloc-uncondbrimm.s vendor/llvm/dist/test/MC/AArch64/error-location.s vendor/llvm/dist/test/MC/AArch64/ilp32-diagnostics.s vendor/llvm/dist/test/MC/AArch64/inline-asm-modifiers.s vendor/llvm/dist/test/MC/AArch64/tls-relocs.s vendor/llvm/dist/test/MC/AMDGPU/vop_dpp.s vendor/llvm/dist/test/MC/AMDGPU/vop_dpp_expr.s vendor/llvm/dist/test/MC/AVR/inst-lds.s vendor/llvm/dist/test/MC/AVR/inst-sts.s vendor/llvm/dist/test/MC/ELF/section-numeric-invalid-type.s vendor/llvm/dist/test/MC/Mips/relocation.s vendor/llvm/dist/test/Other/new-pm-defaults.ll vendor/llvm/dist/test/TableGen/GlobalISelEmitter.td vendor/llvm/dist/test/ThinLTO/X86/debuginfo-cu-import.ll vendor/llvm/dist/test/Transforms/CodeExtractor/MultipleExitBranchProb.ll vendor/llvm/dist/test/Transforms/CodeExtractor/PartialInlineOptRemark.ll vendor/llvm/dist/test/Transforms/CodeExtractor/unreachable-block.ll vendor/llvm/dist/test/Transforms/EarlyCSE/guards.ll vendor/llvm/dist/test/Transforms/GVNHoist/hoist-inline.ll vendor/llvm/dist/test/Transforms/InferAddressSpaces/AMDGPU/infer-getelementptr.ll vendor/llvm/dist/test/Transforms/InferAddressSpaces/NVPTX/bug31948.ll vendor/llvm/dist/test/Transforms/InstCombine/amdgcn-intrinsics.ll vendor/llvm/dist/test/Transforms/InstCombine/and-or-not.ll vendor/llvm/dist/test/Transforms/InstCombine/and.ll vendor/llvm/dist/test/Transforms/InstCombine/apint-not.ll vendor/llvm/dist/test/Transforms/InstCombine/apint-or.ll vendor/llvm/dist/test/Transforms/InstCombine/assume2.ll vendor/llvm/dist/test/Transforms/InstCombine/not.ll vendor/llvm/dist/test/Transforms/InstSimplify/shufflevector.ll vendor/llvm/dist/test/Transforms/JumpThreading/fold-not-thread.ll vendor/llvm/dist/test/Transforms/ObjCARC/rv.ll vendor/llvm/dist/test/tools/llvm-lto/error.ll vendor/llvm/dist/test/tools/llvm-readobj/reloc-types.test vendor/llvm/dist/test/tools/llvm-readobj/relocations.test vendor/llvm/dist/test/tools/llvm-readobj/sections.test vendor/llvm/dist/tools/llvm-dwarfdump/llvm-dwarfdump.cpp vendor/llvm/dist/tools/llvm-link/CMakeLists.txt vendor/llvm/dist/tools/llvm-link/llvm-link.cpp vendor/llvm/dist/tools/llvm-lto/llvm-lto.cpp vendor/llvm/dist/tools/llvm-pdbdump/CMakeLists.txt vendor/llvm/dist/tools/llvm-pdbdump/CompactTypeDumpVisitor.cpp vendor/llvm/dist/tools/llvm-pdbdump/CompactTypeDumpVisitor.h vendor/llvm/dist/tools/llvm-pdbdump/LLVMOutputStyle.cpp vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.cpp vendor/llvm/dist/tools/llvm-pdbdump/PdbYaml.h vendor/llvm/dist/tools/llvm-pdbdump/StreamUtil.cpp vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.cpp vendor/llvm/dist/tools/llvm-pdbdump/YAMLOutputStyle.h vendor/llvm/dist/tools/llvm-pdbdump/fuzzer/llvm-pdbdump-fuzzer.cpp vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.cpp vendor/llvm/dist/tools/llvm-pdbdump/llvm-pdbdump.h vendor/llvm/dist/tools/llvm-readobj/COFFDumper.cpp vendor/llvm/dist/tools/llvm-readobj/ELFDumper.cpp vendor/llvm/dist/tools/llvm-readobj/ObjDumper.h vendor/llvm/dist/tools/llvm-readobj/WasmDumper.cpp vendor/llvm/dist/tools/llvm-readobj/llvm-readobj.cpp vendor/llvm/dist/tools/opt/BreakpointPrinter.cpp vendor/llvm/dist/unittests/ADT/APIntTest.cpp vendor/llvm/dist/unittests/DebugInfo/DWARF/DWARFDebugInfoTest.cpp vendor/llvm/dist/unittests/IR/IRBuilderTest.cpp vendor/llvm/dist/unittests/IR/MetadataTest.cpp vendor/llvm/dist/unittests/IR/ValueHandleTest.cpp vendor/llvm/dist/unittests/Support/BinaryStreamTest.cpp vendor/llvm/dist/unittests/Support/CMakeLists.txt vendor/llvm/dist/unittests/Target/AArch64/InstSizes.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp vendor/llvm/dist/utils/TableGen/CodeGenIntrinsics.h vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/GlobalISelEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/SubtargetFeatureInfo.cpp vendor/llvm/dist/utils/TableGen/SubtargetFeatureInfo.h vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.cpp Modified: vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake ============================================================================== --- vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/cmake/modules/HandleLLVMOptions.cmake Tue May 2 18:30:13 2017 (r317683) @@ -17,6 +17,9 @@ else() set(LINKER_IS_LLD_LINK FALSE) endif() +set(LLVM_ENABLE_LTO OFF CACHE STRING "Build LLVM with LTO. May be specified as Thin or Full to use a particular kind of LTO") +string(TOUPPER "${LLVM_ENABLE_LTO}" uppercase_LLVM_ENABLE_LTO) + # Ninja Job Pool support # The following only works with the Ninja generator in CMake >= 3.0. set(LLVM_PARALLEL_COMPILE_JOBS "" CACHE STRING @@ -32,16 +35,19 @@ endif() set(LLVM_PARALLEL_LINK_JOBS "" CACHE STRING "Define the maximum number of concurrent link jobs.") -if(LLVM_PARALLEL_LINK_JOBS) - if(NOT CMAKE_MAKE_PROGRAM MATCHES "ninja") - message(WARNING "Job pooling is only available with Ninja generators.") - else() +if(CMAKE_MAKE_PROGRAM MATCHES "ninja") + if(NOT LLVM_PARALLEL_LINK_JOBS AND uppercase_LLVM_ENABLE_LTO STREQUAL "THIN") + message(STATUS "ThinLTO provides its own parallel linking - limiting parallel link jobs to 2.") + set(LLVM_PARALLEL_LINK_JOBS "2") + endif() + if(LLVM_PARALLEL_LINK_JOBS) set_property(GLOBAL APPEND PROPERTY JOB_POOLS link_job_pool=${LLVM_PARALLEL_LINK_JOBS}) set(CMAKE_JOB_POOL_LINK link_job_pool) endif() +elseif(LLVM_PARALLEL_LINK_JOBS) + message(WARNING "Job pooling is only available with Ninja generators.") endif() - if (LINKER_IS_LLD_LINK) # Pass /MANIFEST:NO so that CMake doesn't run mt.exe on our binaries. Adding # manifests with mt.exe breaks LLD's symbol tables and takes as much time as @@ -724,8 +730,6 @@ append_if(LLVM_BUILD_INSTRUMENTED_COVERA CMAKE_EXE_LINKER_FLAGS CMAKE_SHARED_LINKER_FLAGS) -set(LLVM_ENABLE_LTO OFF CACHE STRING "Build LLVM with LTO. May be specified as Thin or Full to use a particular kind of LTO") -string(TOUPPER "${LLVM_ENABLE_LTO}" uppercase_LLVM_ENABLE_LTO) if(LLVM_ENABLE_LTO AND LLVM_ON_WIN32 AND NOT LINKER_IS_LLD_LINK) message(FATAL_ERROR "When compiling for Windows, LLVM_ENABLE_LTO requires using lld as the linker (point CMAKE_LINKER at lld-link.exe)") endif() Modified: vendor/llvm/dist/cmake/modules/VersionFromVCS.cmake ============================================================================== --- vendor/llvm/dist/cmake/modules/VersionFromVCS.cmake Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/cmake/modules/VersionFromVCS.cmake Tue May 2 18:30:13 2017 (r317683) @@ -33,7 +33,8 @@ function(add_version_info_from_vcs VERS) execute_process(COMMAND ${git_executable} rev-parse --git-dir WORKING_DIRECTORY ${SOURCE_DIR}/cmake RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_dir) + OUTPUT_VARIABLE git_dir + ERROR_QUIET) if(git_result EQUAL 0) # Try to get a ref-id string(STRIP "${git_dir}" git_dir) @@ -45,7 +46,8 @@ function(add_version_info_from_vcs VERS) WORKING_DIRECTORY ${SOURCE_DIR} TIMEOUT 5 RESULT_VARIABLE git_result - OUTPUT_VARIABLE git_output) + OUTPUT_VARIABLE git_output + ERROR_QUIET) if( git_result EQUAL 0 ) string(REGEX MATCH "URL: ([^ \n]*)" svn_url ${git_output}) if(svn_url) Modified: vendor/llvm/dist/docs/AMDGPUUsage.rst ============================================================================== --- vendor/llvm/dist/docs/AMDGPUUsage.rst Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/AMDGPUUsage.rst Tue May 2 18:30:13 2017 (r317683) @@ -83,7 +83,7 @@ handler as follows: Usage Code Sequence Description =============== ============= =============================================== llvm.trap s_endpgm Causes wavefront to be terminated. - llvm.debugtrap Nothing. Compiler warning generated that there is no trap handler installed. + llvm.debugtrap Nothing Compiler warning generated that there is no trap handler installed. =============== ============= =============================================== Assembler Modified: vendor/llvm/dist/docs/CMakeLists.txt ============================================================================== --- vendor/llvm/dist/docs/CMakeLists.txt Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/CMakeLists.txt Tue May 2 18:30:13 2017 (r317683) @@ -1,8 +1,8 @@ if (DOXYGEN_FOUND) if (LLVM_ENABLE_DOXYGEN) - set(abs_top_srcdir ${LLVM_MAIN_SRC_DIR}) - set(abs_top_builddir ${LLVM_BINARY_DIR}) + set(abs_top_srcdir ${CMAKE_CURRENT_SOURCE_DIR}) + set(abs_top_builddir ${CMAKE_CURRENT_BINARY_DIR}) if (HAVE_DOT) set(DOT ${LLVM_PATH_DOT}) Modified: vendor/llvm/dist/docs/LangRef.rst ============================================================================== --- vendor/llvm/dist/docs/LangRef.rst Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/LangRef.rst Tue May 2 18:30:13 2017 (r317683) @@ -1535,6 +1535,17 @@ example: ``sanitize_thread`` This attribute indicates that ThreadSanitizer checks (dynamic thread safety analysis) are enabled for this function. +``speculatable`` + This function attribute indicates that the function does not have any + effects besides calculating its result and does not have undefined behavior. + Note that ``speculatable`` is not enough to conclude that along any + particular exection path the number of calls to this function will not be + externally observable. This attribute is only valid on functions + and declarations, not on individual call sites. If a function is + incorrectly marked as speculatable and really does exhibit + undefined behavior, the undefined behavior may be observed even + if the call site is dead code. + ``ssp`` This attribute indicates that the function should emit a stack smashing protector. It is in the form of a "canary" --- a random value Modified: vendor/llvm/dist/docs/ProgrammersManual.rst ============================================================================== --- vendor/llvm/dist/docs/ProgrammersManual.rst Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/ProgrammersManual.rst Tue May 2 18:30:13 2017 (r317683) @@ -776,22 +776,21 @@ readability. Using cantFail to simplify safe callsites """"""""""""""""""""""""""""""""""""""""" -Some functions may only fail for a subset of their inputs. For such functions -call-sites using known-safe inputs can assume that the result will be a success -value. +Some functions may only fail for a subset of their inputs, so calls using known +safe inputs can be assumed to succeed. The cantFail functions encapsulate this by wrapping an assertion that their argument is a success value and, in the case of Expected, unwrapping the -T value from the Expected argument: +T value: .. code-block:: c++ - Error mayFail(int X); - Expected mayFail2(int X); + Error onlyFailsForSomeXValues(int X); + Expected onlyFailsForSomeXValues2(int X); void foo() { - cantFail(mayFail(KnownSafeValue)); - int Y = cantFail(mayFail2(KnownSafeValue)); + cantFail(onlyFailsForSomeXValues(KnownSafeValue)); + int Y = cantFail(onlyFailsForSomeXValues2(KnownSafeValue)); ... } @@ -801,8 +800,8 @@ terminate the program on an error input, is success. In debug builds this will result in an assertion failure if an error is encountered. In release builds the behavior of cantFail for failure values is undefined. As such, care must be taken in the use of cantFail: clients must be -certain that a cantFail wrapped call really can not fail under any -circumstances. +certain that a cantFail wrapped call really can not fail with the given +arguments. Use of the cantFail functions should be rare in library code, but they are likely to be of more use in tool and unit-test code where inputs and/or Modified: vendor/llvm/dist/docs/README.txt ============================================================================== --- vendor/llvm/dist/docs/README.txt Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/README.txt Tue May 2 18:30:13 2017 (r317683) @@ -51,3 +51,18 @@ running: cd docs/ make -f Makefile.sphinx linkcheck + +Doxygen page Output +============== + +Install doxygen and dot2tex . + + cd + cmake -DLLVM_ENABLE_DOXYGEN=On + make doxygen-llvm # for LLVM docs + make doxygen-clang # for clang docs + +It will generate html in + + /docs/doxygen/html # for LLVM docs + /tools/clang/docs/doxygen/html # for clang docs Modified: vendor/llvm/dist/docs/StackMaps.rst ============================================================================== --- vendor/llvm/dist/docs/StackMaps.rst Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/StackMaps.rst Tue May 2 18:30:13 2017 (r317683) @@ -319,7 +319,7 @@ format of this section follows: .. code-block:: none Header { - uint8 : Stack Map Version (current version is 2) + uint8 : Stack Map Version (current version is 3) uint8 : Reserved (expected to be 0) uint16 : Reserved (expected to be 0) } @@ -341,10 +341,13 @@ format of this section follows: uint16 : NumLocations Location[NumLocations] { uint8 : Register | Direct | Indirect | Constant | ConstantIndex - uint8 : Reserved (location flags) + uint8 : Reserved (expected to be 0) + uint16 : Location Size uint16 : Dwarf RegNum + uint16 : Reserved (expected to be 0) int32 : Offset or SmallConstant } + uint32 : Padding (only if required to align to 8 byte) uint16 : Padding uint16 : NumLiveOuts LiveOuts[NumLiveOuts] Modified: vendor/llvm/dist/docs/TableGen/LangIntro.rst ============================================================================== --- vendor/llvm/dist/docs/TableGen/LangIntro.rst Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/TableGen/LangIntro.rst Tue May 2 18:30:13 2017 (r317683) @@ -58,6 +58,10 @@ types are: The 'string' type represents an ordered sequence of characters of arbitrary length. +``code`` + The `code` type represents a code fragment, which can be single/multi-line + string literal. + ``bits`` A 'bits' type is an arbitrary, but fixed, size integer that is broken up into individual bits. This type is useful because it can handle some bits @@ -105,7 +109,7 @@ supported include: hexadecimal integer value ``"foo"`` - string value + a single-line string value, can be assigned to ``string`` or ``code`` variable. ``[{ ... }]`` usually called a "code fragment", but is just a multiline string literal @@ -126,7 +130,8 @@ supported include: access to one bit of a value ``value{15-17}`` - access to multiple bits of a value + access to an ordered sequence of bits of a value, in particular ``value{15-17}`` + produces an order that is the reverse of ``value{17-15}``. ``DEF`` reference to a record definition Modified: vendor/llvm/dist/docs/doxygen.cfg.in ============================================================================== --- vendor/llvm/dist/docs/doxygen.cfg.in Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/docs/doxygen.cfg.in Tue May 2 18:30:13 2017 (r317683) @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = @abs_top_builddir@/docs/doxygen +OUTPUT_DIRECTORY = @abs_top_builddir@/doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -132,7 +132,7 @@ INLINE_INHERITED_MEMB = NO # shortest path that makes the file name unique will be used # The default value is: YES. -FULL_PATH_NAMES = NO +FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand @@ -144,7 +144,7 @@ FULL_PATH_NAMES = NO # will be relative from the directory where doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. -STRIP_FROM_PATH = ../.. +STRIP_FROM_PATH = @abs_top_srcdir@/.. # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the # path mentioned in the documentation of a class, which tells the reader which @@ -153,7 +153,8 @@ STRIP_FROM_PATH = ../.. # specify the list of include paths that are normally passed to the compiler # using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = @abs_top_srcdir@/../include +STRIP_FROM_INC_PATH += @abs_top_srcdir@/../lib # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't @@ -513,7 +514,7 @@ SHOW_GROUPED_MEMB_INC = NO # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. -FORCE_LOCAL_INCLUDES = NO +FORCE_LOCAL_INCLUDES = YES # If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the # documentation for inline members. @@ -743,9 +744,9 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = @abs_top_srcdir@/include \ - @abs_top_srcdir@/lib \ - @abs_top_srcdir@/docs/doxygen-mainpage.dox +INPUT = @abs_top_srcdir@/../include \ + @abs_top_srcdir@/../lib \ + @abs_top_srcdir@/doxygen-mainpage.dox # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -813,7 +814,7 @@ EXCLUDE_SYMBOLS = # that contain example code fragments that are included (see the \include # command). -EXAMPLE_PATH = @abs_top_srcdir@/examples +EXAMPLE_PATH = @abs_top_srcdir@/../examples # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and @@ -833,7 +834,7 @@ EXAMPLE_RECURSIVE = YES # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = @abs_top_srcdir@/docs/img +IMAGE_PATH = @abs_top_srcdir@/img # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program Modified: vendor/llvm/dist/include/llvm/ADT/APInt.h ============================================================================== --- vendor/llvm/dist/include/llvm/ADT/APInt.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/ADT/APInt.h Tue May 2 18:30:13 2017 (r317683) @@ -366,7 +366,7 @@ public: /// that 0 is not a positive value. /// /// \returns true if this APInt is positive. - bool isStrictlyPositive() const { return isNonNegative() && !!*this; } + bool isStrictlyPositive() const { return isNonNegative() && !isNullValue(); } /// \brief Determine if all bits are set /// @@ -377,6 +377,12 @@ public: return countPopulationSlowCase() == BitWidth; } + /// \brief Determine if all bits are clear + /// + /// This checks to see if the value has all bits of the APInt are clear or + /// not. + bool isNullValue() const { return !*this; } + /// \brief Determine if this is the largest unsigned value. /// /// This checks to see if the value of this APInt is the maximum unsigned @@ -395,7 +401,7 @@ public: /// /// This checks to see if the value of this APInt is the minimum unsigned /// value for the APInt's bit width. - bool isMinValue() const { return !*this; } + bool isMinValue() const { return isNullValue(); } /// \brief Determine if this is the smallest signed value. /// @@ -611,15 +617,7 @@ public: } /// \brief Return a value containing V broadcasted over NewLen bits. - static APInt getSplat(unsigned NewLen, const APInt &V) { - assert(NewLen >= V.getBitWidth() && "Can't splat to smaller bit width!"); - - APInt Val = V.zextOrSelf(NewLen); - for (unsigned I = V.getBitWidth(); I < NewLen; I <<= 1) - Val |= Val << I; - - return Val; - } + static APInt getSplat(unsigned NewLen, const APInt &V); /// \brief Determine if two APInts have the same value, after zero-extending /// one of them (if needed!) to ensure that the bit-widths match. @@ -687,7 +685,9 @@ public: /// /// \returns true if *this is zero, false otherwise. bool operator!() const { - return *this == 0; + if (isSingleWord()) + return VAL == 0; + return countLeadingZerosSlowCase() == BitWidth; } /// @} @@ -874,6 +874,13 @@ public: return *this; } + /// \brief Left-shift assignment function. + /// + /// Shifts *this left by shiftAmt and assigns the result to *this. + /// + /// \returns *this after shifting left by ShiftAmt + APInt &operator<<=(const APInt &ShiftAmt); + /// @} /// \name Binary Operators /// @{ @@ -981,7 +988,11 @@ public: /// \brief Left-shift function. /// /// Left-shift this APInt by shiftAmt. - APInt shl(const APInt &shiftAmt) const; + APInt shl(const APInt &ShiftAmt) const { + APInt R(*this); + R <<= ShiftAmt; + return R; + } /// \brief Rotate left by rotateAmt. APInt rotl(const APInt &rotateAmt) const; @@ -1333,7 +1344,14 @@ public: /// \brief Set a given bit to 1. /// /// Set the given bit to 1 whose position is given as "bitPosition". - void setBit(unsigned bitPosition); + void setBit(unsigned BitPosition) { + assert(BitPosition <= BitWidth && "BitPosition out of range"); + WordType Mask = maskBit(BitPosition); + if (isSingleWord()) + VAL |= Mask; + else + pVal[whichWord(BitPosition)] |= Mask; + } /// Set the sign bit to 1. void setSignBit() { @@ -1344,13 +1362,9 @@ public: void setBits(unsigned loBit, unsigned hiBit) { assert(hiBit <= BitWidth && "hiBit out of range"); assert(loBit <= BitWidth && "loBit out of range"); + assert(loBit <= hiBit && "loBit greater than hiBit"); if (loBit == hiBit) return; - if (loBit > hiBit) { - setLowBits(hiBit); - setHighBits(BitWidth - loBit); - return; - } if (loBit < APINT_BITS_PER_WORD && hiBit <= APINT_BITS_PER_WORD) { uint64_t mask = WORD_MAX >> (APINT_BITS_PER_WORD - (hiBit - loBit)); mask <<= loBit; @@ -1389,7 +1403,19 @@ public: /// \brief Set a given bit to 0. /// /// Set the given bit to 0 whose position is given as "bitPosition". - void clearBit(unsigned bitPosition); + void clearBit(unsigned BitPosition) { + assert(BitPosition <= BitWidth && "BitPosition out of range"); + WordType Mask = ~maskBit(BitPosition); + if (isSingleWord()) + VAL &= Mask; + else + pVal[whichWord(BitPosition)] &= Mask; + } + + /// Set the sign bit to 0. + void clearSignBit() { + clearBit(BitWidth - 1); + } /// \brief Toggle every bit to its opposite value. void flipAllBits() { @@ -1695,7 +1721,7 @@ public: return VAL - 1; // Handle the zero case. - if (!getBoolValue()) + if (isNullValue()) return UINT32_MAX; // The non-zero case is handled by computing: Modified: vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/AssumptionCache.h Tue May 2 18:30:13 2017 (r317683) @@ -43,7 +43,7 @@ class AssumptionCache { /// \brief Vector of weak value handles to calls of the @llvm.assume /// intrinsic. - SmallVector AssumeHandles; + SmallVector AssumeHandles; class AffectedValueCallbackVH final : public CallbackVH { AssumptionCache *AC; @@ -62,12 +62,12 @@ class AssumptionCache { /// \brief A map of values about which an assumption might be providing /// information to the relevant set of assumptions. using AffectedValuesMap = - DenseMap, - AffectedValueCallbackVH::DMI>; + DenseMap, + AffectedValueCallbackVH::DMI>; AffectedValuesMap AffectedValues; /// Get the vector of assumptions which affect a value from the cache. - SmallVector &getOrInsertAffectedValues(Value *V); + SmallVector &getOrInsertAffectedValues(Value *V); /// Copy affected values in the cache for OV to be affected values for NV. void copyAffectedValuesInCache(Value *OV, Value *NV); @@ -120,20 +120,20 @@ public: /// FIXME: We should replace this with pointee_iterator> /// when we can write that to filter out the null values. Then caller code /// will become simpler. - MutableArrayRef assumptions() { + MutableArrayRef assumptions() { if (!Scanned) scanFunction(); return AssumeHandles; } /// \brief Access the list of assumptions which affect this value. - MutableArrayRef assumptionsFor(const Value *V) { + MutableArrayRef assumptionsFor(const Value *V) { if (!Scanned) scanFunction(); auto AVI = AffectedValues.find_as(const_cast(V)); if (AVI == AffectedValues.end()) - return MutableArrayRef(); + return MutableArrayRef(); return AVI->second; } Modified: vendor/llvm/dist/include/llvm/Analysis/CGSCCPassManager.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/CGSCCPassManager.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/CGSCCPassManager.h Tue May 2 18:30:13 2017 (r317683) @@ -646,7 +646,7 @@ public: LazyCallGraph::SCC *C = &InitialC; // Collect value handles for all of the indirect call sites. - SmallVector CallHandles; + SmallVector CallHandles; // Struct to track the counts of direct and indirect calls in each function // of the SCC. @@ -658,7 +658,7 @@ public: // Put value handles on all of the indirect calls and return the number of // direct calls for each function in the SCC. auto ScanSCC = [](LazyCallGraph::SCC &C, - SmallVectorImpl &CallHandles) { + SmallVectorImpl &CallHandles) { assert(CallHandles.empty() && "Must start with a clear set of handles."); SmallVector CallCounts; @@ -671,7 +671,7 @@ public: ++Count.Direct; } else { ++Count.Indirect; - CallHandles.push_back(WeakVH(&I)); + CallHandles.push_back(WeakTrackingVH(&I)); } } } @@ -699,7 +699,7 @@ public: "Cannot have changed the size of the SCC!"); // Check whether any of the handles were devirtualized. - auto IsDevirtualizedHandle = [&](WeakVH &CallH) { + auto IsDevirtualizedHandle = [&](WeakTrackingVH &CallH) { if (!CallH) return false; auto CS = CallSite(CallH); Modified: vendor/llvm/dist/include/llvm/Analysis/CallGraph.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/CallGraph.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/CallGraph.h Tue May 2 18:30:13 2017 (r317683) @@ -172,7 +172,7 @@ class CallGraphNode { public: /// \brief A pair of the calling instruction (a call or invoke) /// and the call graph node being called. - typedef std::pair CallRecord; + typedef std::pair CallRecord; public: typedef std::vector CalledFunctionsVector; Modified: vendor/llvm/dist/include/llvm/Analysis/IVUsers.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/IVUsers.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/IVUsers.h Tue May 2 18:30:13 2017 (r317683) @@ -80,7 +80,7 @@ private: /// OperandValToReplace - The Value of the operand in the user instruction /// that this IVStrideUse is representing. - WeakVH OperandValToReplace; + WeakTrackingVH OperandValToReplace; /// PostIncLoops - The set of loops for which Expr has been adjusted to /// use post-inc mode. This corresponds with SCEVExpander's post-inc concept. Modified: vendor/llvm/dist/include/llvm/Analysis/InlineCost.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/InlineCost.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/InlineCost.h Tue May 2 18:30:13 2017 (r317683) @@ -160,6 +160,10 @@ InlineParams getInlineParams(int Thresho /// the -Oz flag. InlineParams getInlineParams(unsigned OptLevel, unsigned SizeOptLevel); +/// Return the cost associated with a callsite, including paramater passing +/// and the call/return instruction. +int getCallsiteCost(CallSite CS, const DataLayout &DL); + /// \brief Get an InlineCost object representing the cost of inlining this /// callsite. /// Modified: vendor/llvm/dist/include/llvm/Analysis/InstructionSimplify.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/InstructionSimplify.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/InstructionSimplify.h Tue May 2 18:30:13 2017 (r317683) @@ -35,35 +35,41 @@ #include "llvm/IR/User.h" namespace llvm { - template - class ArrayRef; - class AssumptionCache; - class DominatorTree; - class Instruction; - class DataLayout; - class FastMathFlags; - class OptimizationRemarkEmitter; - class TargetLibraryInfo; - class Type; - class Value; - - struct SimplifyQuery { - const DataLayout &DL; - const TargetLibraryInfo *TLI = nullptr; - const DominatorTree *DT = nullptr; - AssumptionCache *AC = nullptr; - const Instruction *CxtI = nullptr; - SimplifyQuery(const DataLayout &DL) : DL(DL) {} - - SimplifyQuery(const DataLayout &DL, const TargetLibraryInfo *TLI, - const DominatorTree *DT, AssumptionCache *AC = nullptr, - const Instruction *CXTI = nullptr) - : DL(DL), TLI(TLI), DT(DT), AC(AC), CxtI(CXTI) {} - SimplifyQuery getWithInstruction(Instruction *I) const { - SimplifyQuery Copy(*this); - Copy.CxtI = I; - return Copy; - } +class Function; +template class AnalysisManager; +template class ArrayRef; +class AssumptionCache; +class DominatorTree; +class Instruction; +class DataLayout; +class FastMathFlags; +struct LoopStandardAnalysisResults; +class OptimizationRemarkEmitter; +class Pass; +class TargetLibraryInfo; +class Type; +class Value; + +struct SimplifyQuery { + const DataLayout &DL; + const TargetLibraryInfo *TLI = nullptr; + const DominatorTree *DT = nullptr; + AssumptionCache *AC = nullptr; + const Instruction *CxtI = nullptr; + + SimplifyQuery(const DataLayout &DL, const Instruction *CXTI = nullptr) + : DL(DL), CxtI(CXTI) {} + + SimplifyQuery(const DataLayout &DL, const TargetLibraryInfo *TLI, + const DominatorTree *DT = nullptr, + AssumptionCache *AC = nullptr, + const Instruction *CXTI = nullptr) + : DL(DL), TLI(TLI), DT(DT), AC(AC), CxtI(CXTI) {} + SimplifyQuery getWithInstruction(Instruction *I) const { + SimplifyQuery Copy(*this); + Copy.CxtI = I; + return Copy; + } }; // NOTE: the explicit multiple argument versions of these functions are @@ -73,257 +79,103 @@ namespace llvm { /// Given operands for an Add, fold the result or return null. Value *SimplifyAddInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW, const SimplifyQuery &Q); - Value *SimplifyAddInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a Sub, fold the result or return null. Value *SimplifySubInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW, const SimplifyQuery &Q); - Value *SimplifySubInst(Value *LHS, Value *RHS, bool isNSW, bool isNUW, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FAdd, fold the result or return null. Value *SimplifyFAddInst(Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFAddInst(Value *LHS, Value *RHS, FastMathFlags FMF, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FSub, fold the result or return null. Value *SimplifyFSubInst(Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFSubInst(Value *LHS, Value *RHS, FastMathFlags FMF, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FMul, fold the result or return null. Value *SimplifyFMulInst(Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFMulInst(Value *LHS, Value *RHS, FastMathFlags FMF, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a Mul, fold the result or return null. Value *SimplifyMulInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyMulInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an SDiv, fold the result or return null. Value *SimplifySDivInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifySDivInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a UDiv, fold the result or return null. Value *SimplifyUDivInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyUDivInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FDiv, fold the result or return null. Value *SimplifyFDivInst(Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFDivInst(Value *LHS, Value *RHS, FastMathFlags FMF, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an SRem, fold the result or return null. Value *SimplifySRemInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifySRemInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a URem, fold the result or return null. Value *SimplifyURemInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyURemInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FRem, fold the result or return null. Value *SimplifyFRemInst(Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFRemInst(Value *LHS, Value *RHS, FastMathFlags FMF, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a Shl, fold the result or return null. Value *SimplifyShlInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW, const SimplifyQuery &Q); - Value *SimplifyShlInst(Value *Op0, Value *Op1, bool isNSW, bool isNUW, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a LShr, fold the result or return null. Value *SimplifyLShrInst(Value *Op0, Value *Op1, bool isExact, const SimplifyQuery &Q); - Value *SimplifyLShrInst(Value *Op0, Value *Op1, bool isExact, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a AShr, fold the result or return nulll. Value *SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact, const SimplifyQuery &Q); - Value *SimplifyAShrInst(Value *Op0, Value *Op1, bool isExact, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an And, fold the result or return null. Value *SimplifyAndInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyAndInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an Or, fold the result or return null. Value *SimplifyOrInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyOrInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an Xor, fold the result or return null. Value *SimplifyXorInst(Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyXorInst(Value *LHS, Value *RHS, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an ICmpInst, fold the result or return null. Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FCmpInst, fold the result or return null. Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFCmpInst(unsigned Predicate, Value *LHS, Value *RHS, - FastMathFlags FMF, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a SelectInst, fold the result or return null. Value *SimplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal, const SimplifyQuery &Q); - Value *SimplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a GetElementPtrInst, fold the result or return null. Value *SimplifyGEPInst(Type *SrcTy, ArrayRef Ops, const SimplifyQuery &Q); - Value *SimplifyGEPInst(Type *SrcTy, ArrayRef Ops, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an InsertValueInst, fold the result or return null. Value *SimplifyInsertValueInst(Value *Agg, Value *Val, ArrayRef Idxs, const SimplifyQuery &Q); - Value *SimplifyInsertValueInst(Value *Agg, Value *Val, - ArrayRef Idxs, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an ExtractValueInst, fold the result or return null. Value *SimplifyExtractValueInst(Value *Agg, ArrayRef Idxs, const SimplifyQuery &Q); - Value *SimplifyExtractValueInst(Value *Agg, ArrayRef Idxs, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an ExtractElementInst, fold the result or return null. Value *SimplifyExtractElementInst(Value *Vec, Value *Idx, const SimplifyQuery &Q); - Value *SimplifyExtractElementInst(Value *Vec, Value *Idx, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a CastInst, fold the result or return null. Value *SimplifyCastInst(unsigned CastOpc, Value *Op, Type *Ty, const SimplifyQuery &Q); - Value *SimplifyCastInst(unsigned CastOpc, Value *Op, Type *Ty, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a ShuffleVectorInst, fold the result or return null. Value *SimplifyShuffleVectorInst(Value *Op0, Value *Op1, Constant *Mask, Type *RetTy, const SimplifyQuery &Q); - Value *SimplifyShuffleVectorInst(Value *Op0, Value *Op1, Constant *Mask, - Type *RetTy, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); //=== Helper functions for higher up the class hierarchy. @@ -331,63 +183,29 @@ namespace llvm { /// Given operands for a CmpInst, fold the result or return null. Value *SimplifyCmpInst(unsigned Predicate, Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyCmpInst(unsigned Predicate, Value *LHS, Value *RHS, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for a BinaryOperator, fold the result or return null. Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS, const SimplifyQuery &Q); - Value *SimplifyBinOp(unsigned Opcode, Value *LHS, Value *RHS, - const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given operands for an FP BinaryOperator, fold the result or return null. /// In contrast to SimplifyBinOp, try to use FastMathFlag when folding the /// result. In case we don't need FastMathFlags, simply fall to SimplifyBinOp. Value *SimplifyFPBinOp(unsigned Opcode, Value *LHS, Value *RHS, FastMathFlags FMF, const SimplifyQuery &Q); - Value *SimplifyFPBinOp(unsigned Opcode, Value *LHS, Value *RHS, - FastMathFlags FMF, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given a function and iterators over arguments, fold the result or return /// null. Value *SimplifyCall(Value *V, User::op_iterator ArgBegin, User::op_iterator ArgEnd, const SimplifyQuery &Q); - Value *SimplifyCall(Value *V, User::op_iterator ArgBegin, - User::op_iterator ArgEnd, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// Given a function and set of arguments, fold the result or return null. Value *SimplifyCall(Value *V, ArrayRef Args, const SimplifyQuery &Q); - Value *SimplifyCall(Value *V, ArrayRef Args, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - const Instruction *CxtI = nullptr); /// See if we can compute a simplified version of this instruction. If not, /// return null. Value *SimplifyInstruction(Instruction *I, const SimplifyQuery &Q, OptimizationRemarkEmitter *ORE = nullptr); - Value *SimplifyInstruction(Instruction *I, const DataLayout &DL, - const TargetLibraryInfo *TLI = nullptr, - const DominatorTree *DT = nullptr, - AssumptionCache *AC = nullptr, - OptimizationRemarkEmitter *ORE = nullptr); /// Replace all uses of 'I' with 'SimpleV' and simplify the uses recursively. /// @@ -411,6 +229,15 @@ namespace llvm { const TargetLibraryInfo *TLI = nullptr, const DominatorTree *DT = nullptr, AssumptionCache *AC = nullptr); + // These helper functions return a SimplifyQuery structure that contains as + // many of the optional analysis we use as are currently valid. This is the + // strongly preferred way of constructing SimplifyQuery in passes. + const SimplifyQuery getBestSimplifyQuery(Pass &, Function &); + template + const SimplifyQuery getBestSimplifyQuery(AnalysisManager &, + Function &); + const SimplifyQuery getBestSimplifyQuery(LoopStandardAnalysisResults &, + const DataLayout &); } // end namespace llvm #endif Modified: vendor/llvm/dist/include/llvm/Analysis/MemoryBuiltins.h ============================================================================== --- vendor/llvm/dist/include/llvm/Analysis/MemoryBuiltins.h Tue May 2 17:16:24 2017 (r317682) +++ vendor/llvm/dist/include/llvm/Analysis/MemoryBuiltins.h Tue May 2 18:30:13 2017 (r317683) @@ -235,7 +235,7 @@ class ObjectSizeOffsetEvaluator *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Tue May 2 18:30:49 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 4DFD6D5BD23; Tue, 2 May 2017 18:30:49 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 05C7E26C; Tue, 2 May 2017 18:30:48 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IUme5000866; Tue, 2 May 2017 18:30:48 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IUkVx000848; Tue, 2 May 2017 18:30:46 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021830.v42IUkVx000848@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:30:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317685 - in vendor/clang/dist: docs include/clang-c include/clang/AST include/clang/Basic include/clang/CodeGen include/clang/Driver include/clang/Edit include/clang/Frontend include/c... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:30:49 -0000 Author: dim Date: Tue May 2 18:30:45 2017 New Revision: 317685 URL: https://svnweb.freebsd.org/changeset/base/317685 Log: Vendor import of clang trunk r301939: https://llvm.org/svn/llvm-project/cfe/trunk@301939 Added: vendor/clang/dist/include/clang/AST/ASTStructuralEquivalence.h (contents, props changed) vendor/clang/dist/lib/AST/ASTStructuralEquivalence.cpp (contents, props changed) vendor/clang/dist/test/ARCMT/remap-applying.c (contents, props changed) vendor/clang/dist/test/ARCMT/remap-applying.c.result vendor/clang/dist/test/CodeGenCXX/attr-x86-no_caller_saved_registers.cpp (contents, props changed) vendor/clang/dist/test/CodeGenCXX/ubsan-nullability-assign.cpp (contents, props changed) vendor/clang/dist/test/CodeGenObjCXX/boxing.mm vendor/clang/dist/test/Frontend/Inputs/empty.h (contents, props changed) vendor/clang/dist/test/Headers/stdint-typeof-MINMAX.cpp (contents, props changed) vendor/clang/dist/test/Import/in-class-initializer/ vendor/clang/dist/test/Import/in-class-initializer/Inputs/ vendor/clang/dist/test/Import/in-class-initializer/Inputs/S.cpp (contents, props changed) vendor/clang/dist/test/Import/in-class-initializer/test.cpp (contents, props changed) vendor/clang/dist/test/Index/allow-editor-placeholders.cpp (contents, props changed) vendor/clang/dist/test/Index/target-info.c (contents, props changed) vendor/clang/dist/test/Modules/Inputs/diag_flags.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/ vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/ vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Headers/ vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Headers/Bar.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Headers/FooPublic.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Modules/ vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Modules/module.modulemap vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/Modules/module.private.modulemap vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/PrivateHeaders/ vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/PrivateHeaders/Baz.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/incomplete-umbrella/Foo.framework/PrivateHeaders/Foo.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/malformed-overload/ vendor/clang/dist/test/Modules/Inputs/malformed-overload/X.h (contents, props changed) vendor/clang/dist/test/Modules/Inputs/malformed-overload/module.modulemap vendor/clang/dist/test/Modules/diag-flags.cpp (contents, props changed) vendor/clang/dist/test/Modules/import-syntax.c (contents, props changed) vendor/clang/dist/test/Modules/incomplete-umbrella.m vendor/clang/dist/test/Modules/malformed-overload.m vendor/clang/dist/test/Modules/preprocess-module.cpp (contents, props changed) vendor/clang/dist/test/Preprocessor/Inputs/nonportable-hmaps/ vendor/clang/dist/test/Preprocessor/Inputs/nonportable-hmaps/foo.hmap (contents, props changed) vendor/clang/dist/test/Preprocessor/Inputs/nonportable-hmaps/headers/ vendor/clang/dist/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/ vendor/clang/dist/test/Preprocessor/Inputs/nonportable-hmaps/headers/foo/Foo.h (contents, props changed) vendor/clang/dist/test/Preprocessor/nonportable-include-with-hmap.c (contents, props changed) vendor/clang/dist/test/Preprocessor/pragma_module.c (contents, props changed) vendor/clang/dist/test/SemaCXX/attr-non-x86-no_caller_saved_registers.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/attr-x86-no_caller_saved_registers.cpp (contents, props changed) vendor/clang/dist/test/SemaCXX/constexpr-array-unknown-bound.cpp (contents, props changed) vendor/clang/dist/test/SemaObjC/x86-method-vector-values.m Deleted: vendor/clang/dist/test/Frontend/Rewriter/ Modified: vendor/clang/dist/docs/SanitizerCoverage.rst vendor/clang/dist/include/clang-c/Index.h vendor/clang/dist/include/clang/AST/DeclBase.h vendor/clang/dist/include/clang/AST/Type.h vendor/clang/dist/include/clang/Basic/Attr.td vendor/clang/dist/include/clang/Basic/AttrDocs.td vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Basic/LangOptions.def vendor/clang/dist/include/clang/CodeGen/CGFunctionInfo.h vendor/clang/dist/include/clang/Driver/CLCompatOptions.td vendor/clang/dist/include/clang/Edit/EditedSource.h vendor/clang/dist/include/clang/Frontend/FrontendActions.h vendor/clang/dist/include/clang/Frontend/FrontendOptions.h vendor/clang/dist/include/clang/Frontend/LangStandard.h vendor/clang/dist/include/clang/Frontend/LangStandards.def vendor/clang/dist/include/clang/Lex/HeaderSearch.h vendor/clang/dist/include/clang/Lex/MacroInfo.h vendor/clang/dist/include/clang/Lex/PPCallbacks.h vendor/clang/dist/include/clang/Lex/PreprocessingRecord.h vendor/clang/dist/include/clang/Lex/Preprocessor.h vendor/clang/dist/include/clang/Sema/Sema.h vendor/clang/dist/lib/ARCMigrate/ObjCMT.cpp vendor/clang/dist/lib/AST/ASTContext.cpp vendor/clang/dist/lib/AST/ASTImporter.cpp vendor/clang/dist/lib/AST/CMakeLists.txt vendor/clang/dist/lib/AST/DeclBase.cpp vendor/clang/dist/lib/AST/ExprConstant.cpp vendor/clang/dist/lib/AST/TypePrinter.cpp vendor/clang/dist/lib/Basic/Targets.cpp vendor/clang/dist/lib/CodeGen/BackendUtil.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.cpp vendor/clang/dist/lib/CodeGen/CGCall.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGExpr.cpp vendor/clang/dist/lib/CodeGen/CGObjC.cpp vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp vendor/clang/dist/lib/CodeGen/CGStmtOpenMP.cpp vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.h vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/CodeGen/MacroPPCallbacks.cpp vendor/clang/dist/lib/CodeGen/MacroPPCallbacks.h vendor/clang/dist/lib/Driver/Job.cpp vendor/clang/dist/lib/Driver/ToolChains/Clang.cpp vendor/clang/dist/lib/Edit/EditedSource.cpp vendor/clang/dist/lib/Format/UnwrappedLineParser.cpp vendor/clang/dist/lib/Frontend/ASTUnit.cpp vendor/clang/dist/lib/Frontend/CompilerInstance.cpp vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp vendor/clang/dist/lib/Frontend/FrontendAction.cpp vendor/clang/dist/lib/Frontend/FrontendActions.cpp vendor/clang/dist/lib/Frontend/FrontendOptions.cpp vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp vendor/clang/dist/lib/Frontend/LangStandards.cpp vendor/clang/dist/lib/Frontend/PrintPreprocessedOutput.cpp vendor/clang/dist/lib/Frontend/Rewrite/InclusionRewriter.cpp vendor/clang/dist/lib/Frontend/VerifyDiagnosticConsumer.cpp vendor/clang/dist/lib/Headers/avx512fintrin.h vendor/clang/dist/lib/Headers/avxintrin.h vendor/clang/dist/lib/Headers/bmiintrin.h vendor/clang/dist/lib/Headers/emmintrin.h vendor/clang/dist/lib/Headers/stdint.h vendor/clang/dist/lib/Index/IndexDecl.cpp vendor/clang/dist/lib/Index/USRGeneration.cpp vendor/clang/dist/lib/Lex/HeaderSearch.cpp vendor/clang/dist/lib/Lex/MacroInfo.cpp vendor/clang/dist/lib/Lex/PPDirectives.cpp vendor/clang/dist/lib/Lex/PPLexerChange.cpp vendor/clang/dist/lib/Lex/PPMacroExpansion.cpp vendor/clang/dist/lib/Lex/Pragma.cpp vendor/clang/dist/lib/Lex/PreprocessingRecord.cpp vendor/clang/dist/lib/Sema/SemaChecking.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp vendor/clang/dist/lib/Sema/SemaExprObjC.cpp vendor/clang/dist/lib/Sema/SemaOpenMP.cpp vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaType.cpp vendor/clang/dist/lib/Serialization/ASTReader.cpp vendor/clang/dist/lib/Serialization/ASTWriter.cpp vendor/clang/dist/lib/StaticAnalyzer/Checkers/MallocChecker.cpp vendor/clang/dist/lib/StaticAnalyzer/Frontend/ModelInjector.cpp vendor/clang/dist/test/Analysis/malloc.c vendor/clang/dist/test/CodeGen/atomic-ops-libcall.c vendor/clang/dist/test/CodeGen/avx-builtins.c vendor/clang/dist/test/CodeGen/avx512f-builtins.c vendor/clang/dist/test/CodeGen/sse2-builtins.c vendor/clang/dist/test/CodeGenCXX/debug-info-namespace.cpp vendor/clang/dist/test/CodeGenObjC/arc-blocks.m vendor/clang/dist/test/CodeGenObjC/arc-foreach.m vendor/clang/dist/test/CodeGenObjC/ubsan-nullability.m vendor/clang/dist/test/Driver/cl-options.c vendor/clang/dist/test/Driver/split-debug.c vendor/clang/dist/test/Driver/unknown-std.c vendor/clang/dist/test/Driver/unknown-std.cl vendor/clang/dist/test/Driver/unknown-std.cpp vendor/clang/dist/test/Frontend/gnu-inline.c vendor/clang/dist/test/Frontend/rewrite-includes-line-markers.c vendor/clang/dist/test/Frontend/rewrite-includes-modules.c vendor/clang/dist/test/Index/Core/index-source.m vendor/clang/dist/test/Index/cursor-dynamic-call.mm vendor/clang/dist/test/Index/index-module.m vendor/clang/dist/test/Index/print-type.cpp vendor/clang/dist/test/Index/usrs.cpp vendor/clang/dist/test/Modules/ExtDebugInfo.cpp vendor/clang/dist/test/Modules/Inputs/module.map vendor/clang/dist/test/Modules/crash-vfs-path-emptydir-entries.m vendor/clang/dist/test/Modules/crash-vfs-path-symlink-component.m vendor/clang/dist/test/Modules/crash-vfs-path-symlink-topheader.m vendor/clang/dist/test/Modules/crash-vfs-path-traversal.m vendor/clang/dist/test/Modules/crash-vfs-relative-incdir.m vendor/clang/dist/test/Modules/crash-vfs-relative-overlay.m vendor/clang/dist/test/Modules/crash-vfs-run-reproducer.m vendor/clang/dist/test/Modules/odr_hash.cpp vendor/clang/dist/test/Modules/preprocess.cpp vendor/clang/dist/test/Modules/preprocess.m vendor/clang/dist/test/OpenMP/distribute_parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/distribute_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/target_parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/target_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/target_teams_distribute_parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/target_teams_distribute_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/taskloop_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/teams_distribute_parallel_for_simd_aligned_messages.cpp vendor/clang/dist/test/OpenMP/teams_distribute_simd_aligned_messages.cpp vendor/clang/dist/test/Preprocessor/init.c vendor/clang/dist/test/Preprocessor/pp-modules.c vendor/clang/dist/test/Preprocessor/pragma_diagnostic.c vendor/clang/dist/test/Preprocessor/stdint.c vendor/clang/dist/test/Profile/c-outdated-data.c vendor/clang/dist/test/Sema/integer-overflow.c vendor/clang/dist/test/SemaCXX/typo-correction.cpp vendor/clang/dist/tools/c-index-test/c-index-test.c vendor/clang/dist/tools/libclang/CIndex.cpp vendor/clang/dist/tools/libclang/CXCursor.cpp vendor/clang/dist/tools/libclang/CXTranslationUnit.h vendor/clang/dist/tools/libclang/CXType.cpp vendor/clang/dist/tools/libclang/Indexing.cpp vendor/clang/dist/tools/libclang/libclang.exports vendor/clang/dist/unittests/Basic/SourceManagerTest.cpp vendor/clang/dist/unittests/Format/FormatTestJS.cpp vendor/clang/dist/unittests/Frontend/CodeGenActionTest.cpp vendor/clang/dist/unittests/Frontend/FrontendActionTest.cpp vendor/clang/dist/utils/TableGen/ClangAttrEmitter.cpp Modified: vendor/clang/dist/docs/SanitizerCoverage.rst ============================================================================== --- vendor/clang/dist/docs/SanitizerCoverage.rst Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/docs/SanitizerCoverage.rst Tue May 2 18:30:45 2017 (r317685) @@ -8,202 +8,12 @@ SanitizerCoverage Introduction ============ -Sanitizer tools have a very simple code coverage tool built in. It allows to -get function-level, basic-block-level, and edge-level coverage at a very low -cost. - -How to build and run -==================== - -SanitizerCoverage can be used with :doc:`AddressSanitizer`, -:doc:`LeakSanitizer`, :doc:`MemorySanitizer`, -UndefinedBehaviorSanitizer, or without any sanitizer. Pass one of the -following compile-time flags: - -* ``-fsanitize-coverage=func`` for function-level coverage (very fast). -* ``-fsanitize-coverage=bb`` for basic-block-level coverage (may add up to 30% - **extra** slowdown). -* ``-fsanitize-coverage=edge`` for edge-level coverage (up to 40% slowdown). - -At run time, pass ``coverage=1`` in ``ASAN_OPTIONS``, -``LSAN_OPTIONS``, ``MSAN_OPTIONS`` or ``UBSAN_OPTIONS``, as -appropriate. For the standalone coverage mode, use ``UBSAN_OPTIONS``. - -Example: - -.. code-block:: console - - % cat -n cov.cc - 1 #include - 2 __attribute__((noinline)) - 3 void foo() { printf("foo\n"); } - 4 - 5 int main(int argc, char **argv) { - 6 if (argc == 2) - 7 foo(); - 8 printf("main\n"); - 9 } - % clang++ -g cov.cc -fsanitize=address -fsanitize-coverage=func - % ASAN_OPTIONS=coverage=1 ./a.out; ls -l *sancov - main - -rw-r----- 1 kcc eng 4 Nov 27 12:21 a.out.22673.sancov - % ASAN_OPTIONS=coverage=1 ./a.out foo ; ls -l *sancov - foo - main - -rw-r----- 1 kcc eng 4 Nov 27 12:21 a.out.22673.sancov - -rw-r----- 1 kcc eng 8 Nov 27 12:21 a.out.22679.sancov - -Every time you run an executable instrumented with SanitizerCoverage -one ``*.sancov`` file is created during the process shutdown. -If the executable is dynamically linked against instrumented DSOs, -one ``*.sancov`` file will be also created for every DSO. - -Postprocessing -============== - -The format of ``*.sancov`` files is very simple: the first 8 bytes is the magic, -one of ``0xC0BFFFFFFFFFFF64`` and ``0xC0BFFFFFFFFFFF32``. The last byte of the -magic defines the size of the following offsets. The rest of the data is the -offsets in the corresponding binary/DSO that were executed during the run. - -A simple script -``$LLVM/projects/compiler-rt/lib/sanitizer_common/scripts/sancov.py`` is -provided to dump these offsets. - -.. code-block:: console - - % sancov.py print a.out.22679.sancov a.out.22673.sancov - sancov.py: read 2 PCs from a.out.22679.sancov - sancov.py: read 1 PCs from a.out.22673.sancov - sancov.py: 2 files merged; 2 PCs total - 0x465250 - 0x4652a0 - -You can then filter the output of ``sancov.py`` through ``addr2line --exe -ObjectFile`` or ``llvm-symbolizer --obj ObjectFile`` to get file names and line -numbers: - -.. code-block:: console - - % sancov.py print a.out.22679.sancov a.out.22673.sancov 2> /dev/null | llvm-symbolizer --obj a.out - cov.cc:3 - cov.cc:5 - -Sancov Tool -=========== - -A new experimental ``sancov`` tool is developed to process coverage files. -The tool is part of LLVM project and is currently supported only on Linux. -It can handle symbolization tasks autonomously without any extra support -from the environment. You need to pass .sancov files (named -``..sancov`` and paths to all corresponding binary elf files. -Sancov matches these files using module names and binaries file names. - -.. code-block:: console - - USAGE: sancov [options] (|<.sancov file>)... - - Action (required) - -print - Print coverage addresses - -covered-functions - Print all covered functions. - -not-covered-functions - Print all not covered functions. - -symbolize - Symbolizes the report. - - Options - -blacklist= - Blacklist file (sanitizer blacklist format). - -demangle - Print demangled function name. - -strip_path_prefix= - Strip this prefix from file paths in reports - - -Coverage Reports (Experimental) -================================ - -``.sancov`` files do not contain enough information to generate a source-level -coverage report. The missing information is contained -in debug info of the binary. Thus the ``.sancov`` has to be symbolized -to produce a ``.symcov`` file first: - -.. code-block:: console - - sancov -symbolize my_program.123.sancov my_program > my_program.123.symcov - -The ``.symcov`` file can be browsed overlayed over the source code by -running ``tools/sancov/coverage-report-server.py`` script that will start -an HTTP server. - - -How good is the coverage? -========================= - -It is possible to find out which PCs are not covered, by subtracting the covered -set from the set of all instrumented PCs. The latter can be obtained by listing -all callsites of ``__sanitizer_cov()`` in the binary. On Linux, ``sancov.py`` -can do this for you. Just supply the path to binary and a list of covered PCs: - -.. code-block:: console - - % sancov.py print a.out.12345.sancov > covered.txt - sancov.py: read 2 64-bit PCs from a.out.12345.sancov - sancov.py: 1 file merged; 2 PCs total - % sancov.py missing a.out < covered.txt - sancov.py: found 3 instrumented PCs in a.out - sancov.py: read 2 PCs from stdin - sancov.py: 1 PCs missing from coverage - 0x4cc61c - -Edge coverage -============= - -Consider this code: - -.. code-block:: c++ - - void foo(int *a) { - if (a) - *a = 0; - } - -It contains 3 basic blocks, let's name them A, B, C: - -.. code-block:: none - - A - |\ - | \ - | B - | / - |/ - C - -If blocks A, B, and C are all covered we know for certain that the edges A=>B -and B=>C were executed, but we still don't know if the edge A=>C was executed. -Such edges of control flow graph are called -`critical `_. The -edge-level coverage (``-fsanitize-coverage=edge``) simply splits all critical -edges by introducing new dummy blocks and then instruments those blocks: - -.. code-block:: none - - A - |\ - | \ - D B - | / - |/ - C - -Tracing PCs -=========== - -*Experimental* feature similar to tracing basic blocks, but with a different API. -With ``-fsanitize-coverage=trace-pc`` the compiler will insert -``__sanitizer_cov_trace_pc()`` on every edge. -With an additional ``...=trace-pc,indirect-calls`` flag -``__sanitizer_cov_trace_pc_indirect(void *callee)`` will be inserted on every indirect call. -These callbacks are not implemented in the Sanitizer run-time and should be defined -by the user. So, these flags do not require the other sanitizer to be used. -This mechanism is used for fuzzing the Linux kernel (https://github.com/google/syzkaller) -and can be used with `AFL `__. +LLVM has a simple code coverage instrumentation built in (SanitizerCoverage). +It inserts calls to user-defined functions on function-, basic-block-, and edge- levels. +Default implementations of those callbacks are provided and implement +simple coverage reporting and visualization, +however if you need *just* coverage visualization you may want to use +:doc:`SourceBasedCodeCoverage ` instead. Tracing PCs with guards ======================= @@ -217,7 +27,7 @@ on every edge: Every edge will have its own `guard_variable` (uint32_t). -The compler will also insert a module constructor that will call +The compler will also insert calls to a module constructor: .. code-block:: c++ @@ -226,7 +36,7 @@ The compler will also insert a module co // more than once with the same values of start/stop. __sanitizer_cov_trace_pc_guard_init(uint32_t *start, uint32_t *stop); -With `trace-pc-guards,indirect-calls` +With an additional ``...=trace-pc,indirect-calls`` flag ``__sanitizer_cov_trace_pc_indirect(void *callee)`` will be inserted on every indirect call. The functions `__sanitizer_cov_trace_pc_*` should be defined by the user. @@ -309,6 +119,75 @@ Example: guard: 0x71bcdc 4 PC 0x4ecdc7 in main trace-pc-guard-example.cc:4:17 guard: 0x71bcd0 1 PC 0x4ecd20 in foo() trace-pc-guard-example.cc:2:14 +Tracing PCs +=========== + +With ``-fsanitize-coverage=trace-pc`` the compiler will insert +``__sanitizer_cov_trace_pc()`` on every edge. +With an additional ``...=trace-pc,indirect-calls`` flag +``__sanitizer_cov_trace_pc_indirect(void *callee)`` will be inserted on every indirect call. +These callbacks are not implemented in the Sanitizer run-time and should be defined +by the user. +This mechanism is used for fuzzing the Linux kernel +(https://github.com/google/syzkaller). + + +Instrumentation points +====================== +Sanitizer Coverage offers different levels of instrumentation. + +* ``edge`` (default): edges are instrumented (see below). +* ``bb``: basic blocks are instrumented. +* ``func``: only the entry block of every function will be instrumented. + +Use these flags together with ``trace-pc-guard`` or ``trace-pc``, +like this: ``-fsanitize-coverage=func,trace-pc-guard``. + +When ``edge`` or ``bb`` is used, some of the edges/blocks may still be left +uninstrumented if such instrumentation is considered redundant. +**TODO**: add a user-visible option to disable the optimization. + + +Edge coverage +------------- + +Consider this code: + +.. code-block:: c++ + + void foo(int *a) { + if (a) + *a = 0; + } + +It contains 3 basic blocks, let's name them A, B, C: + +.. code-block:: none + + A + |\ + | \ + | B + | / + |/ + C + +If blocks A, B, and C are all covered we know for certain that the edges A=>B +and B=>C were executed, but we still don't know if the edge A=>C was executed. +Such edges of control flow graph are called +`critical `_. The +edge-level coverage simply splits all critical +edges by introducing new dummy blocks and then instruments those blocks: + +.. code-block:: none + + A + |\ + | \ + D B + | / + |/ + C Tracing data flow ================= @@ -349,50 +228,107 @@ the `LLVM GEP instructions + 2 __attribute__((noinline)) + 3 void foo() { printf("foo\n"); } + 4 + 5 int main(int argc, char **argv) { + 6 if (argc == 2) + 7 foo(); + 8 printf("main\n"); + 9 } + % clang++ -g cov.cc -fsanitize=address -fsanitize-coverage=trace-pc-guard + % ASAN_OPTIONS=coverage=1 ./a.out; wc -c *.sancov + main + SanitizerCoverage: ./a.out.7312.sancov 2 PCs written + 24 a.out.7312.sancov + % ASAN_OPTIONS=coverage=1 ./a.out foo ; wc -c *.sancov + foo + main + SanitizerCoverage: ./a.out.7316.sancov 3 PCs written + 24 a.out.7312.sancov + 32 a.out.7316.sancov -Sudden death -============ +Every time you run an executable instrumented with SanitizerCoverage +one ``*.sancov`` file is created during the process shutdown. +If the executable is dynamically linked against instrumented DSOs, +one ``*.sancov`` file will be also created for every DSO. -Normally, coverage data is collected in memory and saved to disk when the -program exits (with an ``atexit()`` handler), when a SIGSEGV is caught, or when -``__sanitizer_cov_dump()`` is called. - -If the program ends with a signal that ASan does not handle (or can not handle -at all, like SIGKILL), coverage data will be lost. This is a big problem on -Android, where SIGKILL is a normal way of evicting applications from memory. +Sancov data format +------------------ -With ``ASAN_OPTIONS=coverage=1:coverage_direct=1`` coverage data is written to a -memory-mapped file as soon as it collected. +The format of ``*.sancov`` files is very simple: the first 8 bytes is the magic, +one of ``0xC0BFFFFFFFFFFF64`` and ``0xC0BFFFFFFFFFFF32``. The last byte of the +magic defines the size of the following offsets. The rest of the data is the +offsets in the corresponding binary/DSO that were executed during the run. + +Sancov Tool +----------- + +An simple ``sancov`` tool is provided to process coverage files. +The tool is part of LLVM project and is currently supported only on Linux. +It can handle symbolization tasks autonomously without any extra support +from the environment. You need to pass .sancov files (named +``..sancov`` and paths to all corresponding binary elf files. +Sancov matches these files using module names and binaries file names. .. code-block:: console - % ASAN_OPTIONS="coverage=1:coverage_direct=1" ./a.out - main - % ls - 7036.sancov.map 7036.sancov.raw a.out - % sancov.py rawunpack 7036.sancov.raw - sancov.py: reading map 7036.sancov.map - sancov.py: unpacking 7036.sancov.raw - writing 1 PCs to a.out.7036.sancov - % sancov.py print a.out.7036.sancov - sancov.py: read 1 PCs from a.out.7036.sancov - sancov.py: 1 files merged; 1 PCs total - 0x4b2bae + USAGE: sancov [options] (|<.sancov file>)... -Note that on 64-bit platforms, this method writes 2x more data than the default, -because it stores full PC values instead of 32-bit offsets. + Action (required) + -print - Print coverage addresses + -covered-functions - Print all covered functions. + -not-covered-functions - Print all not covered functions. + -symbolize - Symbolizes the report. + + Options + -blacklist= - Blacklist file (sanitizer blacklist format). + -demangle - Print demangled function name. + -strip_path_prefix= - Strip this prefix from file paths in reports + + +Coverage Reports +---------------- + +**Experimental** + +``.sancov`` files do not contain enough information to generate a source-level +coverage report. The missing information is contained +in debug info of the binary. Thus the ``.sancov`` has to be symbolized +to produce a ``.symcov`` file first: + +.. code-block:: console + + sancov -symbolize my_program.123.sancov my_program > my_program.123.symcov + +The ``.symcov`` file can be browsed overlayed over the source code by +running ``tools/sancov/coverage-report-server.py`` script that will start +an HTTP server. + +Output directory +---------------- + +By default, .sancov files are created in the current working directory. +This can be changed with ``ASAN_OPTIONS=coverage_dir=/path``: + +.. code-block:: console + % ASAN_OPTIONS="coverage=1:coverage_dir=/tmp/cov" ./a.out foo + % ls -l /tmp/cov/*sancov + -rw-r----- 1 kcc eng 4 Nov 27 12:21 a.out.22673.sancov + -rw-r----- 1 kcc eng 8 Nov 27 12:21 a.out.22679.sancov Modified: vendor/clang/dist/include/clang-c/Index.h ============================================================================== --- vendor/clang/dist/include/clang-c/Index.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang-c/Index.h Tue May 2 18:30:45 2017 (r317685) @@ -32,7 +32,7 @@ * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. */ #define CINDEX_VERSION_MAJOR 0 -#define CINDEX_VERSION_MINOR 37 +#define CINDEX_VERSION_MINOR 38 #define CINDEX_VERSION_ENCODE(major, minor) ( \ ((major) * 10000) \ @@ -81,6 +81,12 @@ extern "C" { typedef void *CXIndex; /** + * \brief An opaque type representing target information for a given translation + * unit. + */ +typedef struct CXTargetInfoImpl *CXTargetInfo; + +/** * \brief A single translation unit, which resides in an index. */ typedef struct CXTranslationUnitImpl *CXTranslationUnit; @@ -1553,6 +1559,36 @@ CINDEX_LINKAGE CXTUResourceUsage clang_g CINDEX_LINKAGE void clang_disposeCXTUResourceUsage(CXTUResourceUsage usage); /** + * \brief Get target information for this translation unit. + * + * The CXTargetInfo object cannot outlive the CXTranslationUnit object. + */ +CINDEX_LINKAGE CXTargetInfo +clang_getTranslationUnitTargetInfo(CXTranslationUnit CTUnit); + +/** + * \brief Destroy the CXTargetInfo object. + */ +CINDEX_LINKAGE void +clang_TargetInfo_dispose(CXTargetInfo Info); + +/** + * \brief Get the normalized target triple as a string. + * + * Returns the empty string in case of any error. + */ +CINDEX_LINKAGE CXString +clang_TargetInfo_getTriple(CXTargetInfo Info); + +/** + * \brief Get the pointer width of the target in bits. + * + * Returns -1 in case of error. + */ +CINDEX_LINKAGE int +clang_TargetInfo_getPointerWidth(CXTargetInfo Info); + +/** * @} */ @@ -3975,8 +4011,8 @@ CINDEX_LINKAGE int clang_Cursor_getObjCS CINDEX_LINKAGE int clang_Cursor_isDynamicCall(CXCursor C); /** - * \brief Given a cursor pointing to an Objective-C message, returns the CXType - * of the receiver. + * \brief Given a cursor pointing to an Objective-C message or property + * reference, or C++ method call, returns the CXType of the receiver. */ CINDEX_LINKAGE CXType clang_Cursor_getReceiverType(CXCursor C); Added: vendor/clang/dist/include/clang/AST/ASTStructuralEquivalence.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/include/clang/AST/ASTStructuralEquivalence.h Tue May 2 18:30:45 2017 (r317685) @@ -0,0 +1,101 @@ +//===--- ASTStructuralEquivalence.h - ---------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines the StructuralEquivalenceContext class which checks for +// structural equivalence between types. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_AST_ASTSTRUCTURALEQUIVALENCE_H +#define LLVM_CLANG_AST_ASTSTRUCTURALEQUIVALENCE_H + +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/Optional.h" +#include + +namespace clang { + +class ASTContext; +class Decl; +class DiagnosticBuilder; +class QualType; +class RecordDecl; +class SourceLocation; + +struct StructuralEquivalenceContext { + /// AST contexts for which we are checking structural equivalence. + ASTContext &FromCtx, &ToCtx; + + /// The set of "tentative" equivalences between two canonical + /// declarations, mapping from a declaration in the first context to the + /// declaration in the second context that we believe to be equivalent. + llvm::DenseMap TentativeEquivalences; + + /// Queue of declarations in the first context whose equivalence + /// with a declaration in the second context still needs to be verified. + std::deque DeclsToCheck; + + /// Declaration (from, to) pairs that are known not to be equivalent + /// (which we have already complained about). + llvm::DenseSet> &NonEquivalentDecls; + + /// Whether we're being strict about the spelling of types when + /// unifying two types. + bool StrictTypeSpelling; + + /// Whether warn or error on tag type mismatches. + bool ErrorOnTagTypeMismatch; + + /// Whether to complain about failures. + bool Complain; + + /// \c true if the last diagnostic came from ToCtx. + bool LastDiagFromC2; + + StructuralEquivalenceContext( + ASTContext &FromCtx, ASTContext &ToCtx, + llvm::DenseSet> &NonEquivalentDecls, + bool StrictTypeSpelling = false, bool Complain = true) + : FromCtx(FromCtx), ToCtx(ToCtx), NonEquivalentDecls(NonEquivalentDecls), + StrictTypeSpelling(StrictTypeSpelling), Complain(Complain), + LastDiagFromC2(false) {} + + DiagnosticBuilder Diag1(SourceLocation Loc, unsigned DiagID); + DiagnosticBuilder Diag2(SourceLocation Loc, unsigned DiagID); + + /// Determine whether the two declarations are structurally + /// equivalent. + bool IsStructurallyEquivalent(Decl *D1, Decl *D2); + + /// Determine whether the two types are structurally equivalent. + bool IsStructurallyEquivalent(QualType T1, QualType T2); + + /// Find the index of the given anonymous struct/union within its + /// context. + /// + /// \returns Returns the index of this anonymous struct/union in its context, + /// including the next assigned index (if none of them match). Returns an + /// empty option if the context is not a record, i.e.. if the anonymous + /// struct/union is at namespace or block scope. + /// + /// FIXME: This is needed by ASTImporter and ASTStructureEquivalence. It + /// probably makes more sense in some other common place then here. + static llvm::Optional + findUntaggedStructOrUnionIndex(RecordDecl *Anon); + +private: + /// Finish checking all of the structural equivalences. + /// + /// \returns true if an error occurred, false otherwise. + bool Finish(); +}; +} // namespace clang + +#endif // LLVM_CLANG_AST_ASTSTRUCTURALEQUIVALENCE_H Modified: vendor/clang/dist/include/clang/AST/DeclBase.h ============================================================================== --- vendor/clang/dist/include/clang/AST/DeclBase.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/AST/DeclBase.h Tue May 2 18:30:45 2017 (r317685) @@ -616,6 +616,14 @@ public: getAvailability(std::string *Message = nullptr, VersionTuple EnclosingVersion = VersionTuple()) const; + /// \brief Retrieve the version of the target platform in which this + /// declaration was introduced. + /// + /// \returns An empty version tuple if this declaration has no 'introduced' + /// availability attributes, or the version tuple that's specified in the + /// attribute otherwise. + VersionTuple getVersionIntroduced() const; + /// \brief Determine whether this declaration is marked 'deprecated'. /// /// \param Message If non-NULL and the declaration is deprecated, Modified: vendor/clang/dist/include/clang/AST/Type.h ============================================================================== --- vendor/clang/dist/include/clang/AST/Type.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/AST/Type.h Tue May 2 18:30:45 2017 (r317685) @@ -1396,7 +1396,7 @@ protected: /// Extra information which affects how the function is called, like /// regparm and the calling convention. - unsigned ExtInfo : 10; + unsigned ExtInfo : 11; /// Used only by FunctionProtoType, put here to pack with the /// other bitfields. @@ -2941,19 +2941,23 @@ class FunctionType : public Type { // * AST read and write // * Codegen class ExtInfo { - // Feel free to rearrange or add bits, but if you go over 10, + // Feel free to rearrange or add bits, but if you go over 11, // you'll need to adjust both the Bits field below and // Type::FunctionTypeBitfields. - // | CC |noreturn|produces|regparm| - // |0 .. 4| 5 | 6 | 7 .. 9| + // | CC |noreturn|produces|nocallersavedregs|regparm| + // |0 .. 4| 5 | 6 | 7 |8 .. 10| // // regparm is either 0 (no regparm attribute) or the regparm value+1. enum { CallConvMask = 0x1F }; enum { NoReturnMask = 0x20 }; enum { ProducesResultMask = 0x40 }; - enum { RegParmMask = ~(CallConvMask | NoReturnMask | ProducesResultMask), - RegParmOffset = 7 }; // Assumed to be the last field + enum { NoCallerSavedRegsMask = 0x80 }; + enum { + RegParmMask = ~(CallConvMask | NoReturnMask | ProducesResultMask | + NoCallerSavedRegsMask), + RegParmOffset = 8 + }; // Assumed to be the last field uint16_t Bits; @@ -2964,13 +2968,13 @@ class FunctionType : public Type { public: // Constructor with no defaults. Use this when you know that you // have all the elements (when reading an AST file for example). - ExtInfo(bool noReturn, bool hasRegParm, unsigned regParm, CallingConv cc, - bool producesResult) { - assert((!hasRegParm || regParm < 7) && "Invalid regparm value"); - Bits = ((unsigned) cc) | - (noReturn ? NoReturnMask : 0) | - (producesResult ? ProducesResultMask : 0) | - (hasRegParm ? ((regParm + 1) << RegParmOffset) : 0); + ExtInfo(bool noReturn, bool hasRegParm, unsigned regParm, CallingConv cc, + bool producesResult, bool noCallerSavedRegs) { + assert((!hasRegParm || regParm < 7) && "Invalid regparm value"); + Bits = ((unsigned)cc) | (noReturn ? NoReturnMask : 0) | + (producesResult ? ProducesResultMask : 0) | + (noCallerSavedRegs ? NoCallerSavedRegsMask : 0) | + (hasRegParm ? ((regParm + 1) << RegParmOffset) : 0); } // Constructor with all defaults. Use when for example creating a @@ -2983,6 +2987,7 @@ class FunctionType : public Type { bool getNoReturn() const { return Bits & NoReturnMask; } bool getProducesResult() const { return Bits & ProducesResultMask; } + bool getNoCallerSavedRegs() const { return Bits & NoCallerSavedRegsMask; } bool getHasRegParm() const { return (Bits >> RegParmOffset) != 0; } unsigned getRegParm() const { unsigned RegParm = Bits >> RegParmOffset; @@ -3016,6 +3021,13 @@ class FunctionType : public Type { return ExtInfo(Bits & ~ProducesResultMask); } + ExtInfo withNoCallerSavedRegs(bool noCallerSavedRegs) const { + if (noCallerSavedRegs) + return ExtInfo(Bits | NoCallerSavedRegsMask); + else + return ExtInfo(Bits & ~NoCallerSavedRegsMask); + } + ExtInfo withRegParm(unsigned RegParm) const { assert(RegParm < 7 && "Invalid regparm value"); return ExtInfo((Bits & ~RegParmMask) | Modified: vendor/clang/dist/include/clang/Basic/Attr.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/Attr.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/Attr.td Tue May 2 18:30:45 2017 (r317685) @@ -1931,6 +1931,12 @@ def AnyX86Interrupt : InheritableAttr, T let Documentation = [AnyX86InterruptDocs]; } +def AnyX86NoCallerSavedRegisters : InheritableAttr, + TargetSpecificAttr { + let Spellings = [GCC<"no_caller_saved_registers">]; + let Documentation = [AnyX86NoCallerSavedRegistersDocs]; +} + def X86ForceAlignArgPointer : InheritableAttr, TargetSpecificAttr { let Spellings = [GNU<"force_align_arg_pointer">]; // Technically, this appertains to a FunctionDecl, but the target-specific Modified: vendor/clang/dist/include/clang/Basic/AttrDocs.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/AttrDocs.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/AttrDocs.td Tue May 2 18:30:45 2017 (r317685) @@ -2657,6 +2657,40 @@ hardware design, touch the red zone. }]; } +def AnyX86NoCallerSavedRegistersDocs : Documentation { + let Category = DocCatFunction; + let Content = [{ +Use this attribute to indicate that the specified function has no +caller-saved registers. That is, all registers are callee-saved except for +registers used for passing parameters to the function or returning parameters +from the function. +The compiler saves and restores any modified registers that were not used for +passing or returning arguments to the function. + +The user can call functions specified with the 'no_caller_saved_registers' +attribute from an interrupt handler without saving and restoring all +call-clobbered registers. + +Note that 'no_caller_saved_registers' attribute is not a calling convention. +In fact, it only overrides the decision of which registers should be saved by +the caller, but not how the parameters are passed from the caller to the callee. + +For example: + + .. code-block:: c + + __attribute__ ((no_caller_saved_registers, fastcall)) + void f (int arg1, int arg2) { + ... + } + + In this case parameters 'arg1' and 'arg2' will be passed in registers. + In this case, on 32-bit x86 targets, the function 'f' will use ECX and EDX as + register parameters. However, it will not assume any scratch registers and + should save and restore any modified registers except for ECX and EDX. + }]; +} + def SwiftCallDocs : Documentation { let Category = DocCatVariable; let Content = [{ Modified: vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td Tue May 2 18:30:45 2017 (r317685) @@ -154,12 +154,14 @@ def note_constexpr_baa_insufficient_alig def note_constexpr_baa_value_insufficient_alignment : Note< "value of the aligned pointer (%0) is not a multiple of the asserted %1 " "%plural{1:byte|:bytes}1">; +def note_constexpr_array_unknown_bound_arithmetic : Note< + "cannot perform pointer arithmetic on pointer to array without constant bound">; def warn_integer_constant_overflow : Warning< "overflow in expression; result is %0 with type %1">, InGroup>; -// This is a temporary diagnostic, and shall be removed once our +// This is a temporary diagnostic, and shall be removed once our // implementation is complete, and like the preceding constexpr notes belongs // in Sema. def note_unimplemented_constexpr_lambda_feature_ast : Note< Modified: vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td Tue May 2 18:30:45 2017 (r317685) @@ -233,7 +233,9 @@ def note_drv_t_option_is_global : Note< "The last /TC or /TP option takes precedence over earlier instances">; def note_drv_address_sanitizer_debug_runtime : Note< "AddressSanitizer doesn't support linking with debug runtime libraries yet">; -def note_drv_use_standard : Note<"use '%0' for '%1' standard">; +def note_drv_use_standard : Note<"use '%0'" + "%select{| or '%3'|, '%3', or '%4'|, '%3', '%4', or '%5'}2 " + "for '%1' standard">; def err_analyzer_config_no_value : Error< "analyzer-config option '%0' has a key but no value">; Modified: vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td Tue May 2 18:30:45 2017 (r317685) @@ -890,6 +890,7 @@ def BackendOptimizationRemarkAnalysis : def BackendOptimizationFailure : DiagGroup<"pass-failed">; // Instrumentation based profiling warnings. +def ProfileInstrMissing : DiagGroup<"profile-instr-missing">; def ProfileInstrOutOfDate : DiagGroup<"profile-instr-out-of-date">; def ProfileInstrUnprofiled : DiagGroup<"profile-instr-unprofiled">; Modified: vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td Tue May 2 18:30:45 2017 (r317685) @@ -475,6 +475,8 @@ def warn_pragma_pop_macro_no_push : Warn def warn_pragma_message : Warning<"%0">, InGroup, DefaultWarnNoWerror; def err_pragma_message : Error<"%0">; +def err_pragma_module_import_expected_module_name : Error< + "expected %select{identifier in|'.' or end of directive after}0 module name">; def warn_pragma_ignored : Warning<"unknown pragma ignored">, InGroup, DefaultIgnore; def ext_stdc_pragma_ignored : ExtWarn<"unknown pragma in STDC namespace">, @@ -503,7 +505,7 @@ def warn_pragma_diagnostic_invalid_token InGroup; def warn_pragma_diagnostic_unknown_warning : ExtWarn<"unknown warning group '%0', ignored">, - InGroup; + InGroup; // - #pragma __debug def warn_pragma_debug_unexpected_command : Warning< "unexpected debug command '%0'">, InGroup; Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Tue May 2 18:30:45 2017 (r317685) @@ -1180,6 +1180,10 @@ def err_objc_kindof_nonobject : Error< def err_objc_kindof_wrong_position : Error< "'__kindof' type specifier must precede the declarator">; +def err_objc_method_unsupported_param_ret_type : Error< + "%0 %select{parameter|return}1 type is unsupported; " + "support for vector types for this target is introduced in %2">; + // C++ declarations def err_static_assert_expression_is_not_constant : Error< "static_assert expression is not an integral constant expression">; @@ -2819,6 +2823,9 @@ def err_regparm_mismatch : Error<"functi def err_returns_retained_mismatch : Error< "function declared with the ns_returns_retained attribute " "was previously declared without the ns_returns_retained attribute">; +def err_function_attribute_mismatch : Error< + "function declared with %0 attribute " + "was previously declared without the %0 attribute">; def err_objc_precise_lifetime_bad_type : Error< "objc_precise_lifetime only applies to retainable types; type here is %0">; def warn_objc_precise_lifetime_meaningless : Error< @@ -8931,8 +8938,13 @@ def warn_not_a_doxygen_trailing_member_c let CategoryName = "Instrumentation Issue" in { def warn_profile_data_out_of_date : Warning< "profile data may be out of date: of %0 function%s0, %1 %plural{1:has|:have}1" - " no data and %2 %plural{1:has|:have}2 mismatched data that will be ignored">, + " mismatched data that will be ignored">, InGroup; +def warn_profile_data_missing : Warning< + "profile data may be incomplete: of %0 function%s0, %1 %plural{1:has|:have}1" + " no data">, + InGroup, + DefaultIgnore; def warn_profile_data_unprofiled : Warning< "no profile data available for file \"%0\"">, InGroup; Modified: vendor/clang/dist/include/clang/Basic/LangOptions.def ============================================================================== --- vendor/clang/dist/include/clang/Basic/LangOptions.def Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Basic/LangOptions.def Tue May 2 18:30:45 2017 (r317685) @@ -266,7 +266,8 @@ LANGOPT(SanitizeAddressFieldPadding, 2, LANGOPT(XRayInstrument, 1, 0, "controls whether to do XRay instrumentation") -LANGOPT(AllowEditorPlaceholders, 1, 0, "allow editor placeholders in source") +BENIGN_LANGOPT(AllowEditorPlaceholders, 1, 0, + "allow editor placeholders in source") #undef LANGOPT #undef COMPATIBLE_LANGOPT Modified: vendor/clang/dist/include/clang/CodeGen/CGFunctionInfo.h ============================================================================== --- vendor/clang/dist/include/clang/CodeGen/CGFunctionInfo.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/CodeGen/CGFunctionInfo.h Tue May 2 18:30:45 2017 (r317685) @@ -461,7 +461,7 @@ class CGFunctionInfo final unsigned EffectiveCallingConvention : 8; /// The clang::CallingConv that this was originally created with. - unsigned ASTCallingConvention : 8; + unsigned ASTCallingConvention : 7; /// Whether this is an instance method. unsigned InstanceMethod : 1; @@ -475,6 +475,9 @@ class CGFunctionInfo final /// Whether this function is returns-retained. unsigned ReturnsRetained : 1; + /// Whether this function saved caller registers. + unsigned NoCallerSavedRegs : 1; + /// How many arguments to pass inreg. unsigned HasRegParm : 1; unsigned RegParm : 3; @@ -560,6 +563,9 @@ public: /// is not always reliable for call sites. bool isReturnsRetained() const { return ReturnsRetained; } + /// Whether this function no longer saves caller registers. + bool isNoCallerSavedRegs() const { return NoCallerSavedRegs; } + /// getASTCallingConvention() - Return the AST-specified calling /// convention. CallingConv getASTCallingConvention() const { @@ -583,10 +589,9 @@ public: unsigned getRegParm() const { return RegParm; } FunctionType::ExtInfo getExtInfo() const { - return FunctionType::ExtInfo(isNoReturn(), - getHasRegParm(), getRegParm(), - getASTCallingConvention(), - isReturnsRetained()); + return FunctionType::ExtInfo(isNoReturn(), getHasRegParm(), getRegParm(), + getASTCallingConvention(), isReturnsRetained(), + isNoCallerSavedRegs()); } CanQualType getReturnType() const { return getArgsBuffer()[0].type; } @@ -623,6 +628,7 @@ public: ID.AddBoolean(ChainCall); ID.AddBoolean(NoReturn); ID.AddBoolean(ReturnsRetained); + ID.AddBoolean(NoCallerSavedRegs); ID.AddBoolean(HasRegParm); ID.AddInteger(RegParm); ID.AddInteger(Required.getOpaqueData()); @@ -648,6 +654,7 @@ public: ID.AddBoolean(ChainCall); ID.AddBoolean(info.getNoReturn()); ID.AddBoolean(info.getProducesResult()); + ID.AddBoolean(info.getNoCallerSavedRegs()); ID.AddBoolean(info.getHasRegParm()); ID.AddInteger(info.getRegParm()); ID.AddInteger(required.getOpaqueData()); Modified: vendor/clang/dist/include/clang/Driver/CLCompatOptions.td ============================================================================== --- vendor/clang/dist/include/clang/Driver/CLCompatOptions.td Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Driver/CLCompatOptions.td Tue May 2 18:30:45 2017 (r317685) @@ -61,6 +61,8 @@ def _SLASH_Brepro_ : CLFlag<"Brepro-">, def _SLASH_C : CLFlag<"C">, HelpText<"Don't discard comments when preprocessing">, Alias; def _SLASH_c : CLFlag<"c">, HelpText<"Compile only">, Alias; +def _SLASH_d1reportAllClassLayout : CLFlag<"d1reportAllClassLayout">, + HelpText<"Dump record layout information">, Alias; def _SLASH_D : CLJoinedOrSeparate<"D">, HelpText<"Define macro">, MetaVarName<"">, Alias; def _SLASH_E : CLFlag<"E">, HelpText<"Preprocess to stdout">, Alias; Modified: vendor/clang/dist/include/clang/Edit/EditedSource.h ============================================================================== --- vendor/clang/dist/include/clang/Edit/EditedSource.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Edit/EditedSource.h Tue May 2 18:30:45 2017 (r317685) @@ -65,7 +65,7 @@ public: bool commit(const Commit &commit); - void applyRewrites(EditsReceiver &receiver); + void applyRewrites(EditsReceiver &receiver, bool adjustRemovals = true); void clearRewrites(); StringRef copyString(StringRef str) { return str.copy(StrAlloc); } Modified: vendor/clang/dist/include/clang/Frontend/FrontendActions.h ============================================================================== --- vendor/clang/dist/include/clang/Frontend/FrontendActions.h Tue May 2 18:30:20 2017 (r317684) +++ vendor/clang/dist/include/clang/Frontend/FrontendActions.h Tue May 2 18:30:45 2017 (r317685) @@ -99,8 +99,6 @@ class GenerateModuleAction : public ASTF CreateOutputFile(CompilerInstance &CI, StringRef InFile) = 0; protected: - bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename) override; - std::unique_ptr CreateASTConsumer(CompilerInstance &CI, StringRef InFile) override; @@ -112,20 +110,11 @@ protected: }; class GenerateModuleFromModuleMapAction : public GenerateModuleAction { - clang::Module *Module = nullptr; - const FileEntry *ModuleMapForUniquing = nullptr; - bool IsSystem = false; - private: bool BeginSourceFileAction(CompilerInstance &CI, StringRef Filename) override; std::unique_ptr CreateOutputFile(CompilerInstance &CI, StringRef InFile) override; - *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Tue May 2 18:30:58 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3FEA5D5BD3F; Tue, 2 May 2017 18:30:58 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E5128366; Tue, 2 May 2017 18:30:57 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IUul9000981; Tue, 2 May 2017 18:30:56 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IUtnS000965; Tue, 2 May 2017 18:30:55 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021830.v42IUtnS000965@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:30:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317687 - in vendor/compiler-rt/dist: cmake/Modules include/sanitizer include/xray lib/asan lib/sanitizer_common lib/scudo lib/tsan/go lib/tsan/rtl lib/tsan/tests/rtl lib/ubsan lib/xray... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:30:58 -0000 Author: dim Date: Tue May 2 18:30:55 2017 New Revision: 317687 URL: https://svnweb.freebsd.org/changeset/base/317687 Log: Vendor import of compiler-rt trunk r301939: https://llvm.org/svn/llvm-project/compiler-rt/trunk@301939 Added: vendor/compiler-rt/dist/lib/scudo/scudo_tls.h (contents, props changed) vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.cpp (contents, props changed) vendor/compiler-rt/dist/lib/scudo/scudo_tls_linux.h (contents, props changed) vendor/compiler-rt/dist/test/asan/TestCases/Linux/global-overflow-bfd.cc (contents, props changed) vendor/compiler-rt/dist/test/asan/TestCases/Linux/global-overflow-lld.cc (contents, props changed) vendor/compiler-rt/dist/test/asan/TestCases/Linux/globals-gc-sections-lld.cc (contents, props changed) vendor/compiler-rt/dist/test/asan/TestCases/small_memcpy_test.cc (contents, props changed) vendor/compiler-rt/dist/test/sanitizer_common/ios_commands/ vendor/compiler-rt/dist/test/sanitizer_common/ios_commands/iossim_compile.py (contents, props changed) vendor/compiler-rt/dist/test/sanitizer_common/ios_commands/iossim_env.py (contents, props changed) vendor/compiler-rt/dist/test/sanitizer_common/ios_commands/iossim_run.py (contents, props changed) Deleted: vendor/compiler-rt/dist/test/asan/TestCases/Linux/globals-gc-sections.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/coverage-direct-activation.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/coverage-direct-large.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/coverage-direct.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/coverage-fork-direct.cc vendor/compiler-rt/dist/test/asan/TestCases/coverage-levels.cc Modified: vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake vendor/compiler-rt/dist/include/sanitizer/tsan_interface.h vendor/compiler-rt/dist/include/xray/xray_log_interface.h vendor/compiler-rt/dist/lib/asan/asan_globals.cc vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc vendor/compiler-rt/dist/lib/asan/asan_interface.inc vendor/compiler-rt/dist/lib/asan/asan_interface_internal.h vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep.cc vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.h vendor/compiler-rt/dist/lib/scudo/CMakeLists.txt vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h vendor/compiler-rt/dist/lib/scudo/scudo_utils.cpp vendor/compiler-rt/dist/lib/scudo/scudo_utils.h vendor/compiler-rt/dist/lib/tsan/go/buildgo.sh vendor/compiler-rt/dist/lib/tsan/rtl/tsan_external.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interface_ann.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_platform_linux.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_report.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.h vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_mutex.cc vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl_report.cc vendor/compiler-rt/dist/lib/tsan/tests/rtl/tsan_posix.cc vendor/compiler-rt/dist/lib/ubsan/ubsan_diag.cc vendor/compiler-rt/dist/lib/ubsan/ubsan_handlers.cc vendor/compiler-rt/dist/lib/xray/xray_log_interface.cc vendor/compiler-rt/dist/test/asan/CMakeLists.txt vendor/compiler-rt/dist/test/asan/TestCases/Darwin/dead-strip.c vendor/compiler-rt/dist/test/asan/TestCases/Darwin/dump_registers.cc vendor/compiler-rt/dist/test/asan/TestCases/Darwin/reexec-insert-libraries-env.cc vendor/compiler-rt/dist/test/asan/TestCases/Darwin/scribble.cc vendor/compiler-rt/dist/test/asan/TestCases/Darwin/unset-insert-libraries-on-exec.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/asan-sigbus.cpp vendor/compiler-rt/dist/test/asan/TestCases/Posix/current_allocated_bytes.cc vendor/compiler-rt/dist/test/asan/TestCases/Posix/fread_fwrite.cc vendor/compiler-rt/dist/test/asan/TestCases/coverage-disabled.cc vendor/compiler-rt/dist/test/asan/TestCases/initialization-bug.cc vendor/compiler-rt/dist/test/asan/TestCases/strtok.c vendor/compiler-rt/dist/test/asan/lit.cfg vendor/compiler-rt/dist/test/asan/lit.site.cfg.in vendor/compiler-rt/dist/test/lit.common.cfg vendor/compiler-rt/dist/test/lit.common.configured.in vendor/compiler-rt/dist/test/sanitizer_common/TestCases/sanitizer_coverage_symbolize.cc vendor/compiler-rt/dist/test/tsan/Darwin/xpc-cancel.mm vendor/compiler-rt/dist/test/tsan/Darwin/xpc-race.mm vendor/compiler-rt/dist/test/tsan/Darwin/xpc.mm vendor/compiler-rt/dist/test/tsan/ignore_lib1.cc vendor/compiler-rt/dist/test/tsan/ignore_lib5.cc vendor/compiler-rt/dist/test/ubsan/TestCases/Float/cast-overflow.cpp vendor/compiler-rt/dist/test/ubsan/TestCases/Misc/log-path_test.cc vendor/compiler-rt/dist/test/ubsan/TestCases/Misc/missing_return.cpp vendor/compiler-rt/dist/test/ubsan/TestCases/TypeCheck/misaligned.cpp Modified: vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake ============================================================================== --- vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake Tue May 2 18:30:55 2017 (r317687) @@ -210,6 +210,14 @@ function(add_compiler_rt_runtime name ty set_target_properties(${libname} PROPERTIES IMPORT_PREFIX "") set_target_properties(${libname} PROPERTIES IMPORT_SUFFIX ".lib") endif() + if(APPLE) + # Ad-hoc sign the dylibs + add_custom_command(TARGET ${libname} + POST_BUILD + COMMAND codesign --sign - $ + WORKING_DIRECTORY ${COMPILER_RT_LIBRARY_OUTPUT_DIR} + ) + endif() endif() install(TARGETS ${libname} ARCHIVE DESTINATION ${COMPILER_RT_LIBRARY_INSTALL_DIR} Modified: vendor/compiler-rt/dist/include/sanitizer/tsan_interface.h ============================================================================== --- vendor/compiler-rt/dist/include/sanitizer/tsan_interface.h Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/include/sanitizer/tsan_interface.h Tue May 2 18:30:55 2017 (r317687) @@ -68,7 +68,8 @@ const unsigned __tsan_mutex_recursive_un void __tsan_mutex_create(void *addr, unsigned flags); // Annotate destruction of a mutex. -// Supported flags: none. +// Supported flags: +// - __tsan_mutex_linker_init void __tsan_mutex_destroy(void *addr, unsigned flags); // Annotate start of lock operation. Modified: vendor/compiler-rt/dist/include/xray/xray_log_interface.h ============================================================================== --- vendor/compiler-rt/dist/include/xray/xray_log_interface.h Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/include/xray/xray_log_interface.h Tue May 2 18:30:55 2017 (r317687) @@ -10,7 +10,73 @@ // This file is a part of XRay, a function call tracing system. // // APIs for installing a new logging implementation. +// //===----------------------------------------------------------------------===// +/// +/// XRay allows users to implement their own logging handlers and install them +/// to replace the default runtime-controllable implementation that comes with +/// compiler-rt/xray. The "flight data recorder" (FDR) mode implementation uses +/// this API to install itself in an XRay-enabled binary. See +/// compiler-rt/lib/xray_fdr_logging.{h,cc} for details of that implementation. +/// +/// The high-level usage pattern for these APIs look like the following: +/// +/// // Before we try initializing the log implementation, we must set it as +/// // the log implementation. We provide the function pointers that define +/// // the various initialization, finalization, and other pluggable hooks +/// // that we need. +/// __xray_set_log_impl({...}); +/// +/// // Once that's done, we can now initialize the implementation. Each +/// // implementation has a chance to let users customize the implementation +/// // with a struct that their implementation supports. Roughly this might +/// // look like: +/// MyImplementationOptions opts; +/// opts.enable_feature = true; +/// ... +/// auto init_status = __xray_log_init( +/// BufferSize, MaxBuffers, &opts, sizeof opts); +/// if (init_status != XRayLogInitStatus::XRAY_LOG_INITIALIZED) { +/// // deal with the error here, if there is one. +/// } +/// +/// // When the log implementation has had the chance to initialize, we can +/// // now patch the sleds. +/// auto patch_status = __xray_patch(); +/// if (patch_status != XRayPatchingStatus::SUCCESS) { +/// // deal with the error here, if it is an error. +/// } +/// +/// // If we want to stop the implementation, we can then finalize it (before +/// // optionally flushing the log). +/// auto fin_status = __xray_log_finalize(); +/// if (fin_status != XRayLogInitStatus::XRAY_LOG_FINALIZED) { +/// // deal with the error here, if it is an error. +/// } +/// +/// // We can optionally wait before flushing the log to give other threads a +/// // chance to see that the implementation is already finalized. Also, at +/// // this point we can optionally unpatch the sleds to reduce overheads at +/// // runtime. +/// auto unpatch_status = __xray_unpatch(); +/// if (unpatch_status != XRayPatchingStatus::SUCCESS) { +// // deal with the error here, if it is an error. +// } +/// +/// // If there are logs or data to be flushed somewhere, we can do so only +/// // after we've finalized the log. Some implementations may not actually +/// // have anything to log (it might keep the data in memory, or periodically +/// // be logging the data anyway). +/// auto flush_status = __xray_log_flushLog(); +/// if (flush_status != XRayLogFlushStatus::XRAY_LOG_FLUSHED) { +/// // deal with the error here, if it is an error. +/// } +/// +/// +/// NOTE: Before calling __xray_patch() again, consider re-initializing the +/// implementation first. Some implementations might stay in an "off" state when +/// they are finalized, while some might be in an invalid/unknown state. +/// #ifndef XRAY_XRAY_LOG_INTERFACE_H #define XRAY_XRAY_LOG_INTERFACE_H @@ -19,36 +85,141 @@ extern "C" { +/// This enum defines the valid states in which the logging implementation can +/// be at. enum XRayLogInitStatus { + /// The default state is uninitialized, and in case there were errors in the + /// initialization, the implementation MUST return XRAY_LOG_UNINITIALIZED. XRAY_LOG_UNINITIALIZED = 0, + + /// Some implementations support multi-stage init (or asynchronous init), and + /// may return XRAY_LOG_INITIALIZING to signal callers of the API that + /// there's an ongoing initialization routine running. This allows + /// implementations to support concurrent threads attempting to initialize, + /// while only signalling success in one. XRAY_LOG_INITIALIZING = 1, + + /// When an implementation is done initializing, it MUST return + /// XRAY_LOG_INITIALIZED. When users call `__xray_patch()`, they are + /// guaranteed that the implementation installed with + /// `__xray_set_log_impl(...)` has been initialized. XRAY_LOG_INITIALIZED = 2, + + /// Some implementations might support multi-stage finalization (or + /// asynchronous finalization), and may return XRAY_LOG_FINALIZING to signal + /// callers of the API that there's an ongoing finalization routine running. + /// This allows implementations to support concurrent threads attempting to + /// finalize, while only signalling success/completion in one. XRAY_LOG_FINALIZING = 3, + + /// When an implementation is done finalizing, it MUST return + /// XRAY_LOG_FINALIZED. It is up to the implementation to determine what the + /// semantics of a finalized implementation is. Some implementations might + /// allow re-initialization once the log is finalized, while some might always + /// be on (and that finalization is a no-op). XRAY_LOG_FINALIZED = 4, }; +/// This enum allows an implementation to signal log flushing operations via +/// `__xray_log_flushLog()`, and the state of flushing the log. enum XRayLogFlushStatus { XRAY_LOG_NOT_FLUSHING = 0, XRAY_LOG_FLUSHING = 1, XRAY_LOG_FLUSHED = 2, }; +/// A valid XRay logging implementation MUST provide all of the function +/// pointers in XRayLogImpl when being installed through `__xray_set_log_impl`. +/// To be precise, ALL the functions pointers MUST NOT be nullptr. struct XRayLogImpl { + /// The log initialization routine provided by the implementation, always + /// provided with the following parameters: + /// + /// - buffer size + /// - maximum number of buffers + /// - a pointer to an argument struct that the implementation MUST handle + /// - the size of the argument struct + /// + /// See XRayLogInitStatus for details on what the implementation MUST return + /// when called. + /// + /// If the implementation needs to install handlers aside from the 0-argument + /// function call handler, it MUST do so in this initialization handler. + /// + /// See xray_interface.h for available handler installation routines. XRayLogInitStatus (*log_init)(size_t, size_t, void *, size_t); + + /// The log finalization routine provided by the implementation. + /// + /// See XRayLogInitStatus for details on what the implementation MUST return + /// when called. XRayLogInitStatus (*log_finalize)(); + + /// The 0-argument function call handler. XRay logging implementations MUST + /// always have a handler for function entry and exit events. In case the + /// implementation wants to support arg1 (or other future extensions to XRay + /// logging) those MUST be installed by the installed 'log_init' handler. void (*handle_arg0)(int32_t, XRayEntryType); + + /// The log implementation provided routine for when __xray_log_flushLog() is + /// called. + /// + /// See XRayLogFlushStatus for details on what the implementation MUST return + /// when called. XRayLogFlushStatus (*flush_log)(); }; +/// This function installs a new logging implementation that XRay will use. In +/// case there are any nullptr members in Impl, XRay will *uninstall any +/// existing implementations*. It does NOT patch the instrumentation sleds. +/// +/// NOTE: This function does NOT attempt to finalize the currently installed +/// implementation. Use with caution. +/// +/// It is guaranteed safe to call this function in the following states: +/// +/// - When the implementation is UNINITIALIZED. +/// - When the implementation is FINALIZED. +/// - When there is no current implementation installed. +/// +/// It is logging implementation defined what happens when this function is +/// called while in any other states. void __xray_set_log_impl(XRayLogImpl Impl); + +/// This function removes the currently installed implementation. It will also +/// uninstall any handlers that have been previously installed. It does NOT +/// unpatch the instrumentation sleds. +/// +/// NOTE: This function does NOT attempt to finalize the currently installed +/// implementation. Use with caution. +/// +/// It is guaranteed safe to call this function in the following states: +/// +/// - When the implementation is UNINITIALIZED. +/// - When the implementation is FINALIZED. +/// - When there is no current implementation installed. +/// +/// It is logging implementation defined what happens when this function is +/// called while in any other states. +void __xray_remove_log_impl(); + +/// Invokes the installed implementation initialization routine. See +/// XRayLogInitStatus for what the return values mean. XRayLogInitStatus __xray_log_init(size_t BufferSize, size_t MaxBuffers, void *Args, size_t ArgsSize); + +/// Invokes the installed implementation finalization routine. See +/// XRayLogInitStatus for what the return values mean. XRayLogInitStatus __xray_log_finalize(); + +/// Invokes the install implementation log flushing routine. See +/// XRayLogFlushStatus for what the return values mean. XRayLogFlushStatus __xray_log_flushLog(); } // extern "C" namespace __xray { + // Options used by the LLVM XRay FDR implementation. struct FDRLoggingOptions { bool ReportErrors = false; Modified: vendor/compiler-rt/dist/lib/asan/asan_globals.cc ============================================================================== --- vendor/compiler-rt/dist/lib/asan/asan_globals.cc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/asan/asan_globals.cc Tue May 2 18:30:55 2017 (r317687) @@ -332,6 +332,26 @@ void __asan_unregister_image_globals(upt *flag = 0; } +void __asan_register_elf_globals(uptr *flag, void *start, void *stop) { + if (*flag) return; + if (!start) return; + CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global)); + __asan_global *globals_start = (__asan_global*)start; + __asan_global *globals_stop = (__asan_global*)stop; + __asan_register_globals(globals_start, globals_stop - globals_start); + *flag = 1; +} + +void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop) { + if (!*flag) return; + if (!start) return; + CHECK_EQ(0, ((uptr)stop - (uptr)start) % sizeof(__asan_global)); + __asan_global *globals_start = (__asan_global*)start; + __asan_global *globals_stop = (__asan_global*)stop; + __asan_unregister_globals(globals_start, globals_stop - globals_start); + *flag = 0; +} + // Register an array of globals. void __asan_register_globals(__asan_global *globals, uptr n) { if (!flags()->report_globals) return; Modified: vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc ============================================================================== --- vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/asan/asan_interceptors.cc Tue May 2 18:30:55 2017 (r317687) @@ -37,12 +37,19 @@ namespace __asan { // Return true if we can quickly decide that the region is unpoisoned. +// We assume that a redzone is at least 16 bytes. static inline bool QuickCheckForUnpoisonedRegion(uptr beg, uptr size) { if (size == 0) return true; if (size <= 32) return !AddressIsPoisoned(beg) && !AddressIsPoisoned(beg + size - 1) && !AddressIsPoisoned(beg + size / 2); + if (size <= 64) + return !AddressIsPoisoned(beg) && + !AddressIsPoisoned(beg + size / 4) && + !AddressIsPoisoned(beg + size - 1) && + !AddressIsPoisoned(beg + 3 * size / 4) && + !AddressIsPoisoned(beg + size / 2); return false; } Modified: vendor/compiler-rt/dist/lib/asan/asan_interface.inc ============================================================================== --- vendor/compiler-rt/dist/lib/asan/asan_interface.inc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/asan/asan_interface.inc Tue May 2 18:30:55 2017 (r317687) @@ -64,6 +64,7 @@ INTERFACE_FUNCTION(__asan_poison_stack_m INTERFACE_FUNCTION(__asan_print_accumulated_stats) INTERFACE_FUNCTION(__asan_region_is_poisoned) INTERFACE_FUNCTION(__asan_register_globals) +INTERFACE_FUNCTION(__asan_register_elf_globals) INTERFACE_FUNCTION(__asan_register_image_globals) INTERFACE_FUNCTION(__asan_report_error) INTERFACE_FUNCTION(__asan_report_exp_load1) @@ -149,6 +150,7 @@ INTERFACE_FUNCTION(__asan_unpoison_intra INTERFACE_FUNCTION(__asan_unpoison_memory_region) INTERFACE_FUNCTION(__asan_unpoison_stack_memory) INTERFACE_FUNCTION(__asan_unregister_globals) +INTERFACE_FUNCTION(__asan_unregister_elf_globals) INTERFACE_FUNCTION(__asan_unregister_image_globals) INTERFACE_FUNCTION(__asan_version_mismatch_check_v8) INTERFACE_FUNCTION(__sanitizer_finish_switch_fiber) Modified: vendor/compiler-rt/dist/lib/asan/asan_interface_internal.h ============================================================================== --- vendor/compiler-rt/dist/lib/asan/asan_interface_internal.h Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/asan/asan_interface_internal.h Tue May 2 18:30:55 2017 (r317687) @@ -67,6 +67,11 @@ extern "C" { SANITIZER_INTERFACE_ATTRIBUTE void __asan_unregister_image_globals(uptr *flag); + SANITIZER_INTERFACE_ATTRIBUTE + void __asan_register_elf_globals(uptr *flag, void *start, void *stop); + SANITIZER_INTERFACE_ATTRIBUTE + void __asan_unregister_elf_globals(uptr *flag, void *start, void *stop); + // These two functions should be called by the instrumented code. // 'globals' is an array of structures describing 'n' globals. SANITIZER_INTERFACE_ATTRIBUTE Modified: vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep.cc ============================================================================== --- vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep.cc Tue May 2 18:30:55 2017 (r317687) @@ -84,7 +84,6 @@ class CoverageData { void AfterFork(int child_pid); void Extend(uptr npcs); void Add(uptr pc, u32 *guard); - void DumpAsBitSet(); void DumpOffsets(); void DumpAll(); @@ -156,6 +155,13 @@ void CoverageData::DirectOpen() { void CoverageData::Init() { pc_fd = kInvalidFd; + + if (!common_flags()->coverage) return; + Printf("**\n***\n***\n"); + Printf("**WARNING: this implementation of SanitizerCoverage is deprecated\n"); + Printf("**WARNING: and will be removed in future versions\n"); + Printf("**WARNING: See https://clang.llvm.org/docs/SanitizerCoverage.html\n"); + Printf("**\n***\n***\n"); } void CoverageData::Enable() { @@ -165,6 +171,8 @@ void CoverageData::Enable() { MmapNoReserveOrDie(sizeof(uptr) * kPcArrayMaxSize, "CovInit")); atomic_store(&pc_array_index, 0, memory_order_relaxed); if (common_flags()->coverage_direct) { + Report("coverage_direct=1 is deprecated, don't use it.\n"); + Die(); atomic_store(&pc_array_size, 0, memory_order_relaxed); } else { atomic_store(&pc_array_size, kPcArrayMaxSize, memory_order_relaxed); @@ -419,35 +427,6 @@ static fd_t CovOpenFile(InternalScopedSt return fd; } -void CoverageData::DumpAsBitSet() { - if (!common_flags()->coverage_bitset) return; - if (!size()) return; - InternalScopedBuffer out(size()); - InternalScopedString path(kMaxPathLength); - for (uptr m = 0; m < module_name_vec.size(); m++) { - uptr n_set_bits = 0; - auto r = module_name_vec[m]; - CHECK(r.copied_module_name); - CHECK_LE(r.beg, r.end); - CHECK_LE(r.end, size()); - for (uptr i = r.beg; i < r.end; i++) { - uptr pc = UnbundlePc(pc_array[i]); - out[i] = pc ? '1' : '0'; - if (pc) - n_set_bits++; - } - const char *base_name = StripModuleName(r.copied_module_name); - fd_t fd = CovOpenFile(&path, /* packed */false, base_name, "bitset-sancov"); - if (fd == kInvalidFd) return; - WriteToFile(fd, out.data() + r.beg, r.end - r.beg); - CloseFile(fd); - VReport(1, - " CovDump: bitset of %zd bits written for '%s', %zd bits are set\n", - r.end - r.beg, base_name, n_set_bits); - } -} - - void CoverageData::GetRangeOffsets(const NamedPcRange& r, Symbolizer* sym, InternalMmapVector* offsets) const { offsets->clear(); @@ -565,7 +544,6 @@ void CoverageData::DumpAll() { if (!coverage_enabled || common_flags()->coverage_direct) return; if (atomic_fetch_add(&dump_once_guard, 1, memory_order_relaxed)) return; - DumpAsBitSet(); DumpOffsets(); } Modified: vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc ============================================================================== --- vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep_new.cc Tue May 2 18:30:55 2017 (r317687) @@ -98,10 +98,6 @@ static void SanitizerDumpCoverage(const InternalFree(file_path); InternalFree(module_name); InternalFree(pcs); - - if (sancov_flags()->symbolize) { - Printf("TODO(aizatsky): call sancov to symbolize\n"); - } } // Collects trace-pc guard coverage. Modified: vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc ============================================================================== --- vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc Tue May 2 18:30:55 2017 (r317687) @@ -142,12 +142,6 @@ COMMON_FLAG(bool, coverage_pcs, true, COMMON_FLAG(bool, coverage_order_pcs, false, "If true, the PCs will be dumped in the order they've" " appeared during the execution.") -COMMON_FLAG(bool, coverage_bitset, false, - "If set (and if 'coverage' is set too), the coverage information " - "will also be dumped as a bitset to a separate file.") -COMMON_FLAG(bool, coverage_counters, false, - "If set (and if 'coverage' is set too), the bitmap that corresponds" - " to coverage counters will be dumped.") COMMON_FLAG(bool, coverage_direct, SANITIZER_ANDROID, "If set, coverage information will be dumped directly to a memory " "mapped file. This way data is not lost even if the process is " Modified: vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.h ============================================================================== --- vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.h Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_linux.h Tue May 2 18:30:55 2017 (r317687) @@ -88,6 +88,46 @@ bool LibraryNameIs(const char *full_name // Call cb for each region mapped by map. void ForEachMappedRegion(link_map *map, void (*cb)(const void *, uptr)); + +#if SANITIZER_ANDROID + +#if defined(__aarch64__) +# define __get_tls() \ + ({ void** __v; __asm__("mrs %0, tpidr_el0" : "=r"(__v)); __v; }) +#elif defined(__arm__) +# define __get_tls() \ + ({ void** __v; __asm__("mrc p15, 0, %0, c13, c0, 3" : "=r"(__v)); __v; }) +#elif defined(__mips__) +// On mips32r1, this goes via a kernel illegal instruction trap that's +// optimized for v1. +# define __get_tls() \ + ({ register void** __v asm("v1"); \ + __asm__(".set push\n" \ + ".set mips32r2\n" \ + "rdhwr %0,$29\n" \ + ".set pop\n" : "=r"(__v)); \ + __v; }) +#elif defined(__i386__) +# define __get_tls() \ + ({ void** __v; __asm__("movl %%gs:0, %0" : "=r"(__v)); __v; }) +#elif defined(__x86_64__) +# define __get_tls() \ + ({ void** __v; __asm__("mov %%fs:0, %0" : "=r"(__v)); __v; }) +#else +#error "Unsupported architecture." +#endif + +// The Android Bionic team has allocated a TLS slot for TSan starting with N, +// given that Android currently doesn't support ELF TLS. It is used to store +// Sanitizers thread specific data. +static const int TLS_SLOT_TSAN = 8; + +ALWAYS_INLINE uptr *get_android_tls_ptr() { + return reinterpret_cast(&__get_tls()[TLS_SLOT_TSAN]); +} + +#endif // SANITIZER_ANDROID + } // namespace __sanitizer #endif // SANITIZER_FREEBSD || SANITIZER_LINUX Modified: vendor/compiler-rt/dist/lib/scudo/CMakeLists.txt ============================================================================== --- vendor/compiler-rt/dist/lib/scudo/CMakeLists.txt Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/scudo/CMakeLists.txt Tue May 2 18:30:55 2017 (r317687) @@ -14,6 +14,7 @@ set(SCUDO_SOURCES scudo_interceptors.cpp scudo_new_delete.cpp scudo_termination.cpp + scudo_tls_linux.cpp scudo_utils.cpp) # Enable the SSE 4.2 instruction set for scudo_crc32.cpp, if available. Modified: vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp ============================================================================== --- vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp Tue May 2 18:30:55 2017 (r317687) @@ -15,6 +15,7 @@ //===----------------------------------------------------------------------===// #include "scudo_allocator.h" +#include "scudo_tls.h" #include "scudo_utils.h" #include "sanitizer_common/sanitizer_allocator_interface.h" @@ -26,44 +27,6 @@ namespace __scudo { -#if SANITIZER_CAN_USE_ALLOCATOR64 -const uptr AllocatorSpace = ~0ULL; -const uptr AllocatorSize = 0x40000000000ULL; -typedef DefaultSizeClassMap SizeClassMap; -struct AP { - static const uptr kSpaceBeg = AllocatorSpace; - static const uptr kSpaceSize = AllocatorSize; - static const uptr kMetadataSize = 0; - typedef __scudo::SizeClassMap SizeClassMap; - typedef NoOpMapUnmapCallback MapUnmapCallback; - static const uptr kFlags = - SizeClassAllocator64FlagMasks::kRandomShuffleChunks; -}; -typedef SizeClassAllocator64 PrimaryAllocator; -#else -// Currently, the 32-bit Sanitizer allocator has not yet benefited from all the -// security improvements brought to the 64-bit one. This makes the 32-bit -// version of Scudo slightly less toughened. -static const uptr RegionSizeLog = 20; -static const uptr NumRegions = SANITIZER_MMAP_RANGE_SIZE >> RegionSizeLog; -# if SANITIZER_WORDSIZE == 32 -typedef FlatByteMap ByteMap; -# elif SANITIZER_WORDSIZE == 64 -typedef TwoLevelByteMap<(NumRegions >> 12), 1 << 12> ByteMap; -# endif // SANITIZER_WORDSIZE -typedef DefaultSizeClassMap SizeClassMap; -typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 0, SizeClassMap, - RegionSizeLog, ByteMap> PrimaryAllocator; -#endif // SANITIZER_CAN_USE_ALLOCATOR64 - -typedef SizeClassAllocatorLocalCache AllocatorCache; -typedef ScudoLargeMmapAllocator SecondaryAllocator; -typedef CombinedAllocator - ScudoBackendAllocator; - -static ScudoBackendAllocator &getBackendAllocator(); - -static thread_local Xorshift128Plus Prng; // Global static cookie, initialized at start-up. static uptr Cookie; @@ -88,6 +51,8 @@ INLINE u32 computeCRC32(u32 Crc, uptr Da #endif // defined(__SSE4_2__) } +static ScudoBackendAllocator &getBackendAllocator(); + struct ScudoChunk : UnpackedHeader { // We can't use the offset member of the chunk itself, as we would double // fetch it without any warranty that it wouldn't have been tampered. To @@ -188,32 +153,44 @@ ScudoChunk *getScudoChunk(uptr UserBeg) return reinterpret_cast(UserBeg - AlignedChunkHeaderSize); } -static bool ScudoInitIsRunning = false; +struct AllocatorOptions { + u32 QuarantineSizeMb; + u32 ThreadLocalQuarantineSizeKb; + bool MayReturnNull; + s32 ReleaseToOSIntervalMs; + bool DeallocationTypeMismatch; + bool DeleteSizeMismatch; + bool ZeroContents; -static pthread_once_t GlobalInited = PTHREAD_ONCE_INIT; -static pthread_key_t PThreadKey; + void setFrom(const Flags *f, const CommonFlags *cf); + void copyTo(Flags *f, CommonFlags *cf) const; +}; + +void AllocatorOptions::setFrom(const Flags *f, const CommonFlags *cf) { + MayReturnNull = cf->allocator_may_return_null; + ReleaseToOSIntervalMs = cf->allocator_release_to_os_interval_ms; + QuarantineSizeMb = f->QuarantineSizeMb; + ThreadLocalQuarantineSizeKb = f->ThreadLocalQuarantineSizeKb; + DeallocationTypeMismatch = f->DeallocationTypeMismatch; + DeleteSizeMismatch = f->DeleteSizeMismatch; + ZeroContents = f->ZeroContents; +} -static thread_local bool ThreadInited = false; -static thread_local bool ThreadTornDown = false; -static thread_local AllocatorCache Cache; - -static void teardownThread(void *p) { - uptr v = reinterpret_cast(p); - // The glibc POSIX thread-local-storage deallocation routine calls user - // provided destructors in a loop of PTHREAD_DESTRUCTOR_ITERATIONS. - // We want to be called last since other destructors might call free and the - // like, so we wait until PTHREAD_DESTRUCTOR_ITERATIONS before draining the - // quarantine and swallowing the cache. - if (v < PTHREAD_DESTRUCTOR_ITERATIONS) { - pthread_setspecific(PThreadKey, reinterpret_cast(v + 1)); - return; - } - drainQuarantine(); - getBackendAllocator().DestroyCache(&Cache); - ThreadTornDown = true; +void AllocatorOptions::copyTo(Flags *f, CommonFlags *cf) const { + cf->allocator_may_return_null = MayReturnNull; + cf->allocator_release_to_os_interval_ms = ReleaseToOSIntervalMs; + f->QuarantineSizeMb = QuarantineSizeMb; + f->ThreadLocalQuarantineSizeKb = ThreadLocalQuarantineSizeKb; + f->DeallocationTypeMismatch = DeallocationTypeMismatch; + f->DeleteSizeMismatch = DeleteSizeMismatch; + f->ZeroContents = ZeroContents; } -static void initInternal() { +static void initScudoInternal(const AllocatorOptions &Options); + +static bool ScudoInitIsRunning = false; + +void initScudo() { SanitizerToolName = "Scudo"; CHECK(!ScudoInitIsRunning && "Scudo init calls itself!"); ScudoInitIsRunning = true; @@ -227,25 +204,13 @@ static void initInternal() { AllocatorOptions Options; Options.setFrom(getFlags(), common_flags()); - initAllocator(Options); + initScudoInternal(Options); - MaybeStartBackgroudThread(); + // TODO(kostyak): determine if MaybeStartBackgroudThread could be of some use. ScudoInitIsRunning = false; } -static void initGlobal() { - pthread_key_create(&PThreadKey, teardownThread); - initInternal(); -} - -static void NOINLINE initThread() { - pthread_once(&GlobalInited, initGlobal); - pthread_setspecific(PThreadKey, reinterpret_cast(1)); - getBackendAllocator().InitCache(&Cache); - ThreadInited = true; -} - struct QuarantineCallback { explicit QuarantineCallback(AllocatorCache *Cache) : Cache_(Cache) {} @@ -278,26 +243,20 @@ struct QuarantineCallback { typedef Quarantine ScudoQuarantine; typedef ScudoQuarantine::Cache ScudoQuarantineCache; -static thread_local ScudoQuarantineCache ThreadQuarantineCache; +COMPILER_CHECK(sizeof(ScudoQuarantineCache) <= + sizeof(ScudoThreadContext::QuarantineCachePlaceHolder)); -void AllocatorOptions::setFrom(const Flags *f, const CommonFlags *cf) { - MayReturnNull = cf->allocator_may_return_null; - ReleaseToOSIntervalMs = cf->allocator_release_to_os_interval_ms; - QuarantineSizeMb = f->QuarantineSizeMb; - ThreadLocalQuarantineSizeKb = f->ThreadLocalQuarantineSizeKb; - DeallocationTypeMismatch = f->DeallocationTypeMismatch; - DeleteSizeMismatch = f->DeleteSizeMismatch; - ZeroContents = f->ZeroContents; +AllocatorCache *getAllocatorCache(ScudoThreadContext *ThreadContext) { + return &ThreadContext->Cache; } -void AllocatorOptions::copyTo(Flags *f, CommonFlags *cf) const { - cf->allocator_may_return_null = MayReturnNull; - cf->allocator_release_to_os_interval_ms = ReleaseToOSIntervalMs; - f->QuarantineSizeMb = QuarantineSizeMb; - f->ThreadLocalQuarantineSizeKb = ThreadLocalQuarantineSizeKb; - f->DeallocationTypeMismatch = DeallocationTypeMismatch; - f->DeleteSizeMismatch = DeleteSizeMismatch; - f->ZeroContents = ZeroContents; +ScudoQuarantineCache *getQuarantineCache(ScudoThreadContext *ThreadContext) { + return reinterpret_cast< + ScudoQuarantineCache *>(ThreadContext->QuarantineCachePlaceHolder); +} + +Xorshift128Plus *getPrng(ScudoThreadContext *ThreadContext) { + return &ThreadContext->Prng; } struct ScudoAllocator { @@ -313,6 +272,7 @@ struct ScudoAllocator { StaticSpinMutex FallbackMutex; AllocatorCache FallbackAllocatorCache; ScudoQuarantineCache FallbackQuarantineCache; + Xorshift128Plus FallbackPrng; bool DeallocationTypeMismatch; bool ZeroContents; @@ -361,13 +321,13 @@ struct ScudoAllocator { static_cast(Options.QuarantineSizeMb) << 20, static_cast(Options.ThreadLocalQuarantineSizeKb) << 10); BackendAllocator.InitCache(&FallbackAllocatorCache); - Cookie = Prng.getNext(); + FallbackPrng.initFromURandom(); + Cookie = FallbackPrng.getNext(); } // Helper function that checks for a valid Scudo chunk. nullptr isn't. bool isValidPointer(const void *UserPtr) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); if (!UserPtr) return false; uptr UserBeg = reinterpret_cast(UserPtr); @@ -379,8 +339,7 @@ struct ScudoAllocator { // Allocates a chunk. void *allocate(uptr Size, uptr Alignment, AllocType Type, bool ForceZeroContents = false) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); if (UNLIKELY(!IsPowerOfTwo(Alignment))) { dieWithMessage("ERROR: alignment is not a power of 2\n"); } @@ -407,11 +366,16 @@ struct ScudoAllocator { bool FromPrimary = PrimaryAllocator::CanAllocate(NeededSize, MinAlignment); void *Ptr; + uptr Salt; uptr AllocationAlignment = FromPrimary ? MinAlignment : Alignment; - if (LIKELY(!ThreadTornDown)) { - Ptr = BackendAllocator.Allocate(&Cache, NeededSize, AllocationAlignment); + ScudoThreadContext *ThreadContext = getThreadContext(); + if (LIKELY(ThreadContext)) { + Salt = getPrng(ThreadContext)->getNext(); + Ptr = BackendAllocator.Allocate(getAllocatorCache(ThreadContext), + NeededSize, AllocationAlignment); } else { SpinMutexLock l(&FallbackMutex); + Salt = FallbackPrng.getNext(); Ptr = BackendAllocator.Allocate(&FallbackAllocatorCache, NeededSize, AllocationAlignment); } @@ -453,7 +417,7 @@ struct ScudoAllocator { if (TrailingBytes) Header.SizeOrUnusedBytes = PageSize - TrailingBytes; } - Header.Salt = static_cast(Prng.getNext()); + Header.Salt = static_cast(Salt); getScudoChunk(UserBeg)->storeHeader(&Header); void *UserPtr = reinterpret_cast(UserBeg); // if (&__sanitizer_malloc_hook) __sanitizer_malloc_hook(UserPtr, Size); @@ -462,16 +426,17 @@ struct ScudoAllocator { // Place a chunk in the quarantine. In the event of a zero-sized quarantine, // we directly deallocate the chunk, otherwise the flow would lead to the - // chunk being checksummed twice, once before Put and once in Recycle, with - // no additional security value. + // chunk being loaded (and checked) twice, and stored (and checksummed) once, + // with no additional security value. void quarantineOrDeallocateChunk(ScudoChunk *Chunk, UnpackedHeader *Header, uptr Size) { bool BypassQuarantine = (AllocatorQuarantine.GetCacheSize() == 0); if (BypassQuarantine) { Chunk->eraseHeader(); void *Ptr = Chunk->getAllocBeg(Header); - if (LIKELY(!ThreadTornDown)) { - getBackendAllocator().Deallocate(&Cache, Ptr); + ScudoThreadContext *ThreadContext = getThreadContext(); + if (LIKELY(ThreadContext)) { + getBackendAllocator().Deallocate(getAllocatorCache(ThreadContext), Ptr); } else { SpinMutexLock Lock(&FallbackMutex); getBackendAllocator().Deallocate(&FallbackAllocatorCache, Ptr); @@ -480,9 +445,12 @@ struct ScudoAllocator { UnpackedHeader NewHeader = *Header; NewHeader.State = ChunkQuarantine; Chunk->compareExchangeHeader(&NewHeader, Header); - if (LIKELY(!ThreadTornDown)) { - AllocatorQuarantine.Put(&ThreadQuarantineCache, - QuarantineCallback(&Cache), Chunk, Size); + ScudoThreadContext *ThreadContext = getThreadContext(); + if (LIKELY(ThreadContext)) { + AllocatorQuarantine.Put(getQuarantineCache(ThreadContext), + QuarantineCallback( + getAllocatorCache(ThreadContext)), + Chunk, Size); } else { SpinMutexLock l(&FallbackMutex); AllocatorQuarantine.Put(&FallbackQuarantineCache, @@ -495,8 +463,7 @@ struct ScudoAllocator { // Deallocates a Chunk, which means adding it to the delayed free list (or // Quarantine). void deallocate(void *UserPtr, uptr DeleteSize, AllocType Type) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); // if (&__sanitizer_free_hook) __sanitizer_free_hook(UserPtr); if (!UserPtr) return; @@ -542,8 +509,7 @@ struct ScudoAllocator { // Reallocates a chunk. We can save on a new allocation if the new requested // size still fits in the chunk. void *reallocate(void *OldPtr, uptr NewSize) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); uptr UserBeg = reinterpret_cast(OldPtr); if (UNLIKELY(!IsAligned(UserBeg, MinAlignment))) { dieWithMessage("ERROR: attempted to reallocate a chunk not properly " @@ -585,8 +551,7 @@ struct ScudoAllocator { // Helper function that returns the actual usable size of a chunk. uptr getUsableSize(const void *Ptr) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); if (!Ptr) return 0; uptr UserBeg = reinterpret_cast(Ptr); @@ -602,22 +567,22 @@ struct ScudoAllocator { } void *calloc(uptr NMemB, uptr Size) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); uptr Total = NMemB * Size; if (Size != 0 && Total / Size != NMemB) // Overflow check return BackendAllocator.ReturnNullOrDieOnBadRequest(); return allocate(Total, MinAlignment, FromMalloc, true); } - void drainQuarantine() { - AllocatorQuarantine.Drain(&ThreadQuarantineCache, - QuarantineCallback(&Cache)); + void commitBack(ScudoThreadContext *ThreadContext) { + AllocatorCache *Cache = getAllocatorCache(ThreadContext); + AllocatorQuarantine.Drain(getQuarantineCache(ThreadContext), + QuarantineCallback(Cache)); + BackendAllocator.DestroyCache(Cache); } uptr getStats(AllocatorStat StatType) { - if (UNLIKELY(!ThreadInited)) - initThread(); + initThreadMaybe(); uptr stats[AllocatorStatCount]; BackendAllocator.GetStats(stats); return stats[StatType]; @@ -630,12 +595,18 @@ static ScudoBackendAllocator &getBackend return Instance.BackendAllocator; } -void initAllocator(const AllocatorOptions &Options) { +static void initScudoInternal(const AllocatorOptions &Options) { Instance.init(Options); } -void drainQuarantine() { - Instance.drainQuarantine(); +void ScudoThreadContext::init() { + getBackendAllocator().InitCache(&Cache); + Prng.initFromURandom(); + memset(QuarantineCachePlaceHolder, 0, sizeof(QuarantineCachePlaceHolder)); +} + +void ScudoThreadContext::commitBack() { + Instance.commitBack(this); } void *scudoMalloc(uptr Size, AllocType Type) { Modified: vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h ============================================================================== --- vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h Tue May 2 18:30:52 2017 (r317686) +++ vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h Tue May 2 18:30:55 2017 (r317687) @@ -53,7 +53,7 @@ struct UnpackedHeader { u64 Offset : 16; // Offset from the beginning of the backend // allocation to the beginning of the chunk // itself, in multiples of MinAlignment. See - /// comment about its maximum value and in init(). + // comment about its maximum value and in init(). u64 Salt : 8; }; @@ -62,7 +62,7 @@ COMPILER_CHECK(sizeof(UnpackedHeader) == // Minimum alignment of 8 bytes for 32-bit, 16 for 64-bit const uptr MinAlignmentLog = FIRST_32_SECOND_64(3, 4); -const uptr MaxAlignmentLog = 24; // 16 MB +const uptr MaxAlignmentLog = 24; // 16 MB const uptr MinAlignment = 1 << MinAlignmentLog; const uptr MaxAlignment = 1 << MaxAlignmentLog; @@ -70,21 +70,44 @@ const uptr ChunkHeaderSize = sizeof(Pack const uptr AlignedChunkHeaderSize = (ChunkHeaderSize + MinAlignment - 1) & ~(MinAlignment - 1); -struct AllocatorOptions { - u32 QuarantineSizeMb; - u32 ThreadLocalQuarantineSizeKb; - bool MayReturnNull; - s32 ReleaseToOSIntervalMs; - bool DeallocationTypeMismatch; - bool DeleteSizeMismatch; - bool ZeroContents; - - void setFrom(const Flags *f, const CommonFlags *cf); - void copyTo(Flags *f, CommonFlags *cf) const; +#if SANITIZER_CAN_USE_ALLOCATOR64 +const uptr AllocatorSpace = ~0ULL; +const uptr AllocatorSize = 0x40000000000ULL; // 4TB. +typedef DefaultSizeClassMap SizeClassMap; +struct AP { + static const uptr kSpaceBeg = AllocatorSpace; + static const uptr kSpaceSize = AllocatorSize; + static const uptr kMetadataSize = 0; + typedef __scudo::SizeClassMap SizeClassMap; + typedef NoOpMapUnmapCallback MapUnmapCallback; + static const uptr kFlags = + SizeClassAllocator64FlagMasks::kRandomShuffleChunks; }; +typedef SizeClassAllocator64 PrimaryAllocator; +#else +// Currently, the 32-bit Sanitizer allocator has not yet benefited from all the +// security improvements brought to the 64-bit one. This makes the 32-bit +// version of Scudo slightly less toughened. +static const uptr RegionSizeLog = 20; +static const uptr NumRegions = SANITIZER_MMAP_RANGE_SIZE >> RegionSizeLog; +# if SANITIZER_WORDSIZE == 32 +typedef FlatByteMap ByteMap; +# elif SANITIZER_WORDSIZE == 64 +typedef TwoLevelByteMap<(NumRegions >> 12), 1 << 12> ByteMap; +# endif // SANITIZER_WORDSIZE +typedef DefaultSizeClassMap SizeClassMap; +typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 0, SizeClassMap, + RegionSizeLog, ByteMap> PrimaryAllocator; +#endif // SANITIZER_CAN_USE_ALLOCATOR64 + +#include "scudo_allocator_secondary.h" -void initAllocator(const AllocatorOptions &options); -void drainQuarantine(); +typedef SizeClassAllocatorLocalCache AllocatorCache; +typedef ScudoLargeMmapAllocator SecondaryAllocator; +typedef CombinedAllocator + ScudoBackendAllocator; + +void initScudo(); void *scudoMalloc(uptr Size, AllocType Type); void scudoFree(void *Ptr, AllocType Type); @@ -98,8 +121,6 @@ int scudoPosixMemalign(void **MemPtr, up void *scudoAlignedAlloc(uptr Alignment, uptr Size); uptr scudoMallocUsableSize(void *Ptr); -#include "scudo_allocator_secondary.h" - } // namespace __scudo #endif // SCUDO_ALLOCATOR_H_ Added: vendor/compiler-rt/dist/lib/scudo/scudo_tls.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/compiler-rt/dist/lib/scudo/scudo_tls.h Tue May 2 18:30:55 2017 (r317687) @@ -0,0 +1,40 @@ +//===-- scudo_tls.h ---------------------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +/// +/// Scudo thread local structure definition. +/// Implementation will differ based on the thread local storage primitives +/// offered by the underlying platform. +/// +//===----------------------------------------------------------------------===// + +#ifndef SCUDO_TLS_H_ +#define SCUDO_TLS_H_ + +#include "scudo_allocator.h" +#include "scudo_utils.h" + +namespace __scudo { + +struct ALIGNED(64) ScudoThreadContext { + public: + AllocatorCache Cache; + Xorshift128Plus Prng; + uptr QuarantineCachePlaceHolder[4]; + void init(); + void commitBack(); +}; + +void initThread(); + +// Fastpath functions are defined in the following platform specific headers. +#include "scudo_tls_linux.h" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Tue May 2 18:30:53 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B60A3D5BD29; Tue, 2 May 2017 18:30:53 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6AA8C2F0; Tue, 2 May 2017 18:30:53 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IUqVF000913; Tue, 2 May 2017 18:30:52 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IUq7W000912; Tue, 2 May 2017 18:30:52 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021830.v42IUq7W000912@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:30:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317686 - vendor/clang/clang-trunk-r301939 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:30:53 -0000 Author: dim Date: Tue May 2 18:30:52 2017 New Revision: 317686 URL: https://svnweb.freebsd.org/changeset/base/317686 Log: Tag clang trunk r301939. Added: vendor/clang/clang-trunk-r301939/ - copied from r317685, vendor/clang/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:31:15 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 18F09D5BE02; Tue, 2 May 2017 18:31:15 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C65587B4; Tue, 2 May 2017 18:31:14 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IVDjq001198; Tue, 2 May 2017 18:31:13 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IVDBb001197; Tue, 2 May 2017 18:31:13 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021831.v42IVDBb001197@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:31:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317691 - vendor/lld/lld-trunk-r301939 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:31:15 -0000 Author: dim Date: Tue May 2 18:31:13 2017 New Revision: 317691 URL: https://svnweb.freebsd.org/changeset/base/317691 Log: Tag lld trunk r301939. Added: vendor/lld/lld-trunk-r301939/ - copied from r317690, vendor/lld/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:31:03 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 36B21D5BD70; Tue, 2 May 2017 18:31:03 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D74A75DF; Tue, 2 May 2017 18:31:02 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IV1VI001037; Tue, 2 May 2017 18:31:01 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IV1xB001036; Tue, 2 May 2017 18:31:01 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021831.v42IV1xB001036@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:31:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317688 - vendor/compiler-rt/compiler-rt-trunk-r301939 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:31:03 -0000 Author: dim Date: Tue May 2 18:31:01 2017 New Revision: 317688 URL: https://svnweb.freebsd.org/changeset/base/317688 Log: Tag compiler-rt trunk r301939. Added: vendor/compiler-rt/compiler-rt-trunk-r301939/ - copied from r317687, vendor/compiler-rt/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:31:06 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E7F49D5BD9A; Tue, 2 May 2017 18:31:06 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 98AD2673; Tue, 2 May 2017 18:31:06 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IV5bA001085; Tue, 2 May 2017 18:31:05 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IV5tx001084; Tue, 2 May 2017 18:31:05 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021831.v42IV5tx001084@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:31:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317689 - vendor/libc++/libc++-trunk-r301939 X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:31:07 -0000 Author: dim Date: Tue May 2 18:31:05 2017 New Revision: 317689 URL: https://svnweb.freebsd.org/changeset/base/317689 Log: Tag libc++ trunk r301939. Added: vendor/libc++/libc++-trunk-r301939/ - copied from r317688, vendor/libc++/dist/ From owner-svn-src-vendor@freebsd.org Tue May 2 18:31:12 2017 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 1E193D5BDE2; Tue, 2 May 2017 18:31:12 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B4F6275B; Tue, 2 May 2017 18:31:11 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v42IVAQ7001149; Tue, 2 May 2017 18:31:10 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v42IV9Qi001131; Tue, 2 May 2017 18:31:09 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201705021831.v42IV9Qi001131@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Tue, 2 May 2017 18:31:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r317690 - in vendor/lld/dist: COFF ELF docs test/COFF test/COFF/Inputs test/ELF test/ELF/Inputs test/ELF/linkerscript X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 May 2017 18:31:12 -0000 Author: dim Date: Tue May 2 18:31:09 2017 New Revision: 317690 URL: https://svnweb.freebsd.org/changeset/base/317690 Log: Vendor import of lld trunk r301939: https://llvm.org/svn/llvm-project/lld/trunk@301939 Added: vendor/lld/dist/test/COFF/Inputs/constant-import.s (contents, props changed) vendor/lld/dist/test/COFF/constant.test vendor/lld/dist/test/COFF/icf-data.test vendor/lld/dist/test/ELF/Inputs/eh-frame-end.s (contents, props changed) vendor/lld/dist/test/ELF/debug-gnu-pubnames.s (contents, props changed) vendor/lld/dist/test/ELF/eh-frame-begin-end.s (contents, props changed) vendor/lld/dist/test/ELF/linkerscript/section-metadata.s (contents, props changed) Modified: vendor/lld/dist/COFF/Chunks.cpp vendor/lld/dist/COFF/Error.cpp vendor/lld/dist/COFF/ICF.cpp vendor/lld/dist/COFF/InputFiles.cpp vendor/lld/dist/COFF/InputFiles.h vendor/lld/dist/COFF/MapFile.cpp vendor/lld/dist/ELF/Config.h vendor/lld/dist/ELF/Driver.cpp vendor/lld/dist/ELF/Driver.h vendor/lld/dist/ELF/Error.cpp vendor/lld/dist/ELF/InputFiles.cpp vendor/lld/dist/ELF/InputFiles.h vendor/lld/dist/ELF/InputSection.cpp vendor/lld/dist/ELF/LTO.cpp vendor/lld/dist/ELF/LinkerScript.cpp vendor/lld/dist/ELF/LinkerScript.h vendor/lld/dist/ELF/MapFile.cpp vendor/lld/dist/ELF/Options.td vendor/lld/dist/ELF/OutputSections.cpp vendor/lld/dist/ELF/OutputSections.h vendor/lld/dist/ELF/Strings.h vendor/lld/dist/ELF/SymbolTable.cpp vendor/lld/dist/ELF/SyntheticSections.cpp vendor/lld/dist/ELF/Writer.cpp vendor/lld/dist/docs/index.rst vendor/lld/dist/test/COFF/lldmap.test vendor/lld/dist/test/ELF/abs-conflict.s vendor/lld/dist/test/ELF/driver-access.test vendor/lld/dist/test/ELF/gdb-index.s vendor/lld/dist/test/ELF/linkerscript/sections.s vendor/lld/dist/test/ELF/map-file.s vendor/lld/dist/test/ELF/relocation-in-merge.s Modified: vendor/lld/dist/COFF/Chunks.cpp ============================================================================== --- vendor/lld/dist/COFF/Chunks.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/Chunks.cpp Tue May 2 18:31:09 2017 (r317690) @@ -326,41 +326,38 @@ void SEHTableChunk::writeTo(uint8_t *Buf // usually loaded to that address. However, if there's already another // DLL that overlaps, the loader has to relocate it. To do that, DLLs // contain .reloc sections which contain offsets that need to be fixed -// up at runtime. If the loader find that a DLL cannot be loaded to its +// up at runtime. If the loader finds that a DLL cannot be loaded to its // desired base address, it loads it to somewhere else, and add - to each offset that is -// specified by .reloc section. +// specified by the .reloc section. In ELF terms, .reloc sections +// contain relative relocations in REL format (as opposed to RELA.) // -// In ELF terms, .reloc sections contain arrays of relocation offsets. -// All these offsets in the section are implicitly R_*_RELATIVE, and -// addends are read from section contents (so it is REL as opposed to -// RELA). +// This already significantly reduces the size of relocations compared +// to ELF .rel.dyn, but Windows does more to reduce it (probably because +// it was invented for PCs in the late '80s or early '90s.) Offsets in +// .reloc are grouped by page where the page size is 12 bits, and +// offsets sharing the same page address are stored consecutively to +// represent them with less space. This is very similar to the page +// table which is grouped by (multiple stages of) pages. // -// This already reduce the size of relocations to 1/3 compared to ELF -// .dynrel, but Windows does more to reduce it (probably because it was -// invented for PCs in the late '80s or early '90s.) Offsets in .reloc -// are grouped by page where page size is 16 bits, and offsets sharing -// the same page address are stored consecutively to represent them with -// less space. This is a very similar to the page table which is grouped -// by (multiple stages of) pages. -// -// For example, let's say we have 0x00030, 0x00500, 0x01000, 0x01100, -// 0x20004, and 0x20008 in a .reloc section. In the section, they are -// represented like this: +// For example, let's say we have 0x00030, 0x00500, 0x00700, 0x00A00, +// 0x20004, and 0x20008 in a .reloc section for x64. The uppermost 4 +// bits have a type IMAGE_REL_BASED_DIR64 or 0xA. In the section, they +// are represented like this: // // 0x00000 -- page address (4 bytes) // 16 -- size of this block (4 bytes) -// 0x0030 -- entries (2 bytes each) -// 0x0500 -// 0x1000 -// 0x1100 +// 0xA030 -- entries (2 bytes each) +// 0xA500 +// 0xA700 +// 0xAA00 // 0x20000 -- page address (4 bytes) // 12 -- size of this block (4 bytes) -// 0x0004 -- entries (2 bytes each) -// 0x0008 +// 0xA004 -- entries (2 bytes each) +// 0xA008 // -// Usually we have a lot of relocatinos for each page, so the number of -// bytes for one .reloc entry is close to 2 bytes. +// Usually we have a lot of relocations for each page, so the number of +// bytes for one .reloc entry is close to 2 bytes on average. BaserelChunk::BaserelChunk(uint32_t Page, Baserel *Begin, Baserel *End) { // Block header consists of 4 byte page RVA and 4 byte block size. // Each entry is 2 byte. Last entry may be padding. Modified: vendor/lld/dist/COFF/Error.cpp ============================================================================== --- vendor/lld/dist/COFF/Error.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/Error.cpp Tue May 2 18:31:09 2017 (r317690) @@ -59,6 +59,7 @@ void log(const Twine &Msg) { if (Config->Verbose) { std::lock_guard Lock(Mu); outs() << Argv0 << ": " << Msg << "\n"; + outs().flush(); } } Modified: vendor/lld/dist/COFF/ICF.cpp ============================================================================== --- vendor/lld/dist/COFF/ICF.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/ICF.cpp Tue May 2 18:31:09 2017 (r317690) @@ -71,10 +71,18 @@ uint32_t ICF::getHash(SectionChunk *C) { } // Returns true if section S is subject of ICF. +// +// Microsoft's documentation +// (https://msdn.microsoft.com/en-us/library/bxwfs976.aspx; visited April +// 2017) says that /opt:icf folds both functions and read-only data. +// Despite that, the MSVC linker folds only functions. We found +// a few instances of programs that are not safe for data merging. +// Therefore, we merge only functions just like the MSVC tool. bool ICF::isEligible(SectionChunk *C) { bool Global = C->Sym && C->Sym->isExternal(); + bool Executable = C->getPermissions() & llvm::COFF::IMAGE_SCN_MEM_EXECUTE; bool Writable = C->getPermissions() & llvm::COFF::IMAGE_SCN_MEM_WRITE; - return C->isCOMDAT() && C->isLive() && Global && !Writable; + return C->isCOMDAT() && C->isLive() && Global && Executable && !Writable; } // Split a range into smaller ranges by recoloring sections Modified: vendor/lld/dist/COFF/InputFiles.cpp ============================================================================== --- vendor/lld/dist/COFF/InputFiles.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/InputFiles.cpp Tue May 2 18:31:09 2017 (r317690) @@ -327,6 +327,9 @@ void ImportFile::parse() { ImpSym = cast( Symtab->addImportData(ImpName, this)->body()); + if (Hdr->getType() == llvm::COFF::IMPORT_CONST) + ConstSym = + cast(Symtab->addImportData(Name, this)->body()); // If type is function, we need to create a thunk which jump to an // address pointed by the __imp_ symbol. (This allows you to call Modified: vendor/lld/dist/COFF/InputFiles.h ============================================================================== --- vendor/lld/dist/COFF/InputFiles.h Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/InputFiles.h Tue May 2 18:31:09 2017 (r317690) @@ -167,6 +167,7 @@ public: static bool classof(const InputFile *F) { return F->kind() == ImportKind; } DefinedImportData *ImpSym = nullptr; + DefinedImportData *ConstSym = nullptr; DefinedImportThunk *ThunkSym = nullptr; std::string DLLName; Modified: vendor/lld/dist/COFF/MapFile.cpp ============================================================================== --- vendor/lld/dist/COFF/MapFile.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/COFF/MapFile.cpp Tue May 2 18:31:09 2017 (r317690) @@ -11,21 +11,21 @@ // hierarchically the output sections, input sections, input files and // symbol: // -// Address Size Align Out In File Symbol -// ================================================================= -// 00201000 00000015 4 .text -// 00201000 0000000e 4 .text -// 00201000 0000000e 4 test.o -// 0020100e 00000000 0 local -// 00201005 00000000 0 f(int) +// Address Size Align Out File Symbol +// 00201000 00000015 4 .text +// 00201000 0000000e 4 test.o:(.text) +// 0020100e 00000000 0 local +// 00201005 00000000 0 f(int) // //===----------------------------------------------------------------------===// #include "MapFile.h" #include "Error.h" +#include "SymbolTable.h" #include "Symbols.h" #include "Writer.h" +#include "lld/Core/Parallel.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; @@ -34,72 +34,58 @@ using namespace llvm::object; using namespace lld; using namespace lld::coff; -static void writeOutSecLine(raw_fd_ostream &OS, uint64_t Address, uint64_t Size, - uint64_t Align, StringRef Name) { - OS << format("%08llx %08llx %5lld ", Address, Size, Align) - << left_justify(Name, 7); -} - -static void writeInSecLine(raw_fd_ostream &OS, uint64_t Address, uint64_t Size, - uint64_t Align, StringRef Name) { - // Pass an empty name to align the text to the correct column. - writeOutSecLine(OS, Address, Size, Align, ""); - OS << ' ' << left_justify(Name, 7); -} - -static void writeFileLine(raw_fd_ostream &OS, uint64_t Address, uint64_t Size, - uint64_t Align, StringRef Name) { - // Pass an empty name to align the text to the correct column. - writeInSecLine(OS, Address, Size, Align, ""); - OS << ' ' << left_justify(Name, 7); -} +typedef DenseMap> + SymbolMapTy; -static void writeSymbolLine(raw_fd_ostream &OS, uint64_t Address, uint64_t Size, - StringRef Name) { - // Pass an empty name to align the text to the correct column. - writeFileLine(OS, Address, Size, 0, ""); - OS << ' ' << left_justify(Name, 7); -} - -static void writeSectionChunk(raw_fd_ostream &OS, const SectionChunk *SC, - StringRef &PrevName) { - StringRef Name = SC->getSectionName(); - if (Name != PrevName) { - writeInSecLine(OS, SC->getRVA(), SC->getSize(), SC->getAlign(), Name); - OS << '\n'; - PrevName = Name; - } - coff::ObjectFile *File = SC->File; - if (!File) - return; - writeFileLine(OS, SC->getRVA(), SC->getSize(), SC->getAlign(), - toString(File)); - OS << '\n'; - ArrayRef Syms = File->getSymbols(); - for (SymbolBody *Sym : Syms) { - auto *DR = dyn_cast(Sym); - if (!DR || DR->getChunk() != SC || - DR->getCOFFSymbol().isSectionDefinition()) - continue; - writeSymbolLine(OS, DR->getRVA(), SC->getSize(), toString(*Sym)); - OS << '\n'; +// Print out the first three columns of a line. +static void writeHeader(raw_ostream &OS, uint64_t Addr, uint64_t Size, + uint64_t Align) { + OS << format("%08llx %08llx %5lld ", Addr, Size, Align); +} + +static std::string indent(int Depth) { return std::string(Depth * 8, ' '); } + +// Returns a list of all symbols that we want to print out. +static std::vector getSymbols() { + std::vector V; + for (coff::ObjectFile *File : Symtab->ObjectFiles) + for (SymbolBody *B : File->getSymbols()) + if (auto *Sym = dyn_cast(B)) + if (Sym && !Sym->getCOFFSymbol().isSectionDefinition()) + V.push_back(Sym); + return V; +} + +// Returns a map from sections to their symbols. +static SymbolMapTy getSectionSyms(ArrayRef Syms) { + SymbolMapTy Ret; + for (DefinedRegular *S : Syms) + Ret[S->getChunk()].push_back(S); + + // Sort symbols by address. + for (auto &It : Ret) { + SmallVectorImpl &V = It.second; + std::sort(V.begin(), V.end(), [](DefinedRegular *A, DefinedRegular *B) { + return A->getRVA() < B->getRVA(); + }); } + return Ret; } -static void writeMapFile2(raw_fd_ostream &OS, - ArrayRef OutputSections) { - OS << "Address Size Align Out In File Symbol\n"; - - for (OutputSection *Sec : OutputSections) { - uint32_t VA = Sec->getRVA(); - writeOutSecLine(OS, VA, Sec->getVirtualSize(), /*Align=*/PageSize, - Sec->getName()); - OS << '\n'; - StringRef PrevName = ""; - for (Chunk *C : Sec->getChunks()) - if (const auto *SC = dyn_cast(C)) - writeSectionChunk(OS, SC, PrevName); - } +// Construct a map from symbols to their stringified representations. +static DenseMap +getSymbolStrings(ArrayRef Syms) { + std::vector Str(Syms.size()); + parallel_for((size_t)0, Syms.size(), [&](size_t I) { + raw_string_ostream OS(Str[I]); + writeHeader(OS, Syms[I]->getRVA(), 0, 0); + OS << indent(2) << toString(*Syms[I]); + }); + + DenseMap Ret; + for (size_t I = 0, E = Syms.size(); I < E; ++I) + Ret[Syms[I]] = std::move(Str[I]); + return Ret; } void coff::writeMapFile(ArrayRef OutputSections) { @@ -110,5 +96,30 @@ void coff::writeMapFile(ArrayRefMapFile, EC, sys::fs::F_None); if (EC) fatal("cannot open " + Config->MapFile + ": " + EC.message()); - writeMapFile2(OS, OutputSections); + + // Collect symbol info that we want to print out. + std::vector Syms = getSymbols(); + SymbolMapTy SectionSyms = getSectionSyms(Syms); + DenseMap SymStr = getSymbolStrings(Syms); + + // Print out the header line. + OS << "Address Size Align Out In Symbol\n"; + + // Print out file contents. + for (OutputSection *Sec : OutputSections) { + writeHeader(OS, Sec->getRVA(), Sec->getVirtualSize(), /*Align=*/PageSize); + OS << Sec->getName() << '\n'; + + for (Chunk *C : Sec->getChunks()) { + auto *SC = dyn_cast(C); + if (!SC) + continue; + + writeHeader(OS, SC->getRVA(), SC->getSize(), SC->getAlign()); + OS << indent(1) << SC->File->getName() << ":(" << SC->getSectionName() + << ")\n"; + for (DefinedRegular *Sym : SectionSyms[SC]) + OS << SymStr[Sym] << '\n'; + } + } } Modified: vendor/lld/dist/ELF/Config.h ============================================================================== --- vendor/lld/dist/ELF/Config.h Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/ELF/Config.h Tue May 2 18:31:09 2017 (r317690) @@ -89,7 +89,7 @@ struct Configuration { llvm::StringRef SoName; llvm::StringRef Sysroot; llvm::StringRef ThinLTOCacheDir; - std::string RPath; + std::string Rpath; std::vector VersionDefinitions; std::vector AuxiliaryList; std::vector SearchPaths; Modified: vendor/lld/dist/ELF/Driver.cpp ============================================================================== --- vendor/lld/dist/ELF/Driver.cpp Tue May 2 18:31:05 2017 (r317689) +++ vendor/lld/dist/ELF/Driver.cpp Tue May 2 18:31:09 2017 (r317690) @@ -124,7 +124,7 @@ static std::tuple -LinkerDriver::getArchiveMembers(MemoryBufferRef MB) { +static getArchiveMembers(MemoryBufferRef MB) { std::unique_ptr File = check(Archive::create(MB), MB.getBufferIdentifier() + ": failed to parse archive"); @@ -242,6 +242,9 @@ static void checkOptions(opt::InputArgLi if (Config->Pie && Config->Shared) error("-shared and -pie may not be used together"); + if (!Config->Shared && !Config->AuxiliaryList.empty()) + error("-f may not be used without -shared"); + if (Config->Relocatable) { if (Config->Shared) error("-r and -shared may not be used together"); @@ -396,7 +399,7 @@ static std::vector getArgs(op return V; } -static std::string getRPath(opt::InputArgList &Args) { +static std::string getRpath(opt::InputArgList &Args) { std::vector V = getArgs(Args, OPT_rpath); return llvm::join(V.begin(), V.end(), ":"); } @@ -444,16 +447,14 @@ static UnresolvedPolicy getUnresolvedSym } static Target2Policy getTarget2(opt::InputArgList &Args) { - if (auto *Arg = Args.getLastArg(OPT_target2)) { - StringRef S = Arg->getValue(); - if (S == "rel") - return Target2Policy::Rel; - if (S == "abs") - return Target2Policy::Abs; - if (S == "got-rel") - return Target2Policy::GotRel; - error("unknown --target2 option: " + S); - } + StringRef S = getString(Args, OPT_target2, "got-rel"); + if (S == "rel") + return Target2Policy::Rel; + if (S == "abs") + return Target2Policy::Abs; + if (S == "got-rel") + return Target2Policy::GotRel; + error("unknown --target2 option: " + S); return Target2Policy::GotRel; } @@ -550,6 +551,29 @@ static std::pair getHashStyl return {true, true}; } +// Parse --build-id or --build-id=