From patchwork Sun Oct 29 02:06:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 23951 Received: (qmail 36619 invoked by alias); 29 Oct 2017 02:07:07 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 32468 invoked by uid 89); 29 Oct 2017 02:07:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-pg0-f50.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition:user-agent; bh=4+4laWx4AaY+WSqI+sZ6tJGwho9mg3Nty2uCkfHl7tE=; b=iXRV5pr6K/xfaEj050fLxOES5/bOqFI0+jZjwye1X9/nq0VW3uIKnQRXPiANjmi5x4 7gDqGZlA9sCKADlgSHdTbY3LWqZ2atJq92g84vXkbvEZOMErZAXYXeQndgUwMrSSzOUG bi4gVMtk65Ijb2YKkau6Mz4Wlep95Zc2xEbU6hl4hNteA7R/msNhFRURubJe4DDzYufm hllAevUl38K8z+V/mSbwYYJwr0eV2q7CFAZ64bIMYQT5vI6FUgZFzOMzESX6KBi+adl7 SdKAPUIU6nvchLNL5ngbZdvs5XsZ+fz3dNuk9+pDP07v8aXgGCWRHVQf4YH/Zu/MddOy hgJQ== X-Gm-Message-State: AMCzsaWgnVbUINU299iDb2k8uh4DFn+ebDlOMLpCZZCNBOxBxf4fXOjc nVX0Kjvw9NLTVj6HMOSLn3Pg1w== X-Google-Smtp-Source: ABhQp+R4SGmWMHRm8K+mcwibgsSIdIRjNtTeZx+Iopv86L8RH+ZdQntpOfSgQBBrCUIX3hDWejZRcg== X-Received: by 10.99.98.6 with SMTP id w6mr4151740pgb.189.1509242819330; Sat, 28 Oct 2017 19:06:59 -0700 (PDT) Date: Sat, 28 Oct 2017 19:06:57 -0700 From: "H.J. Lu" To: GNU C Library Subject: [PATCH] Use newly built crt*.o files to build shared objects [BZ #22362] Message-ID: <20171029020657.GA13103@gmail.com> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.9.1 (2017-09-22) When multi-lib GCC is used to build glibc, the search order of GCC driver for crt*.o is -B*/`gcc -print-multi-directory`, the installed diretory, -B*/. This patch extends multi-lib support from nptl/Makefile to csu/Makefile so that -B/glibc-build-directory/csu/ will pick up the newly built crt*.o. Tested on x86-64 for i686 and x32. OK for master? H.J. --- [BZ #22362] * config.make.in (multidir): New. * configure.ac (libc_cv_multidir): New. AC_SUBST. * configure: Regenerated. * csu/Makefile [$(multidir) != .](multilib-extra-objs): New. [$(multidir) != .](extra-objs): Add $(multilib-extra-objs). [$(multidir) != .]($(addprefix $(objpfx)$(multidir)/, $(install-lib))): New target. * nptl/Makefile: Don't include multidir.mk. ($(objpfx)multidir.mk): Removed. --- config.make.in | 1 + configure | 6 ++++++ configure.ac | 5 +++++ csu/Makefile | 11 +++++++++++ nptl/Makefile | 10 ---------- 5 files changed, 23 insertions(+), 10 deletions(-) diff --git a/config.make.in b/config.make.in index fd2dbc91d1..bd84a5747d 100644 --- a/config.make.in +++ b/config.make.in @@ -21,6 +21,7 @@ includedir = @includedir@ datarootdir = @datarootdir@ localstatedir = @libc_cv_localstatedir@ localedir = @localedir@ +multidir= @libc_cv_multidir@ # Should we use and build ldconfig? use-ldconfig = @use_ldconfig@ diff --git a/configure b/configure index 6010977c58..c8697d9b1a 100755 --- a/configure +++ b/configure @@ -594,6 +594,7 @@ mach_interface_list DEFINES static_nss profile +libc_cv_multidir libc_cv_pie_default libc_cv_pic_default shared @@ -6698,6 +6699,11 @@ fi $as_echo "$libc_cv_pie_default" >&6; } +# Set the `multidir' variable by grabbing the variable from the compiler. +# We do it once and save the result in a generated makefile. +libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory` + + diff --git a/configure.ac b/configure.ac index 148f7d1682..9f25c9fa0f 100644 --- a/configure.ac +++ b/configure.ac @@ -1783,6 +1783,11 @@ fi rm -f conftest.*]) AC_SUBST(libc_cv_pie_default) +# Set the `multidir' variable by grabbing the variable from the compiler. +# We do it once and save the result in a generated makefile. +libc_cv_multidir=`${CC-cc} $CFLAGS $CPPFLAGS -print-multi-directory` +AC_SUBST(libc_cv_multidir) + AC_SUBST(profile) AC_SUBST(static_nss) diff --git a/csu/Makefile b/csu/Makefile index fd668a5d00..b9803be0ff 100644 --- a/csu/Makefile +++ b/csu/Makefile @@ -77,6 +77,11 @@ crtstuff = crti crtn install-lib += $(crtstuff:=.o) extra-objs += $(crtstuff:=.o) +ifneq ($(multidir),.) +multilib-extra-objs = $(addprefix $(multidir)/, $(install-lib)) +extra-objs += $(multilib-extra-objs) +endif + extra-objs += abi-note.o init.o asm-CPPFLAGS += -I$(objpfx). @@ -147,3 +152,9 @@ $(objpfx)abi-tag.h: $(..)abi-tags done if test -r $@.new; then mv -f $@.new $@; \ else echo >&2 'This configuration not matched in $<'; exit 1; fi + +ifneq ($(multidir),.) +$(addprefix $(objpfx)$(multidir)/, $(install-lib)): $(addprefix $(objpfx), $(install-lib)) + $(make-target-directory) + ln -f $(objpfx)/$(@F) $@ +endif diff --git a/nptl/Makefile b/nptl/Makefile index d819349f43..314cbda46a 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -401,16 +401,6 @@ tests: $(test-modules) endif ifeq ($(build-shared),yes) - -# Set the `multidir' variable by grabbing the variable from the compiler. -# We do it once and save the result in a generated makefile. --include $(objpfx)multidir.mk -$(objpfx)multidir.mk: $(common-objpfx)config.make - $(make-target-directory) - dir=`$(CC) $(CFLAGS) $(CPPFLAGS) -print-multi-directory`; \ - echo "multidir := $$dir" > $@T - mv -f $@T $@ - crti-objs := crti.o crtn-objs := crtn.o ifneq (,$(patsubst .,,$(multidir)))