On Mon, Jan 12, 2026 at 8:39 AM Jakub Jelinek <[email protected]> wrote:
>
> On Mon, Jan 12, 2026 at 12:13:35PM +0100, Florian Weimer wrote:
> > One way to work around the libtool problem would be to stick the
> > as-needed into an existing .so linker script, or create a new one under
> > a different name (say libatomic_optional.so) that has AS_NEEDED in it,
> > and link with -latomic_optional.  Then libtool would not have to be
> > taught about --push-state/--pop-state etc.
>
> That seems to work.
>
> So far bootstrapped (c,c++,fortran,lto only) and make install tested
> on x86_64-linux, tested on a small program without need to libatomic and
> struct S { char a[25]; };
> _Atomic struct S s;
>
> int main () { struct S t = s; s = t; }
> which does at -O0.
> Before this patch I got
> for i in `find x86_64-pc-linux-gnu/ -name lib\*.so.\*.\*`; do ldd -u $i 2>&1 
> | grep -q libatomic.so.1 && echo $i; done
> x86_64-pc-linux-gnu/libsanitizer/ubsan/.libs/libubsan.so.1.0.0
> x86_64-pc-linux-gnu/libsanitizer/asan/.libs/libasan.so.8.0.0
> x86_64-pc-linux-gnu/libsanitizer/hwasan/.libs/libhwasan.so.0.0.0
> x86_64-pc-linux-gnu/libsanitizer/lsan/.libs/liblsan.so.0.0.0
> x86_64-pc-linux-gnu/libsanitizer/tsan/.libs/libtsan.so.2.0.0
> x86_64-pc-linux-gnu/32/libsanitizer/ubsan/.libs/libubsan.so.1.0.0
> x86_64-pc-linux-gnu/32/libsanitizer/asan/.libs/libasan.so.8.0.0
> x86_64-pc-linux-gnu/32/libstdc++-v3/src/.libs/libstdc++.so.6.0.35
> x86_64-pc-linux-gnu/libgcobol/.libs/libgcobol.so.2.0.0
> x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.35
> With this patch it prints nothing.
>
> Ok for trunk if it passes full bootstrap/regtest?

LGTM.

