https://gcc.gnu.org/g:10360c1b0d45ae129df616a9e9b1db5f2a2eaef8

commit r16-827-g10360c1b0d45ae129df616a9e9b1db5f2a2eaef8
Author: Alexandre Oliva <ol...@adacore.com>
Date:   Thu May 22 15:15:31 2025 -0300

    [vxworks] build partial libatomic
    
    Since vxworks' libc contains much of libatomic, in not-very-granular
    modules, building all of libatomic doesn't work very well.
    
    However, some expected entry points are not present in libc, so
    arrange for libatomic to build only those missing bits.
    
    
    for  libatomic/ChangeLog
    
            * configure.tgt: Set partial_libatomic on *-*-vxworks*.
            * configure.ac (PARTIAL_VXWORKS): New AM_CONDITIONAL.
            * Makefile.am (libatomic_la_SOURCES): Select few sources for
            PARTIAL_VXWORKS.
            * configure, Makefile.in: Rebuilt.

Diff:
---
 libatomic/Makefile.am   |   8 +++-
 libatomic/Makefile.in   | 109 +++++++++++++++++++++++++++---------------------
 libatomic/configure     |  20 ++++++++-
 libatomic/configure.ac  |   3 ++
 libatomic/configure.tgt |   4 ++
 5 files changed, 93 insertions(+), 51 deletions(-)

diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
index 0f1a71560848..65dff6ece9ff 100644
--- a/libatomic/Makefile.am
+++ b/libatomic/Makefile.am
@@ -70,11 +70,16 @@ endif
 
 libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
        $(lt_host_flags) $(libatomic_darwin_rpath)
+
+SIZES = @SIZES@
+
+if PARTIAL_VXWORKS
+libatomic_la_SOURCES = fenv.c fence.c flag.c
+else
 libatomic_la_SOURCES = gload.c gstore.c gcas.c gexch.c glfree.c lock.c init.c \
        fenv.c fence.c flag.c
 
 SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
-SIZES = @SIZES@
 
 EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
 libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
@@ -152,6 +157,7 @@ endif
 if ARCH_AARCH64_LINUX
 libatomic_la_SOURCES += atomic_16.S
 endif
+endif
 
 libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
 libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
