On Fri, 30 Jan 2026, Jakub Jelinek wrote:
> Hi!
>
> Filip complained on IRC that libatomic_asneeded.a is installed as
> stale symlink in --disable-static build.
>
> The following patch makes sure to install the libatomic_asneeded.{so,a}
> script and/or symlink only if the corresponding libatomic.{so,a} has been
> installed.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, tested also
> with make install and verified libatomic_asneeded.{so,a} in both
> gcc/ subdir and in installed usr/local/lib{,64}/. Ok for trunk?
OK.
Thanks,
Richard.
> 2026-01-30 Jakub Jelinek <[email protected]>
>
> * Makefile.am (all-local, install-asneeded): Only create
> libatomic_asneeded.so script if libatomic.so exist, only
> create libatomic_asneeded.a symlink if libatomic.a exist.
> * Makefile.in: Regenerate.
>
> --- libatomic/Makefile.am.jj 2026-01-19 09:46:11.328878897 +0100
> +++ libatomic/Makefile.am 2026-01-29 21:14:47.687107674 +0100
> @@ -185,12 +185,12 @@ all-local: libatomic.la
> $(LIBTOOL) --mode=install $(INSTALL_DATA) libatomic.la
> $(gcc_objdir)$(MULTISUBDIR)/
> if LIBAT_BUILD_ASNEEDED_SOLINK
> cd $(gcc_objdir)$(MULTISUBDIR) || exit 1; \
> - (echo "/* GNU ld script"; \
> + if test -f libatomic.so; then (echo "/* GNU ld script"; \
> echo " Add DT_NEEDED entry for -latomic only if needed. */"; \
> echo "INPUT ( AS_NEEDED ( -latomic ) )" \
> - ) > libatomic_asneeded.so; \
> - rm -f libatomic_asneeded.a; \
> - $(LN_S) libatomic.a libatomic_asneeded.a
> + ) > libatomic_asneeded.so; fi; \
> + if test -f libatomic.a; then rm -f libatomic_asneeded.a; \
> + $(LN_S) libatomic.a libatomic_asneeded.a; fi
> endif
> rm $(gcc_objdir)$(MULTISUBDIR)/libatomic.la
>
> @@ -200,12 +200,12 @@ install-data-am: install-asneeded
> install-asneeded: install-toolexeclibLTLIBRARIES
> $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
> cd "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
> - (echo "/* GNU ld script"; \
> + if test -f libatomic.so; then (echo "/* GNU ld script"; \
> echo " Add DT_NEEDED entry for -latomic only if needed. */"; \
> echo "INPUT ( AS_NEEDED ( -latomic ) )" \
> - ) > libatomic_asneeded.so; \
> - rm -f libatomic_asneeded.a; \
> - $(LN_S) libatomic.a libatomic_asneeded.a
> + ) > libatomic_asneeded.so; fi; \
> + if test -f libatomic.a; then rm -f libatomic_asneeded.a; \
> + $(LN_S) libatomic.a libatomic_asneeded.a; fi
> endif
>
> # target overrides
> --- libatomic/Makefile.in.jj 2026-01-19 09:46:11.328878897 +0100
> +++ libatomic/Makefile.in 2026-01-29 21:15:08.145605754 +0100
> @@ -932,12 +932,12 @@ all-multi: $(libatomic_la_LIBADD)
> all-local: 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@ (echo "/* GNU ld script"; \
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ if test -f libatomic.so; then (echo "/*
> GNU ld script"; \
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ echo " Add DT_NEEDED entry for
> -latomic only if needed. */"; \
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ echo "INPUT ( AS_NEEDED ( -latomic )
> )" \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ ) > libatomic_asneeded.so; \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ rm -f libatomic_asneeded.a; \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ $(LN_S) libatomic.a libatomic_asneeded.a
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ ) > libatomic_asneeded.so; fi; \
> +@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
>
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@install-data-am: install-asneeded
> @@ -945,12 +945,12 @@ all-local: libatomic.la
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@install-asneeded:
> install-toolexeclibLTLIBRARIES
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ $(MKDIR_P)
> "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ cd "$(DESTDIR)$(toolexeclibdir)" ||
> exit 1; \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ (echo "/* GNU ld script"; \
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ if test -f libatomic.so; then (echo "/*
> GNU ld script"; \
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ echo " Add DT_NEEDED entry for
> -latomic only if needed. */"; \
> @LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ echo "INPUT ( AS_NEEDED ( -latomic )
> )" \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ ) > libatomic_asneeded.so; \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ rm -f libatomic_asneeded.a; \
> -@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ $(LN_S) libatomic.a libatomic_asneeded.a
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@ ) > libatomic_asneeded.so; fi; \
> +@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
>
> # target overrides
> -include $(tmake_file)
>
> 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)