>
> 2026-01-12  Jakub Jelinek  <[email protected]>
>
>         PR libstdc++/123396
> gcc/
>         * configure.ac (gcc_cv_ld_use_as_needed_ldscript): New test.
>         (USE_LD_AS_NEEDED_LDSCRIPT): New AC_DEFINE.
>         * gcc.cc (LINK_LIBATOMIC_SPEC): Use "-latomic_asneeded" instead
>         of LD_AS_NEEDED_OPTION " -latomic " LD_NO_AS_NEEDED_OPTION
>         if USE_LD_AS_NEEDED_LDSCRIPT is defined.
>         (init_gcc_specs): Use "-lgcc_s_asneeded" instead of
>         LD_AS_NEEDED_OPTION " -lgcc_s " LD_NO_AS_NEEDED_OPTION
>         if USE_LD_AS_NEEDED_LDSCRIPT is defined.
>         * config.in: Regenerate.
>         * configure: Regenerate.
> libatomic/
>         * acinclude.m4 (LIBAT_BUILD_ASNEEDED_SOLINK): New AM_CONDITIONAL.
>         * libatomic_asneeded.so: New file.
>         * libatomic_asneeded.a: New file.
>         * Makefile.am (toolexeclib_DATA): Set if LIBAT_BUILD_ASNEEDED_SOLINK.
>         (all-local): Install those files into gcc subdir.
>         * Makefile.in: Regenerate.
>         * configure: Regenerate.
> libgcc/
>         * config/t-slibgcc (SHLIB_ASNEEDED_SOLINK,
>         SHLIB_MAKE_ASNEEDED_SOLINK, SHLIB_INSTALL_ASNEEDED_SOLINK): New
>         vars.
>         (SHLIB_LINK): Include $(SHLIB_MAKE_ASNEEDED_SOLINK).
>         (SHLIB_INSTALL): Include $(SHLIB_INSTALL_ASNEEDED_SOLINK).
>
> --- gcc/configure.ac.jj 2026-01-09 22:19:56.399735314 +0100
> +++ gcc/configure.ac    2026-01-12 15:54:36.883949085 +0100
> @@ -6652,10 +6652,12 @@ gcc_cv_ld_as_needed,
>  [gcc_cv_ld_as_needed=no
>  gcc_cv_ld_as_needed_option='--as-needed'
>  gcc_cv_ld_no_as_needed_option='--no-as-needed'
> +gcc_cv_ld_use_as_needed_ldscript=no
>  if test $in_tree_ld = yes ; then
>    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" 
> -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
>       && test $in_tree_ld_is_elf = yes; then
>      gcc_cv_ld_as_needed=yes
> +    gcc_cv_ld_use_as_needed_ldscript=yes
>      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" 
> -ge 28; then
>        gcc_cv_ld_as_needed_option='--push-state --as-needed'
>        gcc_cv_ld_no_as_needed_option='--pop-state'
> @@ -6665,6 +6667,7 @@ elif test x$gcc_cv_ld != x; then
>    # Check if linker supports --as-needed and --no-as-needed options
>    if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
>      gcc_cv_ld_as_needed=yes
> +    gcc_cv_ld_use_as_needed_ldscript=yes
>      if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
>         && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
>         && echo "$ld_ver" | grep GNU > /dev/null \
> @@ -6683,6 +6686,7 @@ elif test x$gcc_cv_ld != x; then
>        gcc_cv_ld_as_needed=yes
>        gcc_cv_ld_as_needed_option="-z ignore"
>        gcc_cv_ld_no_as_needed_option="-z record"
> +      gcc_cv_ld_use_as_needed_ldscript=no
>        ;;
>    esac
>  fi
> @@ -6691,6 +6695,7 @@ case "$target" in
>      if echo "$ld_ver" | grep GNU > /dev/null; then
>        # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
>        gcc_cv_ld_as_needed=no
> +      gcc_cv_ld_use_as_needed_ldscript=no
>      fi
>      ;;
>  esac
> @@ -6703,6 +6708,10 @@ if test x"$gcc_cv_ld_as_needed" = xyes;
>         AC_DEFINE_UNQUOTED(LD_NO_AS_NEEDED_OPTION, 
> "$gcc_cv_ld_no_as_needed_option",
>  [Define to the linker option to keep unused dependencies.])
>  fi
> +if test x"$gcc_cv_ld_use_as_needed_ldscript" = xyes; then
> +       AC_DEFINE(USE_LD_AS_NEEDED_LDSCRIPT, 1,
> +[Define if your linker supports AS_NEEDED in linker scripts.])
> +fi
>
>  AC_MSG_CHECKING(linker mapfile support for clearing hardware capabilities)
>  saved_LDFLAGS="$LDFLAGS"
> --- gcc/gcc.cc.jj       2026-01-05 21:23:45.176633940 +0100
> +++ gcc/gcc.cc  2026-01-12 15:14:58.902045473 +0100
> @@ -999,8 +999,12 @@ proper position among the other output f
>  /* Here is the spec for running the linker, after compiling all files.  */
>
>  #if defined(TARGET_PROVIDES_LIBATOMIC) && defined(USE_LD_AS_NEEDED)
> +#ifdef USE_LD_AS_NEEDED_LDSCRIPT
> +#define LINK_LIBATOMIC_SPEC "%{!fno-link-libatomic:-latomic_asneeded} "
> +#else
>  #define LINK_LIBATOMIC_SPEC "%{!fno-link-libatomic:" LD_AS_NEEDED_OPTION \
>                             " -latomic " LD_NO_AS_NEEDED_OPTION "} "
> +#endif
>  #else
>  #define LINK_LIBATOMIC_SPEC ""
>  #endif
> @@ -1845,6 +1849,16 @@ init_gcc_specs (struct obstack *obstack,
>    char *buf;
>
>  #if USE_LD_AS_NEEDED
> +#if defined(USE_LD_AS_NEEDED_LDSCRIPT) && !defined(USE_LIBUNWIND_EXCEPTIONS)
> +  buf = concat ("%{static|static-libgcc|static-pie:", static_name, " ", 
> eh_name, "}"
> +               "%{!static:%{!static-libgcc:%{!static-pie:"
> +               "%{!shared-libgcc:",
> +               static_name, " ",
> +               shared_name, "_asneeded}"
> +               "%{shared-libgcc:",
> +               shared_name, "%{!shared: ", static_name, "}"
> +               "}}"
> +#else
>    buf = concat ("%{static|static-libgcc|static-pie:", static_name, " ", 
> eh_name, "}"
>                 "%{!static:%{!static-libgcc:%{!static-pie:"
>                 "%{!shared-libgcc:",
> @@ -1854,6 +1868,7 @@ init_gcc_specs (struct obstack *obstack,
>                 "%{shared-libgcc:",
>                 shared_name, "%{!shared: ", static_name, "}"
>                 "}}"
> +#endif
>  #else
>    buf = concat ("%{static|static-libgcc:", static_name, " ", eh_name, "}"
>                 "%{!static:%{!static-libgcc:"
> --- gcc/config.in.jj    2025-12-30 22:20:58.421132957 +0100
> +++ gcc/config.in       2026-01-12 15:07:20.689375401 +0100
> @@ -2658,6 +2658,12 @@
>  #endif
>
>
> +/* Define if your linker supports AS_NEEDED in linker scripts. */
> +#ifndef USED_FOR_TARGET
> +#undef USE_LD_AS_NEEDED_LDSCRIPT
> +#endif
> +
> +
>  /* Define to 1 if the 'long long' type is wider than 'long' but still
>     efficiently supported by the host hardware. */
>  #ifndef USED_FOR_TARGET
> --- gcc/configure.jj    2026-01-09 22:19:56.398735331 +0100
> +++ gcc/configure       2026-01-12 15:54:43.900829005 +0100
> @@ -33445,10 +33445,12 @@ else
>    gcc_cv_ld_as_needed=no
>  gcc_cv_ld_as_needed_option='--as-needed'
>  gcc_cv_ld_no_as_needed_option='--no-as-needed'
> +gcc_cv_ld_use_as_needed_ldscript=no
>  if test $in_tree_ld = yes ; then
>    if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" 
> -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 \
>       && test $in_tree_ld_is_elf = yes; then
>      gcc_cv_ld_as_needed=yes
> +    gcc_cv_ld_use_as_needed_ldscript=yes
>      if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" 
> -ge 28; then
>        gcc_cv_ld_as_needed_option='--push-state --as-needed'
>        gcc_cv_ld_no_as_needed_option='--pop-state'
> @@ -33458,6 +33460,7 @@ elif test x$gcc_cv_ld != x; then
>    # Check if linker supports --as-needed and --no-as-needed options
>    if $gcc_cv_ld --help 2>&1 | grep as-needed > /dev/null; then
>      gcc_cv_ld_as_needed=yes
> +    gcc_cv_ld_use_as_needed_ldscript=yes
>      if $gcc_cv_ld --help 2>&1 | grep push-state > /dev/null \
>         && $gcc_cv_ld --help 2>&1 | grep pop-state > /dev/null \
>         && echo "$ld_ver" | grep GNU > /dev/null \
> @@ -33476,6 +33479,7 @@ elif test x$gcc_cv_ld != x; then
>        gcc_cv_ld_as_needed=yes
>        gcc_cv_ld_as_needed_option="-z ignore"
>        gcc_cv_ld_no_as_needed_option="-z record"
> +      gcc_cv_ld_use_as_needed_ldscript=no
>        ;;
>    esac
>  fi
> @@ -33484,6 +33488,7 @@ case "$target" in
>      if echo "$ld_ver" | grep GNU > /dev/null; then
>        # Doesn't work with gld on Solaris/x86 due to PR ld/12320.
>        gcc_cv_ld_as_needed=no
> +      gcc_cv_ld_use_as_needed_ldscript=no
>      fi
>      ;;
>  esac
> @@ -33506,6 +33511,11 @@ cat >>confdefs.h <<_ACEOF
>  _ACEOF
>
>  fi
> +if test x"$gcc_cv_ld_use_as_needed_ldscript" = xyes; then
> +
> +$as_echo "#define USE_LD_AS_NEEDED_LDSCRIPT 1" >>confdefs.h
> +
> +fi
>
>  { $as_echo "$as_me:${as_lineno-$LINENO}: checking linker mapfile support for 
> clearing hardware capabilities" >&5
>  $as_echo_n "checking linker mapfile support for clearing hardware 
> capabilities... " >&6; }
> --- libgcc/config/t-slibgcc.jj  2026-01-02 22:41:17.522549527 +0100
> +++ libgcc/config/t-slibgcc     2026-01-12 14:13:29.941245725 +0100
> @@ -30,6 +30,15 @@ SHLIB_LC = -lc
>  SHLIB_MAKE_SOLINK = $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
>  SHLIB_INSTALL_SOLINK = $(LN_S) $(SHLIB_SONAME) \
>         $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
> +SHLIB_ASNEEDED_SOLINK = @shlib_base_name@_asneeded.so
> +SHLIB_MAKE_ASNEEDED_SOLINK = \
> +        (echo "/* GNU ld script"; \
> +         echo "   Add DT_NEEDED entry for libgcc_s.so only if needed.  */"; \
> +         echo "INPUT ( AS_NEEDED ( -lgcc_s ) )" \
> +        ) > $(SHLIB_DIR)/$(SHLIB_ASNEEDED_SOLINK)
> +SHLIB_INSTALL_ASNEEDED_SOLINK = \
> +        $(INSTALL_DATA) $(SHLIB_DIR)/$(SHLIB_ASNEEDED_SOLINK) \
> +          $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_ASNEEDED_SOLINK)
>
>  SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
>         $(SHLIB_LDFLAGS) $(LDFLAGS) \
> @@ -41,7 +50,8 @@ SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -sh
>                 $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
>         else true; fi && \
>         mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
> -       $(SHLIB_MAKE_SOLINK)
> +       $(SHLIB_MAKE_SOLINK) && \
> +       $(SHLIB_MAKE_ASNEEDED_SOLINK)
>
>  INSTALL_SHLIB = $(INSTALL_DATA)
>
> @@ -50,4 +60,5 @@ SHLIB_INSTALL = \
>         $(INSTALL_SHLIB) $(SHLIB_DIR)/$(SHLIB_SONAME) \
>           $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
>         rm -f $(DESTDIR)$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
> -       $(SHLIB_INSTALL_SOLINK)
> +       $(SHLIB_INSTALL_SOLINK); \
> +       $(SHLIB_INSTALL_ASNEEDED_SOLINK)
> --- libatomic/acinclude.m4.jj   2025-11-19 23:28:44.359321440 +0100
> +++ libatomic/acinclude.m4      2026-01-12 15:52:53.376720395 +0100
> @@ -345,9 +345,14 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES],
>    changequote(,)
>    ldver=`$LD --version 2>/dev/null |
>           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
> +  ldasneeded=`$LD --help 2>/dev/null | grep as-needed`
>    changequote([,])
>    libat_gnu_ld_version=`echo $ldver | \
>           $AWK -F. '{ if (NF<3) [$]3=0; print ([$]1*100+[$]2)*100+[$]3 }'`
> +  libat_ld_asneeded=no
> +  if test -n "$ldasneeded"; then
> +    libat_ld_asneeded=yes
> +  fi
>
>    # Set --gc-sections.
>    if test "$with_gnu_ld" = "notbroken"; then
> @@ -394,6 +399,7 @@ AC_DEFUN([LIBAT_CHECK_LINKER_FEATURES],
>
>    AC_SUBST(SECTION_LDFLAGS)
>    AC_SUBST(OPT_LDFLAGS)
> +  AM_CONDITIONAL(LIBAT_BUILD_ASNEEDED_SOLINK, test $libat_ld_asneeded != no)
>  ])
>
>
> --- libatomic/libatomic_asneeded.so.jj  2026-01-12 14:55:16.936306111 +0100
> +++ libatomic/libatomic_asneeded.so     2026-01-12 14:55:10.355419981 +0100
> @@ -0,0 +1,3 @@
> +/* GNU ld script
> +   Add DT_NEEDED entry for -latomic only if needed.  */
> +INPUT ( AS_NEEDED ( -latomic ) )
> --- libatomic/libatomic_asneeded.a.jj   2026-01-12 14:55:24.808169903 +0100
> +++ libatomic/libatomic_asneeded.a      2026-01-12 14:55:58.313590157 +0100
> @@ -0,0 +1,3 @@
> +/* GNU ld script
> +   Just link in libatomic.a.  */
> +INPUT ( libatomic.a )
> --- libatomic/Makefile.am.jj    2026-01-02 22:41:17.437550936 +0100
> +++ libatomic/Makefile.am       2026-01-12 15:00:34.438836454 +0100
> @@ -40,6 +40,9 @@ AM_CCASFLAGS = $(XCFLAGS)
>  AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
>
>  toolexeclib_LTLIBRARIES = libatomic.la
> +if LIBAT_BUILD_ASNEEDED_SOLINK
> +toolexeclib_DATA = libatomic_asneeded.so libatomic_asneeded.a
> +endif
>  noinst_LTLIBRARIES = libatomic_convenience.la
>
>  if LIBAT_BUILD_VERSIONED_SHLIB
> @@ -183,6 +186,10 @@ all-multi: $(libatomic_la_LIBADD)
>  gcc_objdir = `pwd`/$(MULTIBUILDTOP)../../gcc/
>  all-local: libatomic.la
>         $(LIBTOOL) --mode=install $(INSTALL_DATA) libatomic.la 
> $(gcc_objdir)$(MULTISUBDIR)/
> +if LIBAT_BUILD_ASNEEDED_SOLINK
> +       $(INSTALL_DATA) $(top_srcdir)/libatomic_asneeded.so 
> $(gcc_objdir)$(MULTISUBDIR)/
> +       $(INSTALL_DATA) $(top_srcdir)/libatomic_asneeded.a 
> $(gcc_objdir)$(MULTISUBDIR)/
> +endif
>         rm $(gcc_objdir)$(MULTISUBDIR)/libatomic.la
>
>  # target overrides
> --- libatomic/Makefile.in.jj    2025-12-11 21:58:16.805551818 +0100
> +++ libatomic/Makefile.in       2026-01-12 15:01:00.186978608 +0100
> @@ -14,6 +14,7 @@
>
>  @SET_MAKE@
>
> +
>  VPATH = @srcdir@
>  am__is_gnu_make = { \
>    if test -z '$(MAKELEVEL)'; then \
> @@ -158,7 +159,8 @@ am__uninstall_files_from_dir = { \
>      || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
>           $(am__cd) "$$dir" && rm -f $$files; }; \
>    }
> -am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
> +am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \
> +       "$(DESTDIR)$(toolexeclibdir)"
>  LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
>  @ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__objects_1 =  \
>  @ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@       atomic_16.lo
> @@ -244,6 +246,7 @@ am__can_run_installinfo = \
>      n|no|NO) false;; \
>      *) (install-info --version) >/dev/null 2>&1;; \
>    esac
> +DATA = $(toolexeclib_DATA)
>  RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
>    distclean-recursive maintainer-clean-recursive
>  am__recursive_targets = \
> @@ -422,6 +425,7 @@ AM_CFLAGS = $(XCFLAGS)
>  AM_CCASFLAGS = $(XCFLAGS)
>  AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS)
>  toolexeclib_LTLIBRARIES = libatomic.la
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@toolexeclib_DATA = libatomic_asneeded.so 
> libatomic_asneeded.a
>  noinst_LTLIBRARIES = libatomic_convenience.la
>  @LIBAT_BUILD_VERSIONED_SHLIB_FALSE@libatomic_version_script =
>  
> @LIBAT_BUILD_VERSIONED_SHLIB_GNU_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@libatomic_version_script
>  = -Wl,--version-script,$(top_srcdir)/libatomic.map
> @@ -667,6 +671,27 @@ clean-libtool:
>
>  distclean-libtool:
>         -rm -f libtool config.lt
> +install-toolexeclibDATA: $(toolexeclib_DATA)
> +       @$(NORMAL_INSTALL)
> +       @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \
> +       if test -n "$$list"; then \
> +         echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \
> +         $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \
> +       fi; \
> +       for p in $$list; do \
> +         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
> +         echo "$$d$$p"; \
> +       done | $(am__base_list) | \
> +       while read files; do \
> +         echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdir)'"; \
> +         $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \
> +       done
> +
> +uninstall-toolexeclibDATA:
> +       @$(NORMAL_UNINSTALL)
> +       @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \
> +       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
> +       dir='$(DESTDIR)$(toolexeclibdir)'; $(am__uninstall_files_from_dir)
>
>  # This directory's subdirectories are mostly independent; you can cd
>  # into them and run 'make' without going through this Makefile.
> @@ -775,10 +800,10 @@ distclean-tags:
>         -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
>  check-am: all-am
>  check: check-recursive
> -all-am: Makefile $(LTLIBRARIES) auto-config.h all-local
> +all-am: Makefile $(LTLIBRARIES) $(DATA) auto-config.h all-local
>  installdirs: installdirs-recursive
>  installdirs-am:
> -       for dir in "$(DESTDIR)$(toolexeclibdir)"; do \
> +       for dir in "$(DESTDIR)$(toolexeclibdir)" 
> "$(DESTDIR)$(toolexeclibdir)"; do \
>           test -z "$$dir" || $(MKDIR_P) "$$dir"; \
>         done
>  install: install-recursive
> @@ -842,7 +867,8 @@ install-dvi: install-dvi-recursive
>
>  install-dvi-am:
>
> -install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES
> +install-exec-am: install-exec-local install-toolexeclibDATA \
> +       install-toolexeclibLTLIBRARIES
>
>  install-html: install-html-recursive
>
> @@ -885,7 +911,8 @@ ps: ps-recursive
>
>  ps-am:
>
> -uninstall-am: uninstall-toolexeclibLTLIBRARIES
> +uninstall-am: uninstall-toolexeclibDATA \
> +       uninstall-toolexeclibLTLIBRARIES
>
>  .MAKE: $(am__recursive_targets) all install-am install-strip
>
> @@ -900,12 +927,14 @@ uninstall-am: uninstall-toolexeclibLTLIB
>         install-exec install-exec-am install-exec-local install-html \
>         install-html-am install-info install-info-am install-man \
>         install-pdf install-pdf-am install-ps install-ps-am \
> -       install-strip install-toolexeclibLTLIBRARIES installcheck \
> -       installcheck-am installdirs installdirs-am maintainer-clean \
> +       install-strip install-toolexeclibDATA \
> +       install-toolexeclibLTLIBRARIES installcheck installcheck-am \
> +       installdirs installdirs-am maintainer-clean \
>         maintainer-clean-generic maintainer-clean-local mostlyclean \
>         mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
>         mostlyclean-local pdf pdf-am ps ps-am tags tags-am uninstall \
> -       uninstall-am uninstall-toolexeclibLTLIBRARIES
> +       uninstall-am uninstall-toolexeclibDATA \
> +       uninstall-toolexeclibLTLIBRARIES
>
>  .PRECIOUS: Makefile
>
> @@ -931,6 +960,8 @@ vpath % $(strip $(search_path))
>  all-multi: $(libatomic_la_LIBADD)
>  all-local: libatomic.la
>         $(LIBTOOL) --mode=install $(INSTALL_DATA) libatomic.la 
> $(gcc_objdir)$(MULTISUBDIR)/
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@     $(INSTALL_DATA) 
> $(top_srcdir)/libatomic_asneeded.so $(gcc_objdir)$(MULTISUBDIR)/
> +@LIBAT_BUILD_ASNEEDED_SOLINK_TRUE@     $(INSTALL_DATA) 
> $(top_srcdir)/libatomic_asneeded.a $(gcc_objdir)$(MULTISUBDIR)/
>         rm $(gcc_objdir)$(MULTISUBDIR)/libatomic.la
>
>  # target overrides
> --- libatomic/configure.jj      2025-12-30 22:20:58.527131163 +0100
> +++ libatomic/configure 2026-01-12 15:53:04.676527024 +0100
> @@ -656,6 +656,8 @@ LIBAT_BUILD_VERSIONED_SHLIB_GNU_FALSE
>  LIBAT_BUILD_VERSIONED_SHLIB_GNU_TRUE
>  LIBAT_BUILD_VERSIONED_SHLIB_FALSE
>  LIBAT_BUILD_VERSIONED_SHLIB_TRUE
> +LIBAT_BUILD_ASNEEDED_SOLINK_FALSE
> +LIBAT_BUILD_ASNEEDED_SOLINK_TRUE
>  OPT_LDFLAGS
>  SECTION_LDFLAGS
>  PARTIAL_VXWORKS_FALSE
> @@ -11864,7 +11866,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11867 "configure"
> +#line 11869 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> @@ -11970,7 +11972,7 @@ else
>    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
>    lt_status=$lt_dlunknown
>    cat > conftest.$ac_ext <<_LT_EOF
> -#line 11973 "configure"
> +#line 11975 "configure"
>  #include "confdefs.h"
>
>  #if HAVE_DLFCN_H
> @@ -15731,9 +15733,14 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
>
>    ldver=`$LD --version 2>/dev/null |
>           sed -e 's/[. ][0-9]\{8\}$//;s/.* \([^ ]\{1,\}\)$/\1/; q'`
> +  ldasneeded=`$LD --help 2>/dev/null | grep as-needed`
>
>    libat_gnu_ld_version=`echo $ldver | \
>           $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'`
> +  libat_ld_asneeded=no
> +  if test -n "$ldasneeded"; then
> +    libat_ld_asneeded=yes
> +  fi
>
>    # Set --gc-sections.
>    if test "$with_gnu_ld" = "notbroken"; then
> @@ -15797,6 +15804,14 @@ $as_echo "$ac_sectionLDflags" >&6; }
>
>
>
> +   if test $libat_ld_asneeded != no; then
> +  LIBAT_BUILD_ASNEEDED_SOLINK_TRUE=
> +  LIBAT_BUILD_ASNEEDED_SOLINK_FALSE='#'
> +else
> +  LIBAT_BUILD_ASNEEDED_SOLINK_TRUE='#'
> +  LIBAT_BUILD_ASNEEDED_SOLINK_FALSE=
> +fi
> +
>
>
>
> @@ -16442,6 +16457,10 @@ if test -z "${PARTIAL_VXWORKS_TRUE}" &&
>  Usually this means the macro was only invoked conditionally." "$LINENO" 5
>  fi
>
> +if test -z "${LIBAT_BUILD_ASNEEDED_SOLINK_TRUE}" && test -z 
> "${LIBAT_BUILD_ASNEEDED_SOLINK_FALSE}"; then
> +  as_fn_error $? "conditional \"LIBAT_BUILD_ASNEEDED_SOLINK\" was never 
> defined.
> +Usually this means the macro was only invoked conditionally." "$LINENO" 5
> +fi
>  if test -z "${LIBAT_BUILD_VERSIONED_SHLIB_TRUE}" && test -z 
> "${LIBAT_BUILD_VERSIONED_SHLIB_FALSE}"; then
>    as_fn_error $? "conditional \"LIBAT_BUILD_VERSIONED_SHLIB\" was never 
> defined.
>  Usually this means the macro was only invoked conditionally." "$LINENO" 5
>
>
>         Jakub
>

Reply via email to