From owner-svn-src-projects@freebsd.org Mon Jul 3 13:41:07 2017 Return-Path: Delivered-To: svn-src-projects@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 3FD319E715E for ; Mon, 3 Jul 2017 13:41:07 +0000 (UTC) (envelope-from emaste@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 09FC370D43; Mon, 3 Jul 2017 13:41:06 +0000 (UTC) (envelope-from emaste@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v63Df6Ka017040; Mon, 3 Jul 2017 13:41:06 GMT (envelope-from emaste@FreeBSD.org) Received: (from emaste@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v63Df6bm017039; Mon, 3 Jul 2017 13:41:06 GMT (envelope-from emaste@FreeBSD.org) Message-Id: <201707031341.v63Df6bm017039@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: emaste set sender to emaste@FreeBSD.org using -f From: Ed Maste Date: Mon, 3 Jul 2017 13:41:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r320597 - projects/clang500-import/contrib/llvm/tools/lld/ELF X-SVN-Group: projects X-SVN-Commit-Author: emaste X-SVN-Commit-Paths: projects/clang500-import/contrib/llvm/tools/lld/ELF X-SVN-Commit-Revision: 320597 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jul 2017 13:41:07 -0000 Author: emaste Date: Mon Jul 3 13:41:05 2017 New Revision: 320597 URL: https://svnweb.freebsd.org/changeset/base/320597 Log: Revert LLVM r306813: Resolve references properly when using .symver This LLD commit was intended to fix one case of symbol versioning (LLVM PR28414) but broke FreeBSD buildworld. It has been reverted upstream in LLVM r306996. Discussed with: dim Modified: projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp Modified: projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp ============================================================================== --- projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp Mon Jul 3 13:02:21 2017 (r320596) +++ projects/clang500-import/contrib/llvm/tools/lld/ELF/SymbolTable.cpp Mon Jul 3 13:41:05 2017 (r320597) @@ -712,31 +712,15 @@ void SymbolTable::assignWildcardVersion(SymbolVe B->symbol()->VersionId = VersionId; } -static bool isDefaultVersion(SymbolBody *B) { - return B->isInCurrentDSO() && B->getName().find("@@") != StringRef::npos; -} - // This function processes version scripts by updating VersionId // member of symbols. template void SymbolTable::scanVersionScript() { // Symbol themselves might know their versions because symbols // can contain versions in the form of @. - // Let them parse and update their names to exclude version suffix. - for (Symbol *Sym : SymVector) { - SymbolBody *Body = Sym->body(); - bool IsDefault = isDefaultVersion(Body); - Body->parseSymbolVersion(); - - if (!IsDefault) - continue; - - // @@ means the symbol is the default version. If that's the - // case, the symbol is not used only to resolve of version - // but also undefined unversioned symbols with name . - SymbolBody *S = find(Body->getName()); - if (S && S->isUndefined()) - S->copy(Body); - } + // Let them parse their names. + if (!Config->VersionDefinitions.empty()) + for (Symbol *Sym : SymVector) + Sym->body()->parseSymbolVersion(); // Handle edge cases first. handleAnonymousVersion();