Use newly built crt*.o files to build shared objects [BZ #22362]
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 adds multi-lib support 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. [BZ #22362] * Makerules (make-link-multidir): New. * 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.
This commit is contained in:
parent
4e2dff67be
commit
abcb584d0e
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
||||||
|
2017-11-06 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
[BZ #22362]
|
||||||
|
* Makerules (make-link-multidir): New.
|
||||||
|
* 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.
|
||||||
|
|
||||||
2017-11-06 Joseph Myers <joseph@codesourcery.com>
|
2017-11-06 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #22402]
|
[BZ #22402]
|
||||||
|
|
|
@ -1079,6 +1079,11 @@ rm -f $@.new
|
||||||
$(SHELL) $(..)scripts/rellns-sh $< $@.new
|
$(SHELL) $(..)scripts/rellns-sh $< $@.new
|
||||||
mv -f $@.new $@
|
mv -f $@.new $@
|
||||||
endef
|
endef
|
||||||
|
define make-link-multidir
|
||||||
|
$(patsubst %/,cd %,$(objpfx)); \
|
||||||
|
$(LN_S) . $(multidir) 2> /dev/null; \
|
||||||
|
test -L $(multidir)
|
||||||
|
endef
|
||||||
else
|
else
|
||||||
# If we have no symbolic links don't bother with rellns-sh.
|
# If we have no symbolic links don't bother with rellns-sh.
|
||||||
define make-link
|
define make-link
|
||||||
|
@ -1086,6 +1091,10 @@ rm -f $@.new
|
||||||
$(LN_S) $< $@.new
|
$(LN_S) $< $@.new
|
||||||
mv -f $@.new $@
|
mv -f $@.new $@
|
||||||
endef
|
endef
|
||||||
|
define make-link-multidir
|
||||||
|
$(make-target-directory)
|
||||||
|
ln -f $(objpfx)/$(@F) $@
|
||||||
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
|
|
|
@ -21,6 +21,7 @@ includedir = @includedir@
|
||||||
datarootdir = @datarootdir@
|
datarootdir = @datarootdir@
|
||||||
localstatedir = @libc_cv_localstatedir@
|
localstatedir = @libc_cv_localstatedir@
|
||||||
localedir = @localedir@
|
localedir = @localedir@
|
||||||
|
multidir= @libc_cv_multidir@
|
||||||
|
|
||||||
# Should we use and build ldconfig?
|
# Should we use and build ldconfig?
|
||||||
use-ldconfig = @use_ldconfig@
|
use-ldconfig = @use_ldconfig@
|
||||||
|
|
|
@ -594,6 +594,7 @@ mach_interface_list
|
||||||
DEFINES
|
DEFINES
|
||||||
static_nss
|
static_nss
|
||||||
profile
|
profile
|
||||||
|
libc_cv_multidir
|
||||||
libc_cv_pie_default
|
libc_cv_pie_default
|
||||||
libc_cv_pic_default
|
libc_cv_pic_default
|
||||||
shared
|
shared
|
||||||
|
@ -6698,6 +6699,11 @@ fi
|
||||||
$as_echo "$libc_cv_pie_default" >&6; }
|
$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`
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1783,6 +1783,11 @@ fi
|
||||||
rm -f conftest.*])
|
rm -f conftest.*])
|
||||||
AC_SUBST(libc_cv_pie_default)
|
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(profile)
|
||||||
AC_SUBST(static_nss)
|
AC_SUBST(static_nss)
|
||||||
|
|
||||||
|
|
10
csu/Makefile
10
csu/Makefile
|
@ -77,6 +77,11 @@ crtstuff = crti crtn
|
||||||
install-lib += $(crtstuff:=.o)
|
install-lib += $(crtstuff:=.o)
|
||||||
extra-objs += $(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
|
extra-objs += abi-note.o init.o
|
||||||
asm-CPPFLAGS += -I$(objpfx).
|
asm-CPPFLAGS += -I$(objpfx).
|
||||||
|
|
||||||
|
@ -147,3 +152,8 @@ $(objpfx)abi-tag.h: $(..)abi-tags
|
||||||
done
|
done
|
||||||
if test -r $@.new; then mv -f $@.new $@; \
|
if test -r $@.new; then mv -f $@.new $@; \
|
||||||
else echo >&2 'This configuration not matched in $<'; exit 1; fi
|
else echo >&2 'This configuration not matched in $<'; exit 1; fi
|
||||||
|
|
||||||
|
ifneq ($(multidir),.)
|
||||||
|
$(addprefix $(objpfx)$(multidir)/, $(install-lib)): $(addprefix $(objpfx), $(install-lib))
|
||||||
|
$(make-link-multidir)
|
||||||
|
endif
|
||||||
|
|
Loading…
Reference in New Issue