This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: bootstrap/17684: /usr/ccs/bin/ld: Can't create libgcc_s.sl
- From: "H. J. Lu" <hjl at lucon dot org>
- To: gcc-patches at gcc dot gnu dot org
- Date: Mon, 27 Sep 2004 10:15:48 -0700
- Subject: Re: PATCH: bootstrap/17684: /usr/ccs/bin/ld: Can't create libgcc_s.sl
- References: <20040927170620.GA10416@lucon.org>
Please ignore the attachments in my patch. Only the patch in the
mail body is relevant.
H.J.
---
On Mon, Sep 27, 2004 at 10:06:20AM -0700, H. J. Lu wrote:
> We should create a temporary file first and rename it later. But I am
> not 100% sure if this patch is parallel build safe.
>
>
> H.J.
> -----
> 2004-09-27 H.J. Lu <hongjiu.lu@intel.com>
>
> PR bootstrap/17684
> * config/t-libunwind-elf (SHLIBUNWIND_LINK): Use a temporary
> file for the shared library to be created.
> * config/t-slibgcc-darwin (SHLIB_LINK): Likewise.
> * config/t-slibgcc-elf-ver (SHLIB_LINK): Likewise.
> * config/t-slibgcc-sld (SHLIB_LINK): Likewise.
>
> --- gcc/config/t-libunwind-elf.busy 2004-09-08 08:16:15.000000000 -0700
> +++ gcc/config/t-libunwind-elf 2004-09-27 08:47:50.000000000 -0700
> @@ -10,9 +10,10 @@ SHLIBUNWIND_NAME = @shlib_dir@@shlib_so_
>
> SHLIBUNWIND_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared \
> -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \
> - -Wl,-z,text -Wl,-z,defs \
> - -o $(SHLIBUNWIND_NAME) @multilib_flags@ $(SHLIB_OBJS) -lc && \
> - rm -f $(SHLIB_SOLINK) && \
> + -Wl,-z,text -Wl,-z,defs -o $(SHLIBUNWIND_NAME).tmp \
> + @multilib_flags@ $(SHLIB_OBJS) -lc && \
> + rm -f $(SHLIB_SOLINK) $(SHLIBUNWIND_NAME) && \
> + mv $(SHLIBUNWIND_NAME).tmp $(SHLIBUNWIND_NAME) && \
> $(LN_S) $(SHLIBUNWIND_NAME) $(SHLIB_SOLINK)
>
> # $(slibdir) double quoted to protect it from expansion while building
> --- gcc/config/t-slibgcc-darwin.busy 2004-02-23 13:24:33.000000000 -0800
> +++ gcc/config/t-slibgcc-darwin 2004-09-27 08:48:21.000000000 -0700
> @@ -12,10 +12,11 @@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual
>
> SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
> -Wl,-install_name,$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME) \
> - -Wl,-flat_namespace -o $(SHLIB_NAME) \
> + -Wl,-flat_namespace -o $(SHLIB_NAME).tmp \
> $(SHLIB_VERSTRING) \
> @multilib_flags@ $(SHLIB_OBJS) -lc && \
> - rm -f $(SHLIB_SOLINK) && \
> + rm -f $(SHLIB_SOLINK) $(SHLIB_NAME).tmp && \
> + mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \
> $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
> # $(slibdir) double quoted to protect it from expansion while building
> # libgcc.mk. We want this delayed until actual install time.
> --- gcc/config/t-slibgcc-elf-ver.busy 2004-02-23 13:24:33.000000000 -0800
> +++ gcc/config/t-slibgcc-elf-ver 2004-09-27 08:48:59.000000000 -0700
> @@ -14,8 +14,9 @@ SHLIB_LC = -lc
> SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
> -Wl,--soname=$(SHLIB_SONAME) \
> -Wl,--version-script=$(SHLIB_MAP) \
> - -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \
> - rm -f $(SHLIB_SOLINK) && \
> + -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \
> + rm -f $(SHLIB_SOLINK) $(SHLIB_NAME) && \
> + mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \
> $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
> # $(slibdir) double quoted to protect it from expansion while building
> # libgcc.mk. We want this delayed until actual install time.
> --- gcc/config/t-slibgcc-sld.busy 2004-02-23 13:24:33.000000000 -0800
> +++ gcc/config/t-slibgcc-sld 2004-09-27 08:49:20.000000000 -0700
> @@ -10,9 +10,10 @@ SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual
>
> SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
> -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
> - -Wl,-M,$(SHLIB_MAP) -o $(SHLIB_NAME) \
> + -Wl,-M,$(SHLIB_MAP) -o $(SHLIB_NAME).tmp \
> @multilib_flags@ $(SHLIB_OBJS) -lc && \
> - rm -f $(SHLIB_SOLINK) && \
> + rm -f $(SHLIB_SOLINK) $(SHLIB_NAME) && \
> + mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \
> $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
> # $(slibdir) double quoted to protect it from expansion while building
> # libgcc.mk. We want this delayed until actual install time.