Commit 4e8d0554 by Richard Sandiford Committed by Richard Sandiford

re PR other/19525 (In-build-directory multilib testing broken)

	PR other/19525
	* doc/invoke.texi: Remove documentation of %M spec.
	* gcc.c: Likewise.
	(init_spec): Remove %M suffix from -lgcc_s.
	(do_spec_1): Remove 'M' case.
	* mklibgcc.in: Remove SHLIB_MULTILIB handling.  Expect SHLIB_LINK
	to put shared libraries in the multilib directory.  Remove the
	shlib_so_soname substitution variable.  Don't add a multilib encoding
	to shlib_base_name.  Set shlib_slibdir_qual to the full pathname
	reported by -print-multi-os-directory.  Pass @multilib_dir@ to
	SHLIB_INSTALL as well as SHLIB_LINK.
	* config/t-slibgcc-elf-ver (SHLIB_SONAME): Use @shlib_base_name@.
	(SHLIB_NAME): Delete.
	(SHLIB_DIR): New macro.
	(SHLIB_LINK): Put $(SHLIB_SONAME) and $(SHLIB_SOLINK) in $(SHLIB_DIR).
	(SHLIB_INSTALL): Adjust accordingly.
	* config/t-slibgcc-darwin: As for t-slibgcc-elf-ver.
	* config/t-slibgcc-sld: Likewise.
	* config/t-libunwind-elf (SHLIBUNWIND_NAME): Delete.
	(SHLIBUNWIND_SONAME): Use @shlib_base_name@.
	(SHLIBUNWIND_LINK): Put $(SHLIBUNWIND_SONAME) and $(SHLIB_SOLINK)
	in $(SHLIB_DIR).
	(SHLIBUNWIND_INSTALL): Adjust accordingly.
	* config/i386/t-nwld (SHLIB_SONAME): Delete.
	(SHLIB_LINK, SHLIB_INSTALL): Use SHLIB_NAME instead of SHLIB_SONAME.
	Use @shlib_base_name@ instead of @shlib_so_name@.
	* config/ia64/t-hpux (SHLIB_LINK): Put @shlib_base_name@.so.0
	and @shlib_base_name@.so in @multilib_dir@.
	(SHLIB_INSTALL): Adjust accordingly.  Add @shlib_slibdir_qual@
	to the install path.
	* config/mips/t-slibgcc-irix: As for t-slibgcc-elf-ver.
	(SHLIB_LINK): Remove previous workaround.
	* config/pa/t-hpux-shlib (SHLIB_DIR, SHLIB_SLIBDIR_QUAL): New macros.
	(SHLIB_LINK): Put $(SHLIB_SONAME) and $(SHLIB_NAME) in $(SHLIB_DIR).
	(SHLIB_INSTALL): Adjust accordingly.  Add $(SHLIB_SLIBDIR_QUAL) to
	the install path.
	* config/rs6000/t-aix43 (SHLIB_LINK): Put @shlib_base_name@.a in
	@multilib_dir@.  Use @multilib_dir@ to check for threading libraries.
	(SHLIB_INSTALL): Adjust accordingly.
	(SHLIB_LIBS): Use @multilib_dir@ to check for threading libraries.
	* config/rs6000/t-aix52: As for config/rs6000/t-aix43.
	* config/sh/t-linux (SHLIB_LINK, SHLIB_INSTALL): As for
	config/t-slibgcc-elf-ver.

