From 0b5b193deccea4700b99c22c4807a99e1514c8ee Mon Sep 17 00:00:00 2001 From: William Brown Date: May 10 2017 06:05:25 +0000 Subject: Ticket 48989 - Improve counter overflow fix Fix Description: * load should only be a load, no cmp xchg * set can be a store_n, which still is atomic. We don't need cmp xchg * Add a cmocka test case of the values * remove the sunos asm * remove the x86 asm https://pagure.io/389-ds-base/issue/48989 Author: wibrown Review by: mreynolds (Thanks!) --- diff --git a/Makefile.am b/Makefile.am index d54a2cc..f885eea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1059,9 +1059,6 @@ libslapd_la_SOURCES = ldap/servers/slapd/add.c \ $(libavl_a_SOURCES) libslapd_la_CPPFLAGS = $(PLUGIN_CPPFLAGS) @sasl_inc@ @db_inc@ @svrcore_inc@ @kerberos_inc@ @pcre_inc@ -if SPARC -libslapd_la_SOURCES += ldap/servers/slapd/slapi_counter_sunos_sparcv9.S -endif libslapd_la_LIBADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NUNC_STANS_LINK) $(SVRCORE_LINK) $(NSS_LINK) $(NSPR_LINK) $(KERBEROS_LINK) $(PCRE_LINK) $(THREADLIB) $(SYSTEMD_LINK) diff --git a/Makefile.in b/Makefile.in index 21460d0..aebf284 100644 --- a/Makefile.in +++ b/Makefile.in @@ -99,9 +99,8 @@ bin_PROGRAMS = dbscan-bin$(EXEEXT) dsktune-bin$(EXEEXT) \ migratecred-bin$(EXEEXT) mmldif-bin$(EXEEXT) \ pwdhash-bin$(EXEEXT) rsearch-bin$(EXEEXT) noinst_PROGRAMS = makstrdb$(EXEEXT) -@SPARC_TRUE@am__append_1 = ldap/servers/slapd/slapi_counter_sunos_sparcv9.S -@SOLARIS_TRUE@am__append_2 = -lrt -@SOLARIS_TRUE@am__append_3 = ldap/servers/slapd/tools/ldclt/opCheck.c +@SOLARIS_TRUE@am__append_1 = -lrt +@SOLARIS_TRUE@am__append_2 = ldap/servers/slapd/tools/ldclt/opCheck.c subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ @@ -721,64 +720,7 @@ libslapd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am__libslapd_la_SOURCES_DIST = ldap/servers/slapd/add.c \ - ldap/servers/slapd/agtmmap.c ldap/servers/slapd/apibroker.c \ - ldap/servers/slapd/attr.c ldap/servers/slapd/attrlist.c \ - ldap/servers/slapd/attrsyntax.c ldap/servers/slapd/auditlog.c \ - ldap/servers/slapd/ava.c ldap/servers/slapd/backend.c \ - ldap/servers/slapd/backend_manager.c \ - ldap/servers/slapd/bitset.c ldap/servers/slapd/bulk_import.c \ - ldap/servers/slapd/charray.c ldap/servers/slapd/ch_malloc.c \ - ldap/servers/slapd/computed.c ldap/servers/slapd/control.c \ - ldap/servers/slapd/counters.c ldap/servers/slapd/csn.c \ - ldap/servers/slapd/csngen.c ldap/servers/slapd/csnset.c \ - ldap/servers/slapd/defbackend.c ldap/servers/slapd/delete.c \ - ldap/servers/slapd/dl.c ldap/servers/slapd/dn.c \ - ldap/servers/slapd/dse.c ldap/servers/slapd/dynalib.c \ - ldap/servers/slapd/entry.c ldap/servers/slapd/entrywsi.c \ - ldap/servers/slapd/errormap.c ldap/servers/slapd/eventq.c \ - ldap/servers/slapd/factory.c ldap/servers/slapd/features.c \ - ldap/servers/slapd/fileio.c ldap/servers/slapd/filter.c \ - ldap/servers/slapd/filtercmp.c \ - ldap/servers/slapd/filterentry.c \ - ldap/servers/slapd/generation.c \ - ldap/servers/slapd/getfilelist.c \ - ldap/servers/slapd/index_subsystem.c \ - ldap/servers/slapd/ldaputil.c ldap/servers/slapd/lenstr.c \ - ldap/servers/slapd/libglobs.c ldap/servers/slapd/localhost.c \ - ldap/servers/slapd/log.c ldap/servers/slapd/mapping_tree.c \ - ldap/servers/slapd/match.c ldap/servers/slapd/modify.c \ - ldap/servers/slapd/modrdn.c ldap/servers/slapd/modutil.c \ - ldap/servers/slapd/object.c ldap/servers/slapd/objset.c \ - ldap/servers/slapd/operation.c ldap/servers/slapd/opshared.c \ - ldap/servers/slapd/pagedresults.c ldap/servers/slapd/pblock.c \ - ldap/servers/slapd/plugin.c ldap/servers/slapd/plugin_acl.c \ - ldap/servers/slapd/plugin_internal_op.c \ - ldap/servers/slapd/plugin_mr.c \ - ldap/servers/slapd/plugin_role.c \ - ldap/servers/slapd/plugin_syntax.c \ - ldap/servers/slapd/protect_db.c ldap/servers/slapd/proxyauth.c \ - ldap/servers/slapd/pw.c ldap/servers/slapd/pw_retry.c \ - ldap/servers/slapd/rdn.c ldap/servers/slapd/referral.c \ - ldap/servers/slapd/regex.c ldap/servers/slapd/resourcelimit.c \ - ldap/servers/slapd/result.c ldap/servers/slapd/sasl_map.c \ - ldap/servers/slapd/schema.c ldap/servers/slapd/schemaparse.c \ - ldap/servers/slapd/security_wrappers.c \ - ldap/servers/slapd/slapd_plhash.c \ - ldap/servers/slapd/slapi_counter.c \ - ldap/servers/slapd/slapi2nspr.c \ - ldap/servers/slapd/snmp_collator.c ldap/servers/slapd/sort.c \ - ldap/servers/slapd/ssl.c ldap/servers/slapd/str2filter.c \ - ldap/servers/slapd/subentry.c ldap/servers/slapd/task.c \ - ldap/servers/slapd/time.c ldap/servers/slapd/thread_data.c \ - ldap/servers/slapd/uniqueid.c ldap/servers/slapd/uniqueidgen.c \ - ldap/servers/slapd/utf8.c ldap/servers/slapd/utf8compare.c \ - ldap/servers/slapd/util.c ldap/servers/slapd/uuid.c \ - ldap/servers/slapd/value.c ldap/servers/slapd/valueset.c \ - ldap/servers/slapd/vattr.c ldap/libraries/libavl/avl.c \ - ldap/servers/slapd/slapi_counter_sunos_sparcv9.S am__objects_2 = ldap/libraries/libavl/libslapd_la-avl.lo -@SPARC_TRUE@am__objects_3 = ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo am_libslapd_la_OBJECTS = ldap/servers/slapd/libslapd_la-add.lo \ ldap/servers/slapd/libslapd_la-agtmmap.lo \ ldap/servers/slapd/libslapd_la-apibroker.lo \ @@ -872,8 +814,7 @@ am_libslapd_la_OBJECTS = ldap/servers/slapd/libslapd_la-add.lo \ ldap/servers/slapd/libslapd_la-uuid.lo \ ldap/servers/slapd/libslapd_la-value.lo \ ldap/servers/slapd/libslapd_la-valueset.lo \ - ldap/servers/slapd/libslapd_la-vattr.lo $(am__objects_2) \ - $(am__objects_3) + ldap/servers/slapd/libslapd_la-vattr.lo $(am__objects_2) libslapd_la_OBJECTS = $(am_libslapd_la_OBJECTS) libstatechange_plugin_la_DEPENDENCIES = libslapd.la am_libstatechange_plugin_la_OBJECTS = ldap/servers/plugins/statechange/libstatechange_plugin_la-statechange.lo @@ -980,7 +921,7 @@ am__ldclt_bin_SOURCES_DIST = ldap/servers/slapd/tools/ldaptool-sasl.c \ ldap/servers/slapd/tools/ldclt/version.c \ ldap/servers/slapd/tools/ldclt/workarounds.c \ ldap/servers/slapd/tools/ldclt/opCheck.c -@SOLARIS_TRUE@am__objects_4 = ldap/servers/slapd/tools/ldclt/ldclt_bin-opCheck.$(OBJEXT) +@SOLARIS_TRUE@am__objects_3 = ldap/servers/slapd/tools/ldclt/ldclt_bin-opCheck.$(OBJEXT) am_ldclt_bin_OBJECTS = \ ldap/servers/slapd/tools/ldclt_bin-ldaptool-sasl.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-data.$(OBJEXT) \ @@ -994,7 +935,7 @@ am_ldclt_bin_OBJECTS = \ ldap/servers/slapd/tools/ldclt/ldclt_bin-utils.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-version.$(OBJEXT) \ ldap/servers/slapd/tools/ldclt/ldclt_bin-workarounds.$(OBJEXT) \ - $(am__objects_4) + $(am__objects_3) ldclt_bin_OBJECTS = $(am_ldclt_bin_OBJECTS) ldclt_bin_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @@ -1037,7 +978,7 @@ am__ns_slapd_SOURCES_DIST = ldap/servers/slapd/abandon.c \ ldap/servers/slapd/strdup.c ldap/servers/slapd/stubs.c \ ldap/servers/slapd/tempnam.c ldap/servers/slapd/unbind.c \ ldap/servers/slapd/getsocketpeer.c -@enable_ldapi_TRUE@am__objects_5 = ldap/servers/slapd/ns_slapd-getsocketpeer.$(OBJEXT) +@enable_ldapi_TRUE@am__objects_4 = ldap/servers/slapd/ns_slapd-getsocketpeer.$(OBJEXT) am_ns_slapd_OBJECTS = ldap/servers/slapd/ns_slapd-abandon.$(OBJEXT) \ ldap/servers/slapd/ns_slapd-auth.$(OBJEXT) \ ldap/servers/slapd/ns_slapd-bind.$(OBJEXT) \ @@ -1068,7 +1009,7 @@ am_ns_slapd_OBJECTS = ldap/servers/slapd/ns_slapd-abandon.$(OBJEXT) \ ldap/servers/slapd/ns_slapd-strdup.$(OBJEXT) \ ldap/servers/slapd/ns_slapd-stubs.$(OBJEXT) \ ldap/servers/slapd/ns_slapd-tempnam.$(OBJEXT) \ - ldap/servers/slapd/ns_slapd-unbind.$(OBJEXT) $(am__objects_5) + ldap/servers/slapd/ns_slapd-unbind.$(OBJEXT) $(am__objects_4) ns_slapd_OBJECTS = $(am_ns_slapd_OBJECTS) ns_slapd_DEPENDENCIES = libslapd.la libldaputil.a \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ @@ -1108,16 +1049,6 @@ DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f -CPPASCOMPILE = $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -LTCPPASCOMPILE = $(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) \ - $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ - $(AM_CCASFLAGS) $(CCASFLAGS) -AM_V_CPPAS = $(am__v_CPPAS_@AM_V@) -am__v_CPPAS_ = $(am__v_CPPAS_@AM_DEFAULT_V@) -am__v_CPPAS_0 = @echo " CPPAS " $@; -am__v_CPPAS_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ @@ -1214,8 +1145,7 @@ DIST_SOURCES = $(libavl_a_SOURCES) $(libldaputil_a_SOURCES) \ $(libreplication_plugin_la_SOURCES) \ $(libretrocl_plugin_la_SOURCES) $(libroles_plugin_la_SOURCES) \ $(librootdn_access_plugin_la_SOURCES) \ - $(libschemareload_plugin_la_SOURCES) \ - $(am__libslapd_la_SOURCES_DIST) \ + $(libschemareload_plugin_la_SOURCES) $(libslapd_la_SOURCES) \ $(libstatechange_plugin_la_SOURCES) \ $(libsyntax_plugin_la_SOURCES) $(libusn_plugin_la_SOURCES) \ $(libviews_plugin_la_SOURCES) $(libwhoami_plugin_la_SOURCES) \ @@ -1540,6 +1470,8 @@ DS_DEFINES = -DBUILD_NUM=$(BUILDNUM) -DVENDOR="\"$(vendor)\"" -DBRAND="\"$(brand DS_INCLUDES = -I$(srcdir)/ldap/include -I$(srcdir)/ldap/servers/slapd -I$(srcdir)/include -I. $(NUNC_STANS_INCLUDES) @enable_asan_FALSE@ASAN_ON = 0 @enable_asan_TRUE@ASAN_ON = 1 +@SYSTEMD_FALSE@WITH_SYSTEMD = 0 +@SYSTEMD_TRUE@WITH_SYSTEMD = 1 # these paths are dependent on the settings of prefix and exec_prefix which may be specified # at make time. So we cannot use AC_DEFINE in the configure.ac because that would set the @@ -1647,6 +1579,7 @@ CLEANFILES = dberrstrs.h ns-slapd.properties \ ldap/admin/src/scripts/usn-tombstone-cleanup.pl ldap/admin/src/scripts/verify-db.pl \ ldap/admin/src/scripts/ds_selinux_port_query ldap/admin/src/scripts/ds_selinux_enabled \ ldap/admin/src/scripts/dbverify ldap/admin/src/scripts/readnsstate \ + ldap/admin/src/scripts/dbmon.sh \ $(NULL) taskdir = $(datadir)@scripttemplatedir@ @@ -2366,60 +2299,101 @@ libns_dshttpd_la_LIBADD = libslapd.la $(LDAPSDK_LINK) $(SASL_LINK) $(NSS_LINK) $ # libslapd #------------------------ libslapd_la_SOURCES = ldap/servers/slapd/add.c \ - ldap/servers/slapd/agtmmap.c ldap/servers/slapd/apibroker.c \ - ldap/servers/slapd/attr.c ldap/servers/slapd/attrlist.c \ - ldap/servers/slapd/attrsyntax.c ldap/servers/slapd/auditlog.c \ - ldap/servers/slapd/ava.c ldap/servers/slapd/backend.c \ + ldap/servers/slapd/agtmmap.c \ + ldap/servers/slapd/apibroker.c \ + ldap/servers/slapd/attr.c \ + ldap/servers/slapd/attrlist.c \ + ldap/servers/slapd/attrsyntax.c \ + ldap/servers/slapd/auditlog.c \ + ldap/servers/slapd/ava.c \ + ldap/servers/slapd/backend.c \ ldap/servers/slapd/backend_manager.c \ - ldap/servers/slapd/bitset.c ldap/servers/slapd/bulk_import.c \ - ldap/servers/slapd/charray.c ldap/servers/slapd/ch_malloc.c \ - ldap/servers/slapd/computed.c ldap/servers/slapd/control.c \ - ldap/servers/slapd/counters.c ldap/servers/slapd/csn.c \ - ldap/servers/slapd/csngen.c ldap/servers/slapd/csnset.c \ - ldap/servers/slapd/defbackend.c ldap/servers/slapd/delete.c \ - ldap/servers/slapd/dl.c ldap/servers/slapd/dn.c \ - ldap/servers/slapd/dse.c ldap/servers/slapd/dynalib.c \ - ldap/servers/slapd/entry.c ldap/servers/slapd/entrywsi.c \ - ldap/servers/slapd/errormap.c ldap/servers/slapd/eventq.c \ - ldap/servers/slapd/factory.c ldap/servers/slapd/features.c \ - ldap/servers/slapd/fileio.c ldap/servers/slapd/filter.c \ + ldap/servers/slapd/bitset.c \ + ldap/servers/slapd/bulk_import.c \ + ldap/servers/slapd/charray.c \ + ldap/servers/slapd/ch_malloc.c \ + ldap/servers/slapd/computed.c \ + ldap/servers/slapd/control.c \ + ldap/servers/slapd/counters.c \ + ldap/servers/slapd/csn.c \ + ldap/servers/slapd/csngen.c \ + ldap/servers/slapd/csnset.c \ + ldap/servers/slapd/defbackend.c \ + ldap/servers/slapd/delete.c \ + ldap/servers/slapd/dl.c \ + ldap/servers/slapd/dn.c \ + ldap/servers/slapd/dse.c \ + ldap/servers/slapd/dynalib.c \ + ldap/servers/slapd/entry.c \ + ldap/servers/slapd/entrywsi.c \ + ldap/servers/slapd/errormap.c \ + ldap/servers/slapd/eventq.c \ + ldap/servers/slapd/factory.c \ + ldap/servers/slapd/features.c \ + ldap/servers/slapd/fileio.c \ + ldap/servers/slapd/filter.c \ ldap/servers/slapd/filtercmp.c \ ldap/servers/slapd/filterentry.c \ ldap/servers/slapd/generation.c \ ldap/servers/slapd/getfilelist.c \ ldap/servers/slapd/index_subsystem.c \ - ldap/servers/slapd/ldaputil.c ldap/servers/slapd/lenstr.c \ - ldap/servers/slapd/libglobs.c ldap/servers/slapd/localhost.c \ - ldap/servers/slapd/log.c ldap/servers/slapd/mapping_tree.c \ - ldap/servers/slapd/match.c ldap/servers/slapd/modify.c \ - ldap/servers/slapd/modrdn.c ldap/servers/slapd/modutil.c \ - ldap/servers/slapd/object.c ldap/servers/slapd/objset.c \ - ldap/servers/slapd/operation.c ldap/servers/slapd/opshared.c \ - ldap/servers/slapd/pagedresults.c ldap/servers/slapd/pblock.c \ - ldap/servers/slapd/plugin.c ldap/servers/slapd/plugin_acl.c \ + ldap/servers/slapd/ldaputil.c \ + ldap/servers/slapd/lenstr.c \ + ldap/servers/slapd/libglobs.c \ + ldap/servers/slapd/localhost.c \ + ldap/servers/slapd/log.c \ + ldap/servers/slapd/mapping_tree.c \ + ldap/servers/slapd/match.c \ + ldap/servers/slapd/modify.c \ + ldap/servers/slapd/modrdn.c \ + ldap/servers/slapd/modutil.c \ + ldap/servers/slapd/object.c \ + ldap/servers/slapd/objset.c \ + ldap/servers/slapd/operation.c \ + ldap/servers/slapd/opshared.c \ + ldap/servers/slapd/pagedresults.c \ + ldap/servers/slapd/pblock.c \ + ldap/servers/slapd/plugin.c \ + ldap/servers/slapd/plugin_acl.c \ ldap/servers/slapd/plugin_internal_op.c \ ldap/servers/slapd/plugin_mr.c \ ldap/servers/slapd/plugin_role.c \ ldap/servers/slapd/plugin_syntax.c \ - ldap/servers/slapd/protect_db.c ldap/servers/slapd/proxyauth.c \ - ldap/servers/slapd/pw.c ldap/servers/slapd/pw_retry.c \ - ldap/servers/slapd/rdn.c ldap/servers/slapd/referral.c \ - ldap/servers/slapd/regex.c ldap/servers/slapd/resourcelimit.c \ - ldap/servers/slapd/result.c ldap/servers/slapd/sasl_map.c \ - ldap/servers/slapd/schema.c ldap/servers/slapd/schemaparse.c \ + ldap/servers/slapd/protect_db.c \ + ldap/servers/slapd/proxyauth.c \ + ldap/servers/slapd/pw.c \ + ldap/servers/slapd/pw_retry.c \ + ldap/servers/slapd/rdn.c \ + ldap/servers/slapd/referral.c \ + ldap/servers/slapd/regex.c \ + ldap/servers/slapd/resourcelimit.c \ + ldap/servers/slapd/result.c \ + ldap/servers/slapd/sasl_map.c \ + ldap/servers/slapd/schema.c \ + ldap/servers/slapd/schemaparse.c \ ldap/servers/slapd/security_wrappers.c \ ldap/servers/slapd/slapd_plhash.c \ ldap/servers/slapd/slapi_counter.c \ ldap/servers/slapd/slapi2nspr.c \ - ldap/servers/slapd/snmp_collator.c ldap/servers/slapd/sort.c \ - ldap/servers/slapd/ssl.c ldap/servers/slapd/str2filter.c \ - ldap/servers/slapd/subentry.c ldap/servers/slapd/task.c \ - ldap/servers/slapd/time.c ldap/servers/slapd/thread_data.c \ - ldap/servers/slapd/uniqueid.c ldap/servers/slapd/uniqueidgen.c \ - ldap/servers/slapd/utf8.c ldap/servers/slapd/utf8compare.c \ - ldap/servers/slapd/util.c ldap/servers/slapd/uuid.c \ - ldap/servers/slapd/value.c ldap/servers/slapd/valueset.c \ - ldap/servers/slapd/vattr.c $(libavl_a_SOURCES) $(am__append_1) + ldap/servers/slapd/snmp_collator.c \ + ldap/servers/slapd/sort.c \ + ldap/servers/slapd/ssl.c \ + ldap/servers/slapd/str2filter.c \ + ldap/servers/slapd/subentry.c \ + ldap/servers/slapd/task.c \ + ldap/servers/slapd/time.c \ + ldap/servers/slapd/thread_data.c \ + ldap/servers/slapd/uniqueid.c \ + ldap/servers/slapd/uniqueidgen.c \ + ldap/servers/slapd/utf8.c \ + ldap/servers/slapd/utf8compare.c \ + ldap/servers/slapd/util.c \ + ldap/servers/slapd/uuid.c \ + ldap/servers/slapd/value.c \ + ldap/servers/slapd/valueset.c \ + ldap/servers/slapd/vattr.c \ + $(libavl_a_SOURCES) + libslapd_la_CPPFLAGS = $(PLUGIN_CPPFLAGS) @sasl_inc@ @db_inc@ @svrcore_inc@ @kerberos_inc@ @pcre_inc@ libslapd_la_LIBADD = $(LDAPSDK_LINK) $(SASL_LINK) $(NUNC_STANS_LINK) $(SVRCORE_LINK) $(NSS_LINK) $(NSPR_LINK) $(KERBEROS_LINK) $(PCRE_LINK) $(THREADLIB) $(SYSTEMD_LINK) @@ -2984,7 +2958,7 @@ ldap_agent_bin_SOURCES = ldap/servers/snmp/main.c \ ldap_agent_bin_CPPFLAGS = $(AM_CPPFLAGS) @netsnmp_inc@ @openldap_inc@ @ldapsdk_inc@ @nss_inc@ @nspr_inc@ ldap_agent_bin_LDADD = $(LDAPSDK_LINK_NOTHR) $(SASL_LINK) $(NSS_LINK) \ - $(NSPR_LINK) $(NETSNMP_LINK) $(THREADLIB) $(am__append_2) + $(NSPR_LINK) $(NETSNMP_LINK) $(THREADLIB) $(am__append_1) #------------------------ # ldclt @@ -3000,7 +2974,7 @@ ldclt_bin_SOURCES = ldap/servers/slapd/tools/ldaptool-sasl.c \ ldap/servers/slapd/tools/ldclt/threadMain.c \ ldap/servers/slapd/tools/ldclt/utils.c \ ldap/servers/slapd/tools/ldclt/version.c \ - ldap/servers/slapd/tools/ldclt/workarounds.c $(am__append_3) + ldap/servers/slapd/tools/ldclt/workarounds.c $(am__append_2) ldclt_bin_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/ldap/servers/slapd/tools @openldap_inc@ @ldapsdk_inc@ @sasl_inc@ @nss_inc@ @nspr_inc@ ldclt_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBNSL) $(LIBSOCKET) $(LIBDL) $(THREADLIB) @@ -3158,6 +3132,7 @@ rsearch_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBS @BUNDLE_FALSE@ -e 's,@updatedir\@,$(updatedir),g' \ @BUNDLE_FALSE@ -e 's,@ldaplib\@,$(ldaplib),g' \ @BUNDLE_FALSE@ -e 's,@ldaplib_defs\@,$(ldaplib_defs),g' \ +@BUNDLE_FALSE@ -e 's,@with_systemd\@,$(WITH_SYSTEMD),g' \ @BUNDLE_FALSE@ -e 's,@systemdsystemunitdir\@,$(systemdsystemunitdir),g' \ @BUNDLE_FALSE@ -e 's,@systemdsystemconfdir\@,$(systemdsystemconfdir),g' \ @BUNDLE_FALSE@ -e 's,@systemdgroupname\@,$(systemdgroupname),g' \ @@ -3238,6 +3213,7 @@ rsearch_bin_LDADD = $(NSPR_LINK) $(NSS_LINK) $(LDAPSDK_LINK) $(SASL_LINK) $(LIBS @BUNDLE_TRUE@ -e 's,@updatedir\@,$(updatedir),g' \ @BUNDLE_TRUE@ -e 's,@ldaplib\@,$(ldaplib),g' \ @BUNDLE_TRUE@ -e 's,@ldaplib_defs\@,$(ldaplib_defs),g' \ +@BUNDLE_TRUE@ -e 's,@with_systemd\@,$(WITH_SYSTEMD),g' \ @BUNDLE_TRUE@ -e 's,@systemdsystemunitdir\@,$(systemdsystemunitdir),g' \ @BUNDLE_TRUE@ -e 's,@systemdsystemconfdir\@,$(systemdsystemconfdir),g' \ @BUNDLE_TRUE@ -e 's,@systemdgroupname\@,$(systemdgroupname),g' \ @@ -3247,7 +3223,7 @@ all: $(BUILT_SOURCES) config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: -.SUFFIXES: .S .c .cpp .lo .o .obj +.SUFFIXES: .c .cpp .lo .o .obj am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @@ -4798,9 +4774,6 @@ ldap/servers/slapd/libslapd_la-vattr.lo: \ ldap/libraries/libavl/libslapd_la-avl.lo: \ ldap/libraries/libavl/$(am__dirstamp) \ ldap/libraries/libavl/$(DEPDIR)/$(am__dirstamp) -ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo: \ - ldap/servers/slapd/$(am__dirstamp) \ - ldap/servers/slapd/$(DEPDIR)/$(am__dirstamp) libslapd.la: $(libslapd_la_OBJECTS) $(libslapd_la_DEPENDENCIES) $(EXTRA_libslapd_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(serverdir) $(libslapd_la_OBJECTS) $(libslapd_la_LIBADD) $(LIBS) @@ -5839,7 +5812,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapd_plhash.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi2nspr.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi_counter.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi_counter_sunos_sparcv9.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-snmp_collator.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-sort.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@ldap/servers/slapd/$(DEPDIR)/libslapd_la-ssl.Plo@am__quote@ @@ -6040,37 +6012,6 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@lib/libsi18n/$(DEPDIR)/libns_dshttpd_la-txtfile.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@lib/libsi18n/$(DEPDIR)/makstrdb-makstrdb.Po@am__quote@ -.S.o: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ $< - -.S.obj: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ -@am__fastdepCCAS_TRUE@ $(CPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(CPPASCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` - -.S.lo: -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ -@am__fastdepCCAS_TRUE@ $(LTCPPASCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ -@am__fastdepCCAS_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LTCPPASCOMPILE) -c -o $@ $< - -ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo: ldap/servers/slapd/slapi_counter_sunos_sparcv9.S -@am__fastdepCCAS_TRUE@ $(AM_V_CPPAS)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslapd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -MT ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo -MD -MP -MF ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi_counter_sunos_sparcv9.Tpo -c -o ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo `test -f 'ldap/servers/slapd/slapi_counter_sunos_sparcv9.S' || echo '$(srcdir)/'`ldap/servers/slapd/slapi_counter_sunos_sparcv9.S -@am__fastdepCCAS_TRUE@ $(AM_V_at)$(am__mv) ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi_counter_sunos_sparcv9.Tpo ldap/servers/slapd/$(DEPDIR)/libslapd_la-slapi_counter_sunos_sparcv9.Plo -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS)source='ldap/servers/slapd/slapi_counter_sunos_sparcv9.S' object='ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCCAS_FALSE@ DEPDIR=$(DEPDIR) $(CCASDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCCAS_FALSE@ $(AM_V_CPPAS@am__nodep@)$(LIBTOOL) $(AM_V_lt) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CCAS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libslapd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CCASFLAGS) $(CCASFLAGS) -c -o ldap/servers/slapd/libslapd_la-slapi_counter_sunos_sparcv9.lo `test -f 'ldap/servers/slapd/slapi_counter_sunos_sparcv9.S' || echo '$(srcdir)/'`ldap/servers/slapd/slapi_counter_sunos_sparcv9.S - .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @@ -10366,7 +10307,7 @@ distdir: $(DISTFILES) ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 @@ -10391,7 +10332,7 @@ dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir @@ -10409,7 +10350,7 @@ dist dist-all: distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ @@ -10419,7 +10360,7 @@ distcheck: dist *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac diff --git a/config.guess b/config.guess index dbfb978..2e9ad7f 100755 --- a/config.guess +++ b/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ timestamp='2015-01-01' # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -168,19 +168,29 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || \ + echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. + # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in + earm*) + os=netbsdelf + ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -197,6 +207,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in os=netbsd ;; esac + # Determine ABI tags. + case "${UNAME_MACHINE_ARCH}" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + ;; + esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need @@ -207,13 +224,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in release='-gnu' ;; *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" + echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` @@ -223,6 +240,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} + exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; @@ -235,6 +256,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; + *:Sortix:*:*) + echo ${UNAME_MACHINE}-unknown-sortix + exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) @@ -251,42 +275,42 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; + UNAME_MACHINE=alpha ;; "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; + UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; + UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; + UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; + UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; + UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; + UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; + UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; + UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; + UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; + UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 @@ -359,16 +383,16 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build - SUN_ARCH="i386" + SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then - SUN_ARCH="x86_64" + SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -393,7 +417,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} @@ -618,13 +642,13 @@ EOF sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi @@ -663,11 +687,11 @@ EOF exit (0); } EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac - if [ ${HP_ARCH} = "hppa2.0w" ] + if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build @@ -680,12 +704,12 @@ EOF # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then - HP_ARCH="hppa2.0w" + HP_ARCH=hppa2.0w else - HP_ARCH="hppa64" + HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} @@ -790,14 +814,14 @@ EOF echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) @@ -879,7 +903,7 @@ EOF exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix @@ -902,7 +926,7 @@ EOF EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) @@ -933,6 +957,9 @@ EOF crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; + e2k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -945,6 +972,9 @@ EOF ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + k1om:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; @@ -970,6 +1000,9 @@ EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + mips64el:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; @@ -1002,6 +1035,9 @@ EOF ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; @@ -1021,7 +1057,7 @@ EOF echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1100,7 +1136,7 @@ EOF # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that + # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; @@ -1249,6 +1285,9 @@ EOF SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux${UNAME_RELEASE} + exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; @@ -1262,9 +1301,9 @@ EOF UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in @@ -1286,7 +1325,7 @@ EOF exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then + if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi @@ -1317,7 +1356,7 @@ EOF # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. - if test "$cputype" = "386"; then + if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" @@ -1359,7 +1398,7 @@ EOF echo i386-pc-xenix exit ;; i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos @@ -1370,23 +1409,25 @@ EOF x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; esac cat >&2 < in order to provide the needed -information to handle your system. +If $0 has already been updated, send the following data and any +information you think might be pertinent to config-patches@gnu.org to +provide the necessary information to handle your system. config.guess timestamp = $timestamp diff --git a/config.h.in b/config.h.in index 9e5ef88..a22235c 100644 --- a/config.h.in +++ b/config.h.in @@ -1,6 +1,6 @@ /* config.h.in. Generated from configure.ac by autoheader. */ -/* enabling atomic counter */ +/* have 64-bit atomic operation functions provided by gcc */ #undef ATOMIC_64BIT_OPERATIONS /* Define to 1 if the `closedir' function returns void instead of `int'. */ @@ -66,12 +66,6 @@ /* enable the presence plugin */ #undef ENABLE_PRESENCE -/* have 64-bit atomic bool compare and swap function provided by gcc */ -#undef HAVE_64BIT_ATOMIC_CAS_FUNC - -/* have 64-bit atomic operation functions provided by gcc */ -#undef HAVE_64BIT_ATOMIC_OP_FUNCS - /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_INET_H diff --git a/config.sub b/config.sub index 6467c95..7b334f9 100755 --- a/config.sub +++ b/config.sub @@ -1,8 +1,8 @@ #! /bin/sh # Configuration validation subroutine script. -# Copyright 1992-2015 Free Software Foundation, Inc. +# Copyright 1992-2016 Free Software Foundation, Inc. -timestamp='2015-01-01' +timestamp='2016-09-05' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ timestamp='2015-01-01' # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases @@ -53,8 +53,7 @@ timestamp='2015-01-01' me=`echo "$0" | sed -e 's,.*/,,'` usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. @@ -68,7 +67,7 @@ Report bugs and patches to ." version="\ GNU config.sub ($timestamp) -Copyright 1992-2015 Free Software Foundation, Inc. +Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -117,8 +116,8 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` @@ -255,11 +254,12 @@ case $basic_machine in | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ + | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ - | epiphany \ + | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ @@ -305,7 +305,7 @@ case $basic_machine in | riscv32 | riscv64 \ | rl78 | rx \ | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ @@ -376,12 +376,13 @@ case $basic_machine in | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ + | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ @@ -428,12 +429,13 @@ case $basic_machine in | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ + | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ @@ -518,6 +520,9 @@ case $basic_machine in basic_machine=i386-pc os=-aros ;; + asmjs) + basic_machine=asmjs-unknown + ;; aux) basic_machine=m68k-apple os=-aux @@ -638,6 +643,14 @@ case $basic_machine in basic_machine=m68k-bull os=-sysv3 ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + os=$os"spe" + ;; ebmon29k) basic_machine=a29k-amd os=-ebmon @@ -1017,7 +1030,7 @@ case $basic_machine in ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppcle | powerpclittle | ppc-le | powerpc-little) + ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) @@ -1027,7 +1040,7 @@ case $basic_machine in ;; ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) + ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) @@ -1373,18 +1386,18 @@ case $os in | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ @@ -1393,7 +1406,8 @@ case $os in | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) @@ -1525,6 +1539,8 @@ case $os in ;; -nacl*) ;; + -ios) + ;; -none) ;; *) diff --git a/configure b/configure index 96c003e..d22ceec 100755 --- a/configure +++ b/configure @@ -19324,17 +19324,16 @@ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h $as_echo "#define CPU_x86 /**/" >>confdefs.h - -$as_echo "#define ATOMIC_64BIT_OPERATIONS 1" >>confdefs.h - ;; x86_64-*-linux*) -$as_echo "#define CPU_x86_64 /**/" >>confdefs.h +$as_echo "#define CPU_x86_64 1" >>confdefs.h -$as_echo "#define ATOMIC_64BIT_OPERATIONS 1" >>confdefs.h - + # This turns on and off LFDS inside of libsds + # wibrown -- 2017-02-21 disabled temporarily + # with_atomic_queue="yes" + # AC_DEFINE([ATOMIC_QUEUE_OPERATIONS], [1], [enabling atomic queue operations]) ;; aarch64-*-linux*) @@ -19347,54 +19346,6 @@ $as_echo "#define CPU_arm /**/" >>confdefs.h ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC provided 64-bit atomic bool cas function ..." >&5 -$as_echo_n "checking for GCC provided 64-bit atomic bool cas function ...... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -long long ptrval = 0, val = 0, newval = 1; (void)__sync_bool_compare_and_swap_8(&ptrval, val, newval); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HAVE_64BIT_ATOMIC_CAS_FUNC 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC provided 64-bit atomic ops functions ..." >&5 -$as_echo_n "checking for GCC provided 64-bit atomic ops functions ...... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -long long ptrval = 0, val = 0; (void)__sync_add_and_fetch_8(&ptrval, val); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - -$as_echo "#define HAVE_64BIT_ATOMIC_OP_FUNCS 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext # some programs use the native thread library directly THREADLIB=-lpthread THREADLIB=$THREADLIB @@ -19469,9 +19420,6 @@ $as_echo "#define _HPUX_SOURCE 1" >>confdefs.h $as_echo "#define _INCLUDE_STDC__SOURCE_199901 1" >>confdefs.h - -$as_echo "#define ATOMIC_64BIT_OPERATIONS 1" >>confdefs.h - # assume 64 bit initconfigdir="/$PACKAGE_NAME/config" perlexec='/opt/perl_64/bin/perl' @@ -19535,9 +19483,6 @@ $as_echo "#define HAVE_GETPEERUCRED 1" >>confdefs.h ;; sparc-*-solaris*) -$as_echo "#define ATOMIC_64BIT_OPERATIONS 1" >>confdefs.h - - $as_echo "#define CPU_sparc /**/" >>confdefs.h TARGET='SPARC' @@ -19549,6 +19494,49 @@ $as_echo "#define CPU_sparc /**/" >>confdefs.h ;; esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC provided 64-bit atomic operations" >&5 +$as_echo_n "checking for GCC provided 64-bit atomic operations... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + +int +main () +{ + + uint64_t t_counter = 0; + uint64_t t_oldval = 0; + uint64_t t_newval = 1; + + __atomic_compare_exchange_8(&t_counter, &t_oldval, t_newval, 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); + __atomic_add_fetch_8(&t_counter, t_newval, __ATOMIC_SEQ_CST); + __atomic_sub_fetch_8(&t_counter, t_newval, __ATOMIC_SEQ_CST); + __atomic_load(&t_counter, &t_oldval, __ATOMIC_SEQ_CST); + return 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + +$as_echo "#define ATOMIC_64BIT_OPERATIONS 1" >>confdefs.h + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + # cmd line overrides default setting above if test -n "$with_initddir" ; then initdir="$with_initddir" diff --git a/ldap/servers/slapd/slapi_counter.c b/ldap/servers/slapd/slapi_counter.c index d0696eb..5ab5f32 100644 --- a/ldap/servers/slapd/slapi_counter.c +++ b/ldap/servers/slapd/slapi_counter.c @@ -200,49 +200,7 @@ uint64_t slapi_counter_set_value(Slapi_Counter *counter, uint64_t newvalue) } #ifndef HPUX -/* Use our own inline assembly for an atomic set if - * the builtins aren't available. */ -#if !HAVE_64BIT_ATOMIC_CAS_FUNC - /* - * %0 = counter->value - * %1 = newvalue - */ - __asm__ __volatile__( -#ifdef CPU_x86 - /* Save the PIC register */ - " pushl %%ebx;" -#endif /* CPU_x86 */ - /* Put value of counter->value in EDX:EAX */ - "retryset: movl %0, %%eax;" - " movl 4%0, %%edx;" - /* Put newval in ECX:EBX */ - " movl %1, %%ebx;" - " movl 4+%1, %%ecx;" - /* If EDX:EAX and counter-> are the same, - * replace *ptr with ECX:EBX */ - " lock; cmpxchg8b %0;" - " jnz retryset;" -#ifdef CPU_x86 - /* Restore the PIC register */ - " popl %%ebx" -#endif /* CPU_x86 */ - : "+o" (counter->value) - : "m" (newvalue) -#ifdef CPU_x86 - : "memory", "eax", "ecx", "edx", "cc"); -#else - : "memory", "eax", "ebx", "ecx", "edx", "cc"); -#endif - - return newvalue; -#else /* HAVE_64BIT_ATOMIC_CAS_FUNC */ - while (1) { - value = __atomic_load_8(&(counter->value), __ATOMIC_SEQ_CST); - if (__atomic_compare_exchange_8(&(counter->value), &value, newvalue, PR_FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)){ - return newvalue; - } - } -#endif + __atomic_store_8(&(counter->value), newvalue, __ATOMIC_SEQ_CST); #else /* HPUX */ do { value = counter->value; @@ -267,50 +225,7 @@ uint64_t slapi_counter_get_value(Slapi_Counter *counter) } #ifndef HPUX -/* Use our own inline assembly for an atomic get if - * the builtins aren't available. */ -#if !HAVE_64BIT_ATOMIC_CAS_FUNC - /* - * %0 = counter->value - * %1 = value - */ - __asm__ __volatile__( -#ifdef CPU_x86 - /* Save the PIC register */ - " pushl %%ebx;" -#endif /* CPU_x86 */ - /* Put value of counter->value in EDX:EAX */ - "retryget: movl %0, %%eax;" - " movl 4%0, %%edx;" - /* Copy EDX:EAX to ECX:EBX */ - " movl %%eax, %%ebx;" - " movl %%edx, %%ecx;" - /* If EDX:EAX and counter->value are the same, - * replace *ptr with ECX:EBX */ - " lock; cmpxchg8b %0;" - " jnz retryget;" - /* Put retrieved value into value */ - " movl %%ebx, %1;" - " movl %%ecx, 4%1;" -#ifdef CPU_x86 - /* Restore the PIC register */ - " popl %%ebx" -#endif /* CPU_x86 */ - : "+o" (counter->value), "=m" (value) - : -#ifdef CPU_x86 - : "memory", "eax", "ecx", "edx", "cc"); -#else - : "memory", "eax", "ebx", "ecx", "edx", "cc"); -#endif -#else /* HAVE_64BIT_ATOMIC_CAS_FUNC */ - while (1) { - value = __atomic_load_8(&(counter->value), __ATOMIC_SEQ_CST); - if (__atomic_compare_exchange_8(&(counter->value), &value, value, PR_FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST)){ - break; - } - } -#endif + value = __atomic_load_8(&(counter->value), __ATOMIC_SEQ_CST); #else /* HPUX */ do { value = counter->value; diff --git a/ldap/servers/slapd/slapi_counter_sunos_sparcv9.S b/ldap/servers/slapd/slapi_counter_sunos_sparcv9.S deleted file mode 100644 index e582c2a..0000000 --- a/ldap/servers/slapd/slapi_counter_sunos_sparcv9.S +++ /dev/null @@ -1,105 +0,0 @@ -! BEGIN COPYRIGHT BLOCK -! The Original Code is the Netscape Portable Runtime (NSPR). -! -! The Initial Developer of the Original Code is -! Netscape Communications Corporation. -! Portions created by the Initial Developer are Copyright (C) 1998-2000 -! the Initial Developer. All Rights Reserved. -! -! The original code has been modified to support 64-bit atomic increments by -! Red Hat, Inc. These portions are Copyright (C) 2008 Red Hat, Inc. All Rights -! reserved. -! -! License: GPL (version 3 or any later version). -! See LICENSE for details. -! END COPYRIGHT BLOCK -! - -#define _ASM 1 /* force to set an assembler code macro _ASM */ -#include - -! ====================================================================== -! -! Perform the sequence a = b atomically with respect to other -! fetch-and-stores to location a in a wait-free fashion. -! -! usage : old_val = PR_AtomicSet(address, newval) -! -! ----------------------- -! Note on REGISTER USAGE: -! as this is a LEAF procedure, a new stack frame is not created; -! we use the caller's stack frame so what would normally be %i (input) -! registers are actually %o (output registers). Also, we must not -! overwrite the contents of %l (local) registers as they are not -! assumed to be volatile during calls. -! ----------------------- - - ENTRY(_sparcv9_AtomicSet) ! standard assembler/ELF prologue - -retryAS: - ldx [%o0], %o2 ! set o2 to the current value - mov %o1, %o3 ! set up the new value - casx [%o0], %o2, %o3 ! atomically set if o0 hasn't changed - cmp %o2, %o3 ! see if we set the value - bne retryAS ! if not, try again - nop ! empty out the branch pipeline - retl ! return back to the caller - mov %o3, %o0 ! set the return code to the prev value - - SET_SIZE(_sparcv9_AtomicSet) ! standard assembler/ELF epilogue - -! -! end -! -! ====================================================================== -! -! Perform the sequence a = a + b atomically with respect to other -! fetch-and-adds to location a in a wait-free fashion. -! -! usage : newval = PR_AtomicAdd(address, val) -! return: the value after addition -! - ENTRY(_sparcv9_AtomicAdd) ! standard assembler/ELF prologue - -retryAA: - ldx [%o0], %o2 ! set o2 to the current value - addx %o2, %o1, %o3 ! calc the new value - mov %o3, %o4 ! save the return value - casx [%o0], %o2, %o3 ! atomically set if o0 hasn't changed - cmp %o2, %o3 ! see if we set the value - bne retryAA ! if not, try again - nop ! empty out the branch pipeline - retl ! return back to the caller - mov %o4, %o0 ! set the return code to the new value - - SET_SIZE(_sparcv9_AtomicAdd) ! standard assembler/ELF epilogue - -! -! end -! -! ====================================================================== -! -! Perform the sequence a = a - b atomically with respect to other -! fetch-and-subs to location a in a wait-free fashion. -! -! usage : newval = PR_AtomicSub(address, val) -! return: the value after addition -! - ENTRY(_sparcv9_AtomicSub) ! standard assembler/ELF prologue - -retryAU: - ldx [%o0], %o2 ! set o2 to the current value - subx %o2, %o1, %o3 ! calc the new value - mov %o3, %o4 ! save the return value - casx [%o0], %o2, %o3 ! atomically set if o0 hasn't changed - cmp %o2, %o3 ! see if we set the value - bne retryAU ! if not, try again - nop ! empty out the branch pipeline - retl ! return back to the caller - mov %o4, %o0 ! set the return code to the new value - - SET_SIZE(_sparcv9_AtomicSub) ! standard assembler/ELF epilogue - -! -! end -! diff --git a/test/libslapd/counters/atomic.c b/test/libslapd/counters/atomic.c new file mode 100644 index 0000000..72fad88 --- /dev/null +++ b/test/libslapd/counters/atomic.c @@ -0,0 +1,69 @@ +/** BEGIN COPYRIGHT BLOCK + * Copyright (C) 2017 Red Hat, Inc. + * All rights reserved. + * + * License: GPL (version 3 or any later version). + * See LICENSE for details. + * END COPYRIGHT BLOCK **/ + +#include "../../test_slapd.h" + +void +test_libslapd_counters_atomic_usage(void **state __attribute__((unused))) { + Slapi_Counter *tc = slapi_counter_new(); + + uint64_t value = 0; + /* Check that it starts as 0 */ + value = slapi_counter_get_value(tc); + assert_true(value == 0); + /* Increment */ + slapi_counter_increment(tc); + value = slapi_counter_get_value(tc); + assert_true(value == 1); + /* add */ + slapi_counter_add(tc, 100); + value = slapi_counter_get_value(tc); + assert_true(value == 101); + /* set */ + slapi_counter_set_value(tc, 200); + value = slapi_counter_get_value(tc); + assert_true(value == 200); + /* dec */ + slapi_counter_decrement(tc); + value = slapi_counter_get_value(tc); + assert_true(value == 199); + /* sub */ + slapi_counter_subtract(tc, 99); + value = slapi_counter_get_value(tc); + assert_true(value == 100); + /* init */ + slapi_counter_init(tc); + value = slapi_counter_get_value(tc); + assert_true(value == 0); + + + slapi_counter_destroy(&tc); + + /* We could attempt a more complex thread test later? */ + +} + +void +test_libslapd_counters_atomic_overflow(void **state __attribute__((unused))) { + Slapi_Counter *tc = slapi_counter_new(); + /* This is intmax ... */ + uint32_t value_32 = 0xFFFFFFFF; + uint64_t value = 0; + + slapi_counter_set_value(tc, (uint64_t)value_32); + value = slapi_counter_get_value(tc); + assert_true(value == (uint64_t)value_32); + + slapi_counter_increment(tc); + value = slapi_counter_get_value(tc); + assert_true(value != 0); + assert_true(value > (uint64_t)value_32); + + slapi_counter_destroy(&tc); +} +