index 9798e7c09e99..4344ac4a2e8f 100644
--- a/libatomic/Makefile.in
+++ b/libatomic/Makefile.in
@@ -89,18 +89,18 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_1 = $(foreach 
s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_2 = $(foreach \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ s,$(SIZES),$(addsuffix \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _$(s)_1_.lo,$(SIZEOBJS))) \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ $(addsuffix \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _8_2_.lo,$(SIZEOBJS)) \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ tas_1_2_.lo
-@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@am__append_3 = $(addsuffix 
_8_1_.lo,$(SIZEOBJS))
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@am__append_4 = $(addsuffix 
_16_1_.lo,$(SIZEOBJS)) \
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@                   $(addsuffix 
_16_2_.lo,$(SIZEOBJS))
-
-@ARCH_AARCH64_LINUX_TRUE@am__append_5 = atomic_16.S
+@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_1 
= $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_2 = 
$(foreach \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  
s,$(SIZES),$(addsuffix \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  
_$(s)_1_.lo,$(SIZEOBJS))) \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  $(addsuffix \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  
_8_2_.lo,$(SIZEOBJS)) \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  tas_1_2_.lo
+@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_3 = 
$(addsuffix _8_1_.lo,$(SIZEOBJS))
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_4 = 
$(addsuffix _16_1_.lo,$(SIZEOBJS)) \
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@                    
$(addsuffix _16_2_.lo,$(SIZEOBJS))
+
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_5 = atomic_16.S
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -156,10 +156,14 @@ am__uninstall_files_from_dir = { \
   }
 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
-@ARCH_AARCH64_LINUX_TRUE@am__objects_1 = atomic_16.lo
-am_libatomic_la_OBJECTS = gload.lo gstore.lo gcas.lo gexch.lo \
-       glfree.lo lock.lo init.lo fenv.lo fence.lo flag.lo \
-       $(am__objects_1)
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__objects_1 =  \
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@       atomic_16.lo
+@PARTIAL_VXWORKS_FALSE@am_libatomic_la_OBJECTS = gload.lo gstore.lo \
+@PARTIAL_VXWORKS_FALSE@        gcas.lo gexch.lo glfree.lo lock.lo \
+@PARTIAL_VXWORKS_FALSE@        init.lo fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_FALSE@        $(am__objects_1)
+@PARTIAL_VXWORKS_TRUE@am_libatomic_la_OBJECTS = fenv.lo fence.lo \
+@PARTIAL_VXWORKS_TRUE@ flag.lo $(am__objects_1)
 libatomic_la_OBJECTS = $(am_libatomic_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -169,8 +173,12 @@ libatomic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC 
$(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(libatomic_la_LDFLAGS) $(LDFLAGS) -o $@
 libatomic_convenience_la_DEPENDENCIES = $(libatomic_la_LIBADD)
-am__objects_2 = gload.lo gstore.lo gcas.lo gexch.lo glfree.lo lock.lo \
-       init.lo fenv.lo fence.lo flag.lo $(am__objects_1)
+@PARTIAL_VXWORKS_FALSE@am__objects_2 = gload.lo gstore.lo gcas.lo \
+@PARTIAL_VXWORKS_FALSE@        gexch.lo glfree.lo lock.lo init.lo \
+@PARTIAL_VXWORKS_FALSE@        fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_FALSE@        $(am__objects_1)
+@PARTIAL_VXWORKS_TRUE@am__objects_2 = fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_TRUE@ $(am__objects_1)
 am_libatomic_convenience_la_OBJECTS = $(am__objects_2)
 libatomic_convenience_la_OBJECTS =  \
        $(am_libatomic_convenience_la_OBJECTS)
@@ -423,39 +431,44 @@ libatomic_version_info = -version-info $(libtool_VERSION)
 libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
        $(lt_host_flags) $(libatomic_darwin_rpath)
 
-libatomic_la_SOURCES = gload.c gstore.c gcas.c gexch.c glfree.c lock.c \
-       init.c fenv.c fence.c flag.c $(am__append_5)
-SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
-EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
-libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
-empty = 
-space = $(empty) $(empty)
-PAT_SPLIT = $(subst _,$(space),$(*F))
-PAT_BASE = $(word 1,$(PAT_SPLIT))
-PAT_N = $(word 2,$(PAT_SPLIT))
-PAT_S = $(word 3,$(PAT_SPLIT))
-IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
-IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
-@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-@AMDEP_FALSE@M_DEPS = 
-M_SIZE = -DN=$(PAT_N)
-M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
-M_FILE = $(PAT_BASE)_n.c
+@PARTIAL_VXWORKS_FALSE@libatomic_la_SOURCES = gload.c gstore.c gcas.c \
+@PARTIAL_VXWORKS_FALSE@        gexch.c glfree.c lock.c init.c fenv.c \
+@PARTIAL_VXWORKS_FALSE@        fence.c flag.c $(am__append_5)
+@PARTIAL_VXWORKS_TRUE@libatomic_la_SOURCES = fenv.c fence.c flag.c \
+@PARTIAL_VXWORKS_TRUE@ $(am__append_5)
+@PARTIAL_VXWORKS_FALSE@SIZEOBJS = load store cas exch fadd fsub fand fior fxor 
fnand tas
+@PARTIAL_VXWORKS_FALSE@EXTRA_libatomic_la_SOURCES = $(addsuffix 
_n.c,$(SIZEOBJS))
+@PARTIAL_VXWORKS_FALSE@libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) 
$(libatomic_version_dep)
+@PARTIAL_VXWORKS_FALSE@empty = 
+@PARTIAL_VXWORKS_FALSE@space = $(empty) $(empty)
+@PARTIAL_VXWORKS_FALSE@PAT_SPLIT = $(subst _,$(space),$(*F))
+@PARTIAL_VXWORKS_FALSE@PAT_BASE = $(word 1,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@PAT_N = $(word 2,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@PAT_S = $(word 3,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
+@PARTIAL_VXWORKS_FALSE@IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
+@PARTIAL_VXWORKS_FALSE@@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF 
$(DEPDIR)/$(@F).Ppo
+@PARTIAL_VXWORKS_FALSE@@AMDEP_FALSE@M_DEPS = 
+@PARTIAL_VXWORKS_FALSE@M_SIZE = -DN=$(PAT_N)
+@PARTIAL_VXWORKS_FALSE@M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
+@PARTIAL_VXWORKS_FALSE@M_FILE = $(PAT_BASE)_n.c
 
 # The lack of explicit dependency on the source file means that VPATH cannot
 # work properly.  Instead, perform this operation by hand.  First, collect a
 # list of all .c files in the search path.
-all_c_files := $(foreach dir,$(search_path),$(wildcard $(dir)/*.c))
+@PARTIAL_VXWORKS_FALSE@all_c_files := $(foreach dir,$(search_path),$(wildcard 
$(dir)/*.c))
 
 # Then sort through them to find the one we want, and select the first.
-M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
-libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
-       _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
-       $(am__append_3) $(am__append_4)
-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp 
-DHAVE_KERNEL64
-@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16 -mcx16
+@PARTIAL_VXWORKS_FALSE@M_SRC = $(firstword $(filter %/$(M_FILE), 
$(all_c_files)))
+@PARTIAL_VXWORKS_FALSE@libatomic_la_LIBADD = $(foreach \
+@PARTIAL_VXWORKS_FALSE@        s,$(SIZES),$(addsuffix \
+@PARTIAL_VXWORKS_FALSE@        _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
+@PARTIAL_VXWORKS_FALSE@        $(am__append_2) $(am__append_3) \
+@PARTIAL_VXWORKS_FALSE@        $(am__append_4)
+@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS 
= -march=armv8-a+lse
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = 
-march=armv7-a+fp -DHAVE_KERNEL64
+@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = 
-march=i586
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = 
-mcx16 -mcx16
 libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
 libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
 MULTISRCTOP = 
@@ -891,10 +904,10 @@ vpath % $(strip $(search_path))
 @LIBAT_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@       
  $(libatomic_la_OBJECTS) $(libatomic_la_LIBADD) \
 @LIBAT_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@       
 > $@ || (rm -f $@ ; exit 1)
 
--include $(wildcard $(DEPDIR)/*.Ppo)
+@PARTIAL_VXWORKS_FALSE@-include $(wildcard $(DEPDIR)/*.Ppo)
 
-%_.lo: Makefile
-       $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c -o $@ $(M_SRC)
+@PARTIAL_VXWORKS_FALSE@%_.lo: Makefile
+@PARTIAL_VXWORKS_FALSE@        $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c 
-o $@ $(M_SRC)
 
 # Amend the automake generated all-multi rule to guarantee that all-multi
 # is not run in parallel with the %_.lo rules which generate $(DEPDIR)/*.Ppo
diff --git a/libatomic/configure b/libatomic/configure
index d579bab96f86..67b3a6388d7f 100755
--- a/libatomic/configure
+++ b/libatomic/configure
@@ -656,6 +656,8 @@ LIBAT_BUILD_VERSIONED_SHLIB_FALSE
 LIBAT_BUILD_VERSIONED_SHLIB_TRUE
 OPT_LDFLAGS
 SECTION_LDFLAGS
+PARTIAL_VXWORKS_FALSE
+PARTIAL_VXWORKS_TRUE
 SYSROOT_CFLAGS_FOR_TARGET
 enable_aarch64_lse
 libtool_VERSION
@@ -11456,7 +11458,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11459 "configure"
+#line 11461 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11562,7 +11564,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11565 "configure"
+#line 11567 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11932,11 +11934,21 @@ esac
 
 
 # Get target configury.
+partial_libatomic=
 . ${srcdir}/configure.tgt
 if test -n "$UNSUPPORTED"; then
   as_fn_error $? "Configuration ${target} is unsupported." "$LINENO" 5
 fi
 
+ if test "x$partial_libatomic" = "xvxworks"; then
+  PARTIAL_VXWORKS_TRUE=
+  PARTIAL_VXWORKS_FALSE='#'
+else
+  PARTIAL_VXWORKS_TRUE='#'
+  PARTIAL_VXWORKS_FALSE=
+fi
+
+
 # Write out the ifunc resolver arg type.
 
 cat >>confdefs.h <<_ACEOF
@@ -15989,6 +16001,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z 
"${ENABLE_DARWIN_AT_RPATH
   as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${PARTIAL_VXWORKS_TRUE}" && test -z "${PARTIAL_VXWORKS_FALSE}"; 
then
+  as_fn_error $? "conditional \"PARTIAL_VXWORKS\" 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.
diff --git a/libatomic/configure.ac b/libatomic/configure.ac
index aafae71028d2..01141f643769 100644
--- a/libatomic/configure.ac
+++ b/libatomic/configure.ac
@@ -175,11 +175,14 @@ esac
 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
 
 # Get target configury.
+partial_libatomic=
 . ${srcdir}/configure.tgt
 if test -n "$UNSUPPORTED"; then
   AC_MSG_ERROR([Configuration ${target} is unsupported.])
 fi
 
+AM_CONDITIONAL(PARTIAL_VXWORKS, test "x$partial_libatomic" = "xvxworks")
+
 # Write out the ifunc resolver arg type.
 AC_DEFINE_UNQUOTED(IFUNC_RESOLVER_ARGS, $IFUNC_RESOLVER_ARGS,
        [Define ifunc resolver function argument.])
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
index 6db039d6e8bb..606d249116af 100644
--- a/libatomic/configure.tgt
+++ b/libatomic/configure.tgt
@@ -185,6 +185,10 @@ case "${target}" in
   nvptx*-*-*)
        ;;
 
+  *-*-vxworks*)
+        partial_libatomic=vxworks
+       ;;
+
   *)
        # Who are you?
        UNSUPPORTED=1

Reply via email to