From-SVN: r95277
parent a74b85d0
2005-02-19 Richard Sandiford <rsandifo@redhat.com>
PR other/19525
* doc/invoke.texi: Remove documentation of %M spec.
* gcc.c: Likewise.
(init_spec): Remove %M suffix from -lgcc_s.
(do_spec_1): Remove 'M' case.
* mklibgcc.in: Remove SHLIB_MULTILIB handling. Expect SHLIB_LINK
to put shared libraries in the multilib directory. Remove the
shlib_so_soname substitution variable. Don't add a multilib encoding
to shlib_base_name. Set shlib_slibdir_qual to the full pathname
reported by -print-multi-os-directory. Pass @multilib_dir@ to
SHLIB_INSTALL as well as SHLIB_LINK.
* config/t-slibgcc-elf-ver (SHLIB_SONAME): Use @shlib_base_name@.
(SHLIB_NAME): Delete.
(SHLIB_DIR): New macro.
(SHLIB_LINK): Put $(SHLIB_SONAME) and $(SHLIB_SOLINK) in $(SHLIB_DIR).
(SHLIB_INSTALL): Adjust accordingly.
* config/t-slibgcc-darwin: As for t-slibgcc-elf-ver.
* config/t-slibgcc-sld: Likewise.
* config/t-libunwind-elf (SHLIBUNWIND_NAME): Delete.
(SHLIBUNWIND_SONAME): Use @shlib_base_name@.
(SHLIBUNWIND_LINK): Put $(SHLIBUNWIND_SONAME) and $(SHLIB_SOLINK)
in $(SHLIB_DIR).
(SHLIBUNWIND_INSTALL): Adjust accordingly.
* config/i386/t-nwld (SHLIB_SONAME): Delete.
(SHLIB_LINK, SHLIB_INSTALL): Use SHLIB_NAME instead of SHLIB_SONAME.
Use @shlib_base_name@ instead of @shlib_so_name@.
* config/ia64/t-hpux (SHLIB_LINK): Put @shlib_base_name@.so.0
and @shlib_base_name@.so in @multilib_dir@.
(SHLIB_INSTALL): Adjust accordingly. Add @shlib_slibdir_qual@
to the install path.
* config/mips/t-slibgcc-irix: As for t-slibgcc-elf-ver.
(SHLIB_LINK): Remove previous workaround.
* config/pa/t-hpux-shlib (SHLIB_DIR, SHLIB_SLIBDIR_QUAL): New macros.
(SHLIB_LINK): Put $(SHLIB_SONAME) and $(SHLIB_NAME) in $(SHLIB_DIR).
(SHLIB_INSTALL): Adjust accordingly. Add $(SHLIB_SLIBDIR_QUAL) to
the install path.
* config/rs6000/t-aix43 (SHLIB_LINK): Put @shlib_base_name@.a in
@multilib_dir@. Use @multilib_dir@ to check for threading libraries.
(SHLIB_INSTALL): Adjust accordingly.
(SHLIB_LIBS): Use @multilib_dir@ to check for threading libraries.
* config/rs6000/t-aix52: As for config/rs6000/t-aix43.
* config/sh/t-linux (SHLIB_LINK, SHLIB_INSTALL): As for
config/t-slibgcc-elf-ver.
2005-02-19 Zdenek Dvorak <dvorakz@suse.cz> 2005-02-19 Zdenek Dvorak <dvorakz@suse.cz>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
......
...@@ -29,7 +29,6 @@ s-crt0: $(srcdir)/unwind-dw2-fde.h ...@@ -29,7 +29,6 @@ s-crt0: $(srcdir)/unwind-dw2-fde.h
# Build a shared libgcc library for NetWare. # Build a shared libgcc library for NetWare.
SHLIB_EXT = .nlm SHLIB_EXT = .nlm
SHLIB_SONAME = @shlib_so_name@.nlm
SHLIB_NAME = @shlib_base_name@.nlm SHLIB_NAME = @shlib_base_name@.nlm
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_DEF = $(srcdir)/config/i386/netware-libgcc.def SHLIB_DEF = $(srcdir)/config/i386/netware-libgcc.def
...@@ -37,25 +36,25 @@ SHLIB_MAP = $(srcdir)/config/i386/netware-libgcc.exp ...@@ -37,25 +36,25 @@ SHLIB_MAP = $(srcdir)/config/i386/netware-libgcc.exp
SHLIB_SRC = $(srcdir)/config/i386/netware-libgcc.c SHLIB_SRC = $(srcdir)/config/i386/netware-libgcc.c
SHLIB_LINK = set -e; \ SHLIB_LINK = set -e; \
cat $(SHLIB_DEF) >@shlib_so_name@.def; \ cat $(SHLIB_DEF) >@shlib_base_name@.def; \
echo "name $(SHLIB_NAME)" >>@shlib_so_name@.def; \ echo "name $(SHLIB_NAME)" >>@shlib_base_name@.def; \
echo "version $(gcc_version)" | sed "s!\.!,!g" >>@shlib_so_name@.def; \ echo "version $(gcc_version)" | sed "s!\.!,!g" >>@shlib_base_name@.def; \
touch libgcc/build; \ touch libgcc/build; \
echo "build $$$$(($$$$(<libgcc/build)+0))" >>@shlib_so_name@.def; \ echo "build $$$$(($$$$(<libgcc/build)+0))" >>@shlib_base_name@.def; \
echo "export @$(SHLIB_MAP)" >>@shlib_so_name@.def; \ echo "export @$(SHLIB_MAP)" >>@shlib_base_name@.def; \
if mpkxdc -n -p @shlib_so_name@.xdc; \ if mpkxdc -n -p @shlib_base_name@.xdc; \
then echo "xdcdata @shlib_so_name@.xdc" >>@shlib_so_name@.def; \ then echo "xdcdata @shlib_base_name@.xdc" >>@shlib_base_name@.def; \
else echo "WARNING: $(SHLIB_NAME) built without XDC data will not work well." 1>&2; \ else echo "WARNING: $(SHLIB_NAME) built without XDC data will not work well." 1>&2; \
fi; \ fi; \
$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -o $(SHLIB_NAME) \ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -o $(SHLIB_NAME) \
$(SHLIB_SRC) -posix -static-libgcc -lnetware \ $(SHLIB_SRC) -posix -static-libgcc -lnetware \
-Wl,--Map,--map-info,full,--strip-all,--def-file,@shlib_so_name@.def; \ -Wl,--Map,--map-info,full,--strip-all,--def-file,@shlib_base_name@.def; \
rm -f @shlib_so_name@.imp; $(LN_S) $(SHLIB_MAP) @shlib_so_name@.imp; \ rm -f @shlib_base_name@.imp; $(LN_S) $(SHLIB_MAP) @shlib_base_name@.imp; \
echo $$$$(($$$$(<libgcc/build)+1)) >libgcc/build echo $$$$(($$$$(<libgcc/build)+1)) >libgcc/build
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(SHELL) $(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(SHELL) $(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$$(INSTALL_DATA) $(SHLIB_NAME) $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(INSTALL_DATA) $(SHLIB_NAME) $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME); \
$$(INSTALL_DATA) @shlib_so_name@.imp $$(DESTDIR)$$(libsubdir)/ $$(INSTALL_DATA) @shlib_base_name@.imp $$(DESTDIR)$$(libsubdir)/
...@@ -32,14 +32,17 @@ SHLIB_EXT = .so ...@@ -32,14 +32,17 @@ SHLIB_EXT = .so
# DT_NEEDED entry for libunwind. # DT_NEEDED entry for libunwind.
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,+h,@shlib_base_name@.so.0 \ -Wl,+h,@shlib_base_name@.so.0 \
-o @shlib_base_name@.so @multilib_flags@ @shlib_objs@ -lunwind -lc && \ -o @multilib_dir@/@shlib_base_name@.so @multilib_flags@ \
rm -f @shlib_base_name@.so.0 && \ @shlib_objs@ -lunwind -lc && \
$(LN_S) @shlib_base_name@.so @shlib_base_name@.so.0 rm -f @multilib_dir@/@shlib_base_name@.so.0 && \
$(LN_S) @shlib_base_name@.so @multilib_dir@/@shlib_base_name@.so.0
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.so $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so.0; \ SHLIB_INSTALL = $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.so \
rm -f $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so; \ $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so.0; \
$(LN_S) @shlib_base_name@.so.0 $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so; \ rm -f $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
chmod +x $$(DESTDIR)$$(slibdir)/@shlib_base_name@.so $(LN_S) @shlib_base_name@.so.0 \
$$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so; \
chmod +x $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/@shlib_base_name@.so
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
...@@ -3,29 +3,29 @@ ...@@ -3,29 +3,29 @@
SHLIB_EXT = .so SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_SOVERSION = 1 SHLIB_SOVERSION = 1
SHLIB_SONAME = @shlib_so_name@.so.$(SHLIB_SOVERSION) SHLIB_SONAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
SHLIB_NAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
SHLIB_MAP = @shlib_map_file@ SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@ SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LC = -lc SHLIB_LC = -lc
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-soname,$(SHLIB_SONAME) \ -Wl,-soname,$(SHLIB_SONAME) \
-o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
rm -f $(SHLIB_SOLINK) && \ $(SHLIB_OBJS) $(SHLIB_LC) && \
if [ -f $(SHLIB_NAME) ]; then \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) && \ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
{ test "@multilib_dir@" = "." || \
$(INSTALL_DATA) $(SHLIB_NAME) @multilib_dir@/$(SHLIB_SONAME); }
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \ $(LN_S) $(SHLIB_SONAME) \
......
...@@ -3,21 +3,25 @@ SHLIB_EXT = .sl ...@@ -3,21 +3,25 @@ SHLIB_EXT = .sl
SHLIB_NAME = @shlib_base_name@.sl SHLIB_NAME = @shlib_base_name@.sl
SHLIB_SONAME = @shlib_base_name@.1 SHLIB_SONAME = @shlib_base_name@.1
SHLIB_OBJS = @shlib_objs@ SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \ -o $(SHLIB_DIR)/$(SHLIB_NAME).tmp @multilib_flags@ \
rm -f $(SHLIB_SONAME) && \ $(SHLIB_OBJS) -lc && \
if [ -f $(SHLIB_NAME) ]; then \ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME) && \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ if [ -f $(SHLIB_DIR)/$(SHLIB_NAME) ]; then \
mv -f $(SHLIB_DIR)/$(SHLIB_NAME) $(SHLIB_DIR)/$(SHLIB_NAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_NAME).tmp $(SHLIB_DIR)/$(SHLIB_NAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME) $(LN_S) $(SHLIB_NAME) $(SHLIB_DIR)/$(SHLIB_SONAME)
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = $(INSTALL_DATA) -m 555 $(SHLIB_NAME) \ SHLIB_INSTALL = $(INSTALL_DATA) -m 555 $(SHLIB_DIR)/$(SHLIB_NAME) \
$$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME); \
$(LN_S) $(SHLIB_SONAME) $$(DESTDIR)$$(slibdir)/$(SHLIB_NAME) $(LN_S) $(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME)
...@@ -46,17 +46,20 @@ SHLIB_EXT = .a ...@@ -46,17 +46,20 @@ SHLIB_EXT = .a
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \ -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
@multilib_flags@ @shlib_objs@ -lc \ @multilib_flags@ @shlib_objs@ -lc \
`case @shlib_base_name@ in \ `case @multilib_dir@ in \
*pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \ *pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \
*) echo -lc ;; esac` ; \ *) echo -lc ;; esac` ; \
rm -f tmp-@shlib_base_name@.a ; \ rm -f @multilib_dir@/tmp-@shlib_base_name@.a ; \
$(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \ $(AR_CREATE_FOR_TARGET) @multilib_dir@/tmp-@shlib_base_name@.a \
mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \ @multilib_dir@/shr.o ; \
mv @multilib_dir@/tmp-@shlib_base_name@.a \
@multilib_dir@/@shlib_base_name@.a ; \
rm -f @multilib_dir@/shr.o rm -f @multilib_dir@/shr.o
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/ SHLIB_INSTALL = $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.a \
SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver
SHLIB_NM_FLAGS = -Bpg -X32_64 SHLIB_NM_FLAGS = -Bpg -X32_64
......
...@@ -27,17 +27,20 @@ SHLIB_EXT = .a ...@@ -27,17 +27,20 @@ SHLIB_EXT = .a
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \ -Wl,-bE:@shlib_map_file@ -o @multilib_dir@/shr.o \
@multilib_flags@ @shlib_objs@ -lc \ @multilib_flags@ @shlib_objs@ -lc \
`case @shlib_base_name@ in \ `case @multilib_dir@ in \
*pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \ *pthread*) echo -L/usr/lib/threads -lpthreads -lc_r /usr/lib/libc.a ;; \
*) echo -lc ;; esac` ; \ *) echo -lc ;; esac` ; \
rm -f tmp-@shlib_base_name@.a ; \ rm -f @multilib_dir@/tmp-@shlib_base_name@.a ; \
$(AR_CREATE_FOR_TARGET) tmp-@shlib_base_name@.a @multilib_dir@/shr.o ; \ $(AR_CREATE_FOR_TARGET) @multilib_dir@/tmp-@shlib_base_name@.a \
mv tmp-@shlib_base_name@.a @shlib_base_name@.a ; \ @multilib_dir@/shr.o ; \
mv @multilib_dir@/tmp-@shlib_base_name@.a \
@multilib_dir@/@shlib_base_name@.a ; \
rm -f @multilib_dir@/shr.o rm -f @multilib_dir@/shr.o
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = $(INSTALL_DATA) @shlib_base_name@.a $$(DESTDIR)$$(slibdir)/ SHLIB_INSTALL = $(INSTALL_DATA) @multilib_dir@/@shlib_base_name@.a \
SHLIB_LIBS = -lc `case @shlib_base_name@ in *pthread*) echo -lpthread ;; esac` $$(DESTDIR)$$(slibdir)@shlib_slibdir_qual@/
SHLIB_LIBS = -lc `case @multilib_dir@ in *pthread*) echo -lpthread ;; esac`
SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/rs6000/libgcc-ppc64.ver
SHLIB_NM_FLAGS = -Bpg -X32_64 SHLIB_NM_FLAGS = -Bpg -X32_64
......
...@@ -23,21 +23,23 @@ SHLIB_MAPFILES = \ ...@@ -23,21 +23,23 @@ SHLIB_MAPFILES = \
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,--soname=$(SHLIB_SONAME) \ -Wl,--soname=$(SHLIB_SONAME) \
-Wl,--version-script=$(SHLIB_MAP) \ -Wl,--version-script=$(SHLIB_MAP) \
-o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
rm -f $(SHLIB_SOLINK) && \ $(SHLIB_OBJS) $(SHLIB_LC) && \
if [ -f $(SHLIB_NAME) ]; then \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
(echo "/* GNU ld script"; \ (echo "/* GNU ld script"; \
echo " Use the shared library, but some functions are only in"; \ echo " Use the shared library, but some functions are only in"; \
echo " the static library. */"; \ echo " the static library. */"; \
echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \ echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \
) > $(SHLIB_SOLINK) ) > $(SHLIB_DIR)/$(SHLIB_SOLINK)
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(INSTALL_DATA) $(SHLIB_SOLINK) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SOLINK) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
...@@ -5,25 +5,26 @@ LIBUNWIND = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c ...@@ -5,25 +5,26 @@ LIBUNWIND = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c
LIBUNWINDDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c LIBUNWINDDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c
SHLIBUNWIND_SOVERSION = 7 SHLIBUNWIND_SOVERSION = 7
SHLIBUNWIND_SONAME = @shlib_so_name@.so.$(SHLIBUNWIND_SOVERSION) SHLIBUNWIND_SONAME = @shlib_base_name@.so.$(SHLIBUNWIND_SOVERSION)
SHLIBUNWIND_NAME = @shlib_base_name@.so.$(SHLIBUNWIND_SOVERSION)
SHLIBUNWIND_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared \ SHLIBUNWIND_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared \
-nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \
-Wl,-z,text -Wl,-z,defs -o $(SHLIBUNWIND_NAME).tmp \ -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \
@multilib_flags@ $(SHLIB_OBJS) -lc && \ @multilib_flags@ $(SHLIB_OBJS) -lc && \
rm -f $(SHLIB_SOLINK) && \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
if [ -f $(SHLIBUNWIND_NAME) ]; then \ if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \
mv -f $(SHLIBUNWIND_NAME) $(SHLIBUNWIND_NAME).backup; \ mv -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) \
$(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIBUNWIND_NAME).tmp $(SHLIBUNWIND_NAME) && \ mv $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \
$(LN_S) $(SHLIBUNWIND_NAME) $(SHLIB_SOLINK) $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) && \
$(LN_S) $(SHLIBUNWIND_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIBUNWIND_INSTALL = \ SHLIBUNWIND_INSTALL = \
$$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(SHELL) $$(srcdir)/mkinstalldirs $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIBUNWIND_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIBUNWIND_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIBUNWIND_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIBUNWIND_SONAME) \ $(LN_S) $(SHLIBUNWIND_SONAME) \
......
...@@ -4,29 +4,30 @@ SHLIB_REVISION = 0 ...@@ -4,29 +4,30 @@ SHLIB_REVISION = 0
SHLIB_VERSTRING = -compatibility_version $(SHLIB_MINOR) -current_version $(SHLIB_MINOR).$(SHLIB_REVISION) SHLIB_VERSTRING = -compatibility_version $(SHLIB_MINOR) -current_version $(SHLIB_MINOR).$(SHLIB_REVISION)
SHLIB_EXT = .dylib SHLIB_EXT = .dylib
SHLIB_SOLINK = @shlib_base_name@.dylib SHLIB_SOLINK = @shlib_base_name@.dylib
SHLIB_SONAME = @shlib_so_name@.$(SHLIB_MINOR).$(SHLIB_REVISION).dylib SHLIB_SONAME = @shlib_base_name@.$(SHLIB_MINOR).$(SHLIB_REVISION).dylib
SHLIB_NAME = @shlib_base_name@.$(SHLIB_MINOR).$(SHLIB_REVISION).dylib
SHLIB_MAP = @shlib_map_file@ SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@ SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
-Wl,-install_name,$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME) \ -Wl,-install_name,$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME) \
-Wl,-flat_namespace -o $(SHLIB_NAME).tmp \ -Wl,-flat_namespace -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
-Wl,-exported_symbols_list,$(SHLIB_MAP) \ -Wl,-exported_symbols_list,$(SHLIB_MAP) \
$(SHLIB_VERSTRING) \ $(SHLIB_VERSTRING) \
@multilib_flags@ $(SHLIB_OBJS) -lc && \ @multilib_flags@ $(SHLIB_OBJS) -lc && \
rm -f $(SHLIB_SOLINK) && \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
if [ -f $(SHLIB_NAME) ]; then \ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \ $(LN_S) $(SHLIB_SONAME) \
......
...@@ -4,28 +4,30 @@ ...@@ -4,28 +4,30 @@
SHLIB_EXT = .so SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_SOVERSION = 1 SHLIB_SOVERSION = 1
SHLIB_SONAME = @shlib_so_name@.so.$(SHLIB_SOVERSION) SHLIB_SONAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
SHLIB_NAME = @shlib_base_name@.so.$(SHLIB_SOVERSION)
SHLIB_MAP = @shlib_map_file@ SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@ SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LC = -lc SHLIB_LC = -lc
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,--soname=$(SHLIB_SONAME) \ -Wl,--soname=$(SHLIB_SONAME) \
-Wl,--version-script=$(SHLIB_MAP) \ -Wl,--version-script=$(SHLIB_MAP) \
-o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ \
rm -f $(SHLIB_SOLINK) && \ $(SHLIB_OBJS) $(SHLIB_LC) && \
if [ -f $(SHLIB_NAME) ]; then \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \ $(LN_S) $(SHLIB_SONAME) \
......
...@@ -2,27 +2,28 @@ ...@@ -2,27 +2,28 @@
SHLIB_EXT = .so SHLIB_EXT = .so
SHLIB_SOLINK = @shlib_base_name@.so SHLIB_SOLINK = @shlib_base_name@.so
SHLIB_SONAME = @shlib_so_name@.so.1 SHLIB_SONAME = @shlib_base_name@.so.1
SHLIB_NAME = @shlib_base_name@.so.1
SHLIB_MAP = @shlib_map_file@ SHLIB_MAP = @shlib_map_file@
SHLIB_OBJS = @shlib_objs@ SHLIB_OBJS = @shlib_objs@
SHLIB_DIR = @multilib_dir@
SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@
SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \ -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
-Wl,-M,$(SHLIB_MAP) -o $(SHLIB_NAME).tmp \ -Wl,-M,$(SHLIB_MAP) -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
@multilib_flags@ $(SHLIB_OBJS) -lc && \ @multilib_flags@ $(SHLIB_OBJS) -lc && \
rm -f $(SHLIB_SOLINK) && \ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
if [ -f $(SHLIB_NAME) ]; then \ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
else true; fi && \ else true; fi && \
mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
# $(slibdir) double quoted to protect it from expansion while building # $(slibdir) double quoted to protect it from expansion while building
# libgcc.mk. We want this delayed until actual install time. # libgcc.mk. We want this delayed until actual install time.
SHLIB_INSTALL = \ SHLIB_INSTALL = \
$$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ $$(mkinstalldirs) $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
$(INSTALL_DATA) $(SHLIB_NAME) \ $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_SONAME) \
$$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
$(LN_S) $(SHLIB_SONAME) \ $(LN_S) $(SHLIB_SONAME) \
......
...@@ -6373,11 +6373,6 @@ Dump out a @option{-L} option for each directory that GCC believes might ...@@ -6373,11 +6373,6 @@ Dump out a @option{-L} option for each directory that GCC believes might
contain startup files. If the target supports multilibs then the contain startup files. If the target supports multilibs then the
current multilib directory will be prepended to each of these paths. current multilib directory will be prepended to each of these paths.
@item %M
Output the multilib directory with directory separators replaced with
@samp{_}. If multilib directories are not set, or the multilib directory is
@file{.} then this option emits nothing.
@item %L @item %L
Process the @code{lib} spec. This is a spec string for deciding which Process the @code{lib} spec. This is a spec string for deciding which
libraries should be included on the command line to the linker. libraries should be included on the command line to the linker.
......
...@@ -473,8 +473,6 @@ or with constant text in a single argument. ...@@ -473,8 +473,6 @@ or with constant text in a single argument.
%l process LINK_SPEC as a spec. %l process LINK_SPEC as a spec.
%L process LIB_SPEC as a spec. %L process LIB_SPEC as a spec.
%G process LIBGCC_SPEC as a spec. %G process LIBGCC_SPEC as a spec.
%M output multilib_dir with directory separators replaced with "_";
if multilib_dir is not set or is ".", output "".
%S process STARTFILE_SPEC as a spec. A capital S is actually used here. %S process STARTFILE_SPEC as a spec. A capital S is actually used here.
%E process ENDFILE_SPEC as a spec. A capital E is actually used here. %E process ENDFILE_SPEC as a spec. A capital E is actually used here.
%C process CPP_SPEC as a spec. %C process CPP_SPEC as a spec.
...@@ -1704,11 +1702,7 @@ init_spec (void) ...@@ -1704,11 +1702,7 @@ init_spec (void)
if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0) if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0)
{ {
init_gcc_specs (&obstack, init_gcc_specs (&obstack,
#ifdef NO_SHARED_LIBGCC_MULTILIB
"-lgcc_s" "-lgcc_s"
#else
"-lgcc_s%M"
#endif
#ifdef USE_LIBUNWIND_EXCEPTIONS #ifdef USE_LIBUNWIND_EXCEPTIONS
" -lunwind" " -lunwind"
#endif #endif
...@@ -1732,12 +1726,7 @@ init_spec (void) ...@@ -1732,12 +1726,7 @@ init_spec (void)
/* Ug. We don't know shared library extensions. Hope that /* Ug. We don't know shared library extensions. Hope that
systems that use this form don't do shared libraries. */ systems that use this form don't do shared libraries. */
init_gcc_specs (&obstack, init_gcc_specs (&obstack,
#ifdef NO_SHARED_LIBGCC_MULTILIB "-lgcc_s",
"-lgcc_s"
#else
"-lgcc_s%M"
#endif
,
"libgcc.a%s", "libgcc.a%s",
"libgcc_eh.a%s" "libgcc_eh.a%s"
#ifdef USE_LIBUNWIND_EXCEPTIONS #ifdef USE_LIBUNWIND_EXCEPTIONS
...@@ -5078,23 +5067,6 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part) ...@@ -5078,23 +5067,6 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part)
return value; return value;
break; break;
case 'M':
if (multilib_dir && strcmp (multilib_dir, ".") != 0)
{
char *p;
const char *q;
size_t len;
len = strlen (multilib_dir);
obstack_blank (&obstack, len + 1);
p = obstack_next_free (&obstack) - (len + 1);
*p++ = '_';
for (q = multilib_dir; *q ; ++q, ++p)
*p = (IS_DIR_SEPARATOR (*q) ? '_' : *q);
}
break;
case 'R': case 'R':
/* We assume there is a directory /* We assume there is a directory
separator at the end of this string. */ separator at the end of this string. */
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
# EXTRA_MULTILIB_PARTS # EXTRA_MULTILIB_PARTS
# SHLIB_EXT # SHLIB_EXT
# SHLIB_LINK # SHLIB_LINK
# SHLIB_MULTILIB
# SHLIB_MKMAP # SHLIB_MKMAP
# SHLIB_MKMAP_OPTS # SHLIB_MKMAP_OPTS
# SHLIB_MAPFILES # SHLIB_MAPFILES
...@@ -158,79 +157,29 @@ for ml in $MULTILIBS; do ...@@ -158,79 +157,29 @@ for ml in $MULTILIBS; do
# Work out relevant parameters that depend only on the multilib. # Work out relevant parameters that depend only on the multilib.
dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
shlib_dir= shlib_slibdir_qual=
shlib_dir_qual=
libgcc_a=$dir/libgcc.a libgcc_a=$dir/libgcc.a
libgcov_a=$dir/libgcov.a libgcov_a=$dir/libgcov.a
libgcc_eh_a= libgcc_eh_a=
libgcc_s_so= libgcc_s_so=
libunwind_a= libunwind_a=
libunwind_so= libunwind_so=
if [ "$dir" = . ]; then
suffix=
else
suffix=`echo $dir | sed s,/,_,g`
fi
if [ "$LIBUNWIND" ]; then if [ "$LIBUNWIND" ]; then
libunwind_a=$dir/libunwind.a libunwind_a=$dir/libunwind.a
fi fi
if [ "$SHLIB_LINK" ]; then if [ "$SHLIB_LINK" ]; then
if [ -z "$SHLIB_MULTILIB" ]; then libgcc_eh_a=$dir/libgcc_eh.a
if [ "$dir" = . ]; then libgcc_s_so=$dir/libgcc_s${SHLIB_EXT}
libgcc_eh_a=$dir/libgcc_eh.a if [ "$LIBUNWIND" ]; then
libgcc_s_so_base=libgcc_s libunwind_so=$dir/libunwind${SHLIB_EXT}
libgcc_s_so=${libgcc_s_so_base}${SHLIB_EXT} fi
libgcc_s_soname=libgcc_s os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
if [ "$LIBUNWIND" ]; then if [ "$os_multilib_dir" != . ]; then
libunwind_so_base=libunwind shlib_slibdir_qual="/$os_multilib_dir"
libunwind_so=${libunwind_so_base}${SHLIB_EXT}
libunwind_soname=libunwind
fi
else
libgcc_eh_a=$dir/libgcc_eh.a
libgcc_s_so_base=libgcc_s_${suffix}
libgcc_s_so=${libgcc_s_so_base}${SHLIB_EXT}
libgcc_s_soname=libgcc_s_${suffix}
if [ "$LIBUNWIND" ]; then
libunwind_so_base=libunwind_${suffix}
libunwind_so=${libunwind_so_base}${SHLIB_EXT}
fi
fi
if [ -n "$MULTILIB_OSDIRNAMES" ]; then
if [ "$dir" != . ]; then
gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory`
os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
shlib_dir="$dir"/
gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'`
os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"`
if [ -z "$os_multilib_base" ]; then
libgcc_s_soname=libgcc_s
libunwind_soname=libunwind
if [ "$os_multilib_dir" != "." ]; then
shlib_dir_qual="/$os_multilib_dir"
fi
else
libgcc_s_soname=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g`
libunwind_soname=libunwind_`echo $gcc_multilib_sup | sed s,/,_,g`
shlib_dir_qual="/$os_multilib_base"
fi
fi
fi
elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
libgcc_eh_a=$dir/libgcc_eh.a
libgcc_s_so_base=libgcc_s
libgcc_s_so=${libgcc_s_so_base}${SHLIB_EXT}
libgcc_s_soname=libgcc_s
if [ "$LIBUNWIND" ]; then
libunwind_so_base=libunwind
libunwind_so=${libunwind_so_base}${SHLIB_EXT}
libunwind_soname=libunwind
fi
fi fi
fi fi
libgcc_s_so_extra= libgcc_s_so_extra=
libunwind_so_extra= libunwind_so_extra=
...@@ -244,20 +193,9 @@ for ml in $MULTILIBS; do ...@@ -244,20 +193,9 @@ for ml in $MULTILIBS; do
echo \# libgcc_eh_a: $libgcc_eh_a echo \# libgcc_eh_a: $libgcc_eh_a
echo \# libunwind_a: $libunwind_a echo \# libunwind_a: $libunwind_a
echo \# echo \#
echo \# gcc_multilib_dir: $gcc_multilib_dir echo \# shlib_slibdir_qual: $shlib_slibdir_qual
echo \# gcc_multilib_sup: $gcc_multilib_sup
echo \# os_multilib_dir: $os_multilib_dir
echo \# os_multilib_base: $os_multilib_base
echo \# shlib_dir: $shlib_dir
echo \# shlib_dir_qual: $shlib_dir_qual
echo \#
echo \# libgcc_s_so: $libgcc_s_so echo \# libgcc_s_so: $libgcc_s_so
echo \# libgcc_s_so_base: $libgcc_s_so_base
echo \# libgcc_s_soname: $libgcc_s_soname
echo \#
echo \# libunwind_so: $libunwind_so echo \# libunwind_so: $libunwind_so
echo \# libunwind_so_base: $libunwind_so_base
echo \# libunwind_soname: $libunwind_soname
echo \# echo \#
echo echo
...@@ -687,6 +625,11 @@ for ml in $MULTILIBS; do ...@@ -687,6 +625,11 @@ for ml in $MULTILIBS; do
extra="$extra $targ" extra="$extra $targ"
done done
if [ "$dir" = . ]; then
suffix=
else
suffix=`echo $dir | sed s,/,_,g`
fi
echo extra$suffix: stmp-dirs echo extra$suffix: stmp-dirs
echo " $make_compile" \\ echo " $make_compile" \\
echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\ echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\
...@@ -777,8 +720,7 @@ EOF ...@@ -777,8 +720,7 @@ EOF
| sed -e "s%@multilib_flags@%$flags%g" \ | sed -e "s%@multilib_flags@%$flags%g" \
-e "s%@multilib_dir@%$dir%g" \ -e "s%@multilib_dir@%$dir%g" \
-e "s%@shlib_objs@%\$(objects)%g" \ -e "s%@shlib_objs@%\$(objects)%g" \
-e "s%@shlib_base_name@%$libgcc_s_so_base%g" \ -e "s%@shlib_base_name@%libgcc_s%g" \
-e "s%@shlib_so_name@%$libgcc_s_soname%g" \
-e "s%@shlib_map_file@%$mapfile%g" \ -e "s%@shlib_map_file@%$mapfile%g" \
-e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g" -e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g"
echo "all: $libgcc_s_so" echo "all: $libgcc_s_so"
...@@ -791,8 +733,7 @@ EOF ...@@ -791,8 +733,7 @@ EOF
| sed -e "s%@multilib_flags@%$flags%g" \ | sed -e "s%@multilib_flags@%$flags%g" \
-e "s%@multilib_dir@%$dir%g" \ -e "s%@multilib_dir@%$dir%g" \
-e "s%@shlib_objs@%\$(objects)%g" \ -e "s%@shlib_objs@%\$(objects)%g" \
-e "s%@shlib_base_name@%$libunwind_so_base%g" \ -e "s%@shlib_base_name@%libunwind%g" \
-e "s%@shlib_so_name@%$libunwind_soname%g" \
-e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g" -e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g"
echo "all: $libunwind_so" echo "all: $libunwind_so"
fi fi
...@@ -839,66 +780,23 @@ for ml in $MULTILIBS; do ...@@ -839,66 +780,23 @@ for ml in $MULTILIBS; do
echo ' $(INSTALL_DATA)' ${dir}/libgcc_eh.a ${ldir}/ echo ' $(INSTALL_DATA)' ${dir}/libgcc_eh.a ${ldir}/
echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_eh.a echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_eh.a
if [ -z "$SHLIB_MULTILIB" ]; then shlib_slibdir_qual=
if [ "$dir" = . ]; then os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
shlib_base_name=libgcc_s if [ "$os_multilib_dir" != . ]; then
shlibunwind_base_name=libunwind shlib_slibdir_qual="/$os_multilib_dir"
else fi
shlib_base_name=libgcc_s_`echo $dir | sed s,/,_,g` echo " $SHLIB_INSTALL" \
shlibunwind_base_name=libunwind_`echo $dir | sed s,/,_,g` | sed -e "s%@multilib_dir@%$dir%g" \
fi -e "s%@shlib_base_name@%libgcc_s%g" \
shlib_so_name="$shlib_base_name" -e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g"
shlibunwind_so_name="$shlibunwind_base_name" if [ "$LIBUNWIND" ]; then
shlib_dir= echo " $SHLIBUNWIND_INSTALL" \
shlib_slibdir_qual= | sed -e "s%@multilib_dir@%$dir%g" \
if [ -n "$MULTILIB_OSDIRNAMES" ]; then -e "s%@shlib_base_name@%libunwind%g" \
gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory`
os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
if [ "$dir" != . ]; then
shlib_dir="$dir"/
fi
gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'`
os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"`
if [ -z "$os_multilib_base" ]; then
shlib_so_name=libgcc_s
shlibunwind_so_name=libunwind
if [ "$os_multilib_dir" != "." ]; then
shlib_slibdir_qual="/$os_multilib_dir"
fi
else
shlib_so_name=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g`
shlibunwind_so_name=libunwind_`echo $gcc_multilib_sup | sed s,/,_,g`
shlib_slibdir_qual="/$os_multilib_base"
fi
fi
echo " $SHLIB_INSTALL" \
| sed -e "s%@shlib_base_name@%$shlib_base_name%g" \
-e "s%@shlib_so_name@%$shlib_so_name%g" \
-e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g" -e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g"
if [ "$LIBUNWIND" ]; then libunwinddir='$(DESTDIR)$(slibdir)$(shlib_slibdir_qual)/$(shlib_dir)'
echo " $SHLIBUNWIND_INSTALL" \ echo ' $(INSTALL_DATA)' ${dir}/libunwind.a ${libunwinddir}/
| sed -e "s%@shlib_base_name@%$shlibunwind_base_name%g" \ echo ' $(RANLIB_FOR_TARGET)' ${libunwinddir}/libunwind.a
-e "s%@shlib_so_name@%$shlibunwind_so_name%g" \
-e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g"
libunwinddir='$(DESTDIR)$(slibdir)$(shlib_slibdir_qual)/$(shlib_dir)'
echo ' $(INSTALL_DATA)' ${dir}/libunwind.a ${libunwinddir}/
echo ' $(RANLIB_FOR_TARGET)' ${libunwinddir}/libunwind.a
fi
elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
shlib_base_name="libgcc_s";
echo " $SHLIB_INSTALL" \
| sed -e "s%@shlib_base_name@%$shlib_base_name%g" \
-e "s%@shlib_so_name@%$shlib_base_name%g" \
-e "s%@shlib_slibdir_qual@%%g"
if [ "$LIBUNWIND" ]; then
echo " $SHLIBUNWIND_INSTALL" \
| sed -e "s%@shlib_base_name@%$shlibunwind_base_name%g" \
-e "s%@shlib_so_name@%$shlibunwind_base_name%g" \
-e "s%@shlib_slibdir_qual@%%g"
libunwinddir='$(DESTDIR)$(slibdir)'
echo ' $(INSTALL_DATA)' ${dir}/libunwind.a ${libunwinddir}/
echo ' $(RANLIB_FOR_TARGET)' ${libunwinddir}/libunwind.a
fi
fi fi
fi fi
done done
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment