On Thu, 19 Feb 2026, Jakub Jelinek wrote:

> On Thu, Feb 19, 2026 at 07:44:19AM +0100, Jakub Jelinek wrote:
> > In the past few bootstraps/regtests, I got occassionally one random FAIL
> > in libgomp testsuite, and the log said in each of the cases something like
> > obj02/x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.log:/usr/bin/ld: error: 
> > /home/jakub/src/gcc/obj02/gcc/libatomic.so: file too short
> > obj02/x86_64-pc-linux-gnu/libgomp/testsuite/libgomp.log:/usr/bin/ld: error: 
> > /home/jakub/src/gcc/obj02/gcc/libatomic.so: file too short
> > obj05/i686-pc-linux-gnu/libgomp/testsuite/libgomp.log:/home/jakub/src/gcc/obj05/gcc/libatomic.so:
> >  file not recognized: file format not recognized
> > obj05/i686-pc-linux-gnu/libgomp/testsuite/libgomp.log:/home/jakub/src/gcc/obj05/gcc/libatomic.so:
> >  file not recognized: file format not recognized
> 
> On a second thought, the problem is that all-local is a .PHONY target,
> so it is remade all the time because it doesn't exist.  It already
> depends on libatomic.la.  So, the following patch instead
> makes all-local depend on stmp-libatomic, which is a file touched
> after we install the files, so it will be reinvoked only when stmp-libatomic
> is older than libatomic.la or when it doesn't exist.
> 
> How does this look?

LGTM (but I wonder why it is .PHONY).

Richard.

> So far tested by make all-target-libatomic and reruning make in the
> libatomic directory to see that it doesn't rerun the installation.
> 
> 2026-02-18  Jakub Jelinek  <[email protected]>
> 
>       * Makefile.am (all-local): Depend on stmp-libatomic and otherwise
>       do nothing.
>       (stmp-libatomic): New goal, move all commands from all-local here plus
>       touch $@ at the end.
>       * Makefile.in: Regenerate.
> 
> --- libatomic/Makefile.am.jj  2026-02-19 08:19:27.312619589 +0100
> +++ libatomic/Makefile.am     2026-02-19 18:03:25.379866161 +0100
> @@ -181,7 +181,8 @@ all-multi: $(libatomic_la_LIBADD)
>  # from $gcc_objdir seems to fix the issue.
>  
>  gcc_objdir = `pwd`/$(MULTIBUILDTOP)../../gcc/
> -all-local: libatomic.la
> +all-local: stmp-libatomic
> +stmp-libatomic: libatomic.la
>       $(LIBTOOL) --mode=install $(INSTALL_DATA) libatomic.la 
> $(gcc_objdir)$(MULTISUBDIR)/
>  if LIBAT_BUILD_ASNEEDED_SOLINK
>       cd $(gcc_objdir)$(MULTISUBDIR) || exit 1; \
> @@ -193,6 +194,7 @@ if LIBAT_BUILD_ASNEEDED_SOLINK
>       $(LN_S) libatomic.a libatomic_asneeded.a; fi
>  endif
>       rm $(gcc_objdir)$(MULTISUBDIR)/libatomic.la
> +     touch $@
>  
>  if LIBAT_BUILD_ASNEEDED_SOLINK
>  install-data-am: install-asneeded
> --- libatomic/Makefile.in.jj  2026-02-19 08:19:27.312619589 +0100
> +++ libatomic/Makefile.in     2026-02-19 18:05:06.865571288 +0100
> @@ -929,7 +929,8 @@ vpath % $(strip $(search_path))
>  # makefile fragments to avoid broken *.Ppo getting included into the Makefile
>  # when it is reloaded during the build of all-multi.
>  all-multi: $(libatomic_la_LIBADD)
> -all-local: libatomic.la
> +all-local: stmp-libatomic
> +stmp-libatomic: libatomic.la
>       $(LIBTOOL) --mode=install $(INSTALL_DATA) libatomic.la 
> $(gcc_objdir)$(MULTISUBDIR)/
>  @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@   cd $(gcc_objdir)$(MULTISUBDIR) || exit 
> 1; \
>  @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@   if test -f libatomic.so; then (echo "/* 
> GNU ld script"; \
> @@ -939,6 +940,7 @@ all-local: libatomic.la
>  @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@   if test -f libatomic.a; then rm -f 
> libatomic_asneeded.a; \
>  @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@   $(LN_S) libatomic.a 
> libatomic_asneeded.a; fi
>       rm $(gcc_objdir)$(MULTISUBDIR)/libatomic.la
> +     touch $@
>  
>  @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@install-data-am: install-asneeded
>  
> 
> 
>       Jakub
> 
> 

-- 
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to