File 2821-otp-Remove-all-purify-support.patch of Package erlang

From 0fecce7e33c88b5b08f5bfa811e663395a7803ba Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Fri, 6 Nov 2020 15:52:15 +0100
Subject: [PATCH] otp: Remove all purify support

not used the last decade.

Build targets: purify, quantify and purecov.
---
 erts/doc/src/erlang.xml                       |  4 +-
 erts/emulator/Makefile.in                     | 50 ++---------------
 erts/emulator/beam/atom.names                 |  2 -
 erts/emulator/beam/dist.c                     | 16 +++---
 erts/emulator/beam/erl_alloc.c                |  2 +-
 erts/emulator/beam/erl_bif_info.c             | 56 +------------------
 erts/emulator/beam/erl_gc.c                   |  2 +-
 erts/emulator/beam/external.c                 |  4 +-
 erts/emulator/sys/unix/sys_drivers.c          |  6 --
 erts/emulator/test/mtx_SUITE.erl              |  3 +-
 erts/epmd/src/Makefile.in                     | 11 +---
 erts/etc/common/Makefile.in                   | 25 +++------
 erts/etc/unix/cerl.src                        | 18 ------
 erts/include/internal/ethread.h               |  2 +-
 erts/include/internal/i386/ethr_dw_atomic.h   |  2 +-
 erts/lib_src/Makefile.in                      | 18 ------
 erts/preloaded/src/erlang.erl                 |  2 +-
 erts/preloaded/src/init.erl                   |  4 --
 erts/test/utils/gccifier.c                    | 21 -------
 lib/erl_interface/src/Makefile                |  2 +-
 lib/erl_interface/src/Makefile.in             | 27 +--------
 .../test/all_SUITE_data/gccifier.c            | 21 -------
 lib/tools/c_src/Makefile.in                   | 18 ------
 lib/tools/c_src/erl_memory.c                  |  9 ---
 lib/tools/test/emem_SUITE.erl                 |  2 -
 make/run_make.mk                              |  2 +-
 26 files changed, 37 insertions(+), 292 deletions(-)

diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index 48a9762296..d72744e5b2 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -10107,8 +10107,8 @@ Metadata = #{ pid => pid(),
           <item>
             <p>Returns an atom describing the build type of the runtime
               system. This is normally the atom <c>opt</c> for optimized.
-              Other possible return values are <c>debug</c>, <c>purify</c>,
-              <c>quantify</c>, <c>purecov</c>, <c>gcov</c>, <c>valgrind</c>,
+              Other possible return values are <c>debug</c>,
+              <c>gcov</c>, <c>valgrind</c>,
               <c>gprof</c>, and <c>lcnt</c>. Possible return values
               can be added or removed at any time without prior notice.</p>
           </item>
diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
index 76415f3641..1b1975baea 100644
--- a/erts/emulator/Makefile.in
+++ b/erts/emulator/Makefile.in
@@ -1,4 +1,3 @@
-
 #
 # %CopyrightBegin%
 #
@@ -121,7 +120,6 @@ endif
 DIRTY_SCHEDULER_TEST=@DIRTY_SCHEDULER_TEST@
 
 ifeq ($(TYPE),debug)
-PURIFY =
 TYPEMARKER = .debug
 TYPE_FLAGS = $(DEBUG_CFLAGS) -DDEBUG
 ENABLE_ALLOC_TYPE_VARS += debug
@@ -131,29 +129,7 @@ LDFLAGS += -g
 endif
 else
 
-ifeq ($(TYPE),purify)
-PURIFY = purify $(PURIFY_BUILD_OPTIONS)
-TYPEMARKER = .purify
-TYPE_FLAGS = $(DEBUG_CFLAGS) -DPURIFY -DNO_JUMP_TABLE
-ENABLE_ALLOC_TYPE_VARS += purify
-else
-
-ifeq ($(TYPE),quantify)
-PURIFY = quantify $(QUANTIFY_BUILD_OPTIONS)
-TYPEMARKER = .quantify
-ENABLE_ALLOC_TYPE_VARS += quantify
-  TYPE_FLAGS = @CFLAGS@ -g -O2 -DQUANTIFY -DNO_JUMP_TABLE
-else
-
-ifeq ($(TYPE),purecov)
-PURIFY = purecov --follow-child-processes=yes $(PURECOV_BUILD_OPTIONS)
-TYPEMARKER = .purecov
-TYPE_FLAGS = $(DEBUG_CFLAGS) -DPURECOV -DNO_JUMP_TABLE
-ENABLE_ALLOC_TYPE_VARS += purecov
-else
-
 ifeq ($(TYPE),gcov)
-PURIFY = 
 TYPEMARKER = .gcov
 TYPE_FLAGS = $(DEBUG_CFLAGS) -DERTS_GCOV -DNO_JUMP_TABLE -fprofile-arcs -ftest-coverage -O0 -DERTS_CAN_INLINE=0 -DERTS_INLINE=
 ifneq ($(findstring solaris,$(TARGET)),solaris)
@@ -163,14 +139,12 @@ ENABLE_ALLOC_TYPE_VARS += debug
 else
 
 ifeq ($(TYPE),valgrind)
-PURIFY = 
 TYPEMARKER = .valgrind
 TYPE_FLAGS = $(DEBUG_CFLAGS) -DVALGRIND -DNO_JUMP_TABLE
 ENABLE_ALLOC_TYPE_VARS += valgrind
 else
 
 ifeq ($(TYPE),gprof)
-PURIFY = 
 TYPEMARKER = .gprof
 TYPE_FLAGS = @CFLAGS@ -DGPROF -pg -DERTS_CAN_INLINE=0 -DERTS_INLINE=
 LDFLAGS += -pg
@@ -179,28 +153,24 @@ NO_INLINE_FUNCTIONS=true
 else
 
 ifeq ($(TYPE),lcnt)
-PURIFY =
 TYPEMARKER = .lcnt
 TYPE_FLAGS = @CFLAGS@ -DERTS_ENABLE_LOCK_COUNT
 ENABLE_ALLOC_TYPE_VARS += lcnt
 else
 
 ifeq ($(TYPE),frmptr)
-PURIFY =
 OMIT_OMIT_FP=yes
 TYPEMARKER = .frmptr
 TYPE_FLAGS = @CFLAGS@ -DERTS_FRMPTR
 else
 
 ifeq ($(TYPE),icount)
-PURIFY =
 TYPEMARKER = .icount
 TYPE_FLAGS = @CFLAGS@ -DERTS_OPCODE_COUNTER_SUPPORT
 else
 
 # If type isn't one of the above, it *is* opt type...
 override TYPE=opt
-PURIFY =
 TYPEMARKER =
 TYPE_FLAGS = @CFLAGS@
 endif
@@ -210,9 +180,6 @@ endif
 endif
 endif
 endif
-endif
-endif
-endif
 
 LIBS += $(TYPE_LIBS)
 
@@ -356,19 +323,10 @@ RC=false
 endif
 endif
 
-
-ifdef PURIFY_CHILD_SETUP
-CS_PURIFY = $(PURIFY)
-CS_TYPE_FLAGS = $(TYPE_FLAGS)
-else
-CS_PURIFY = 
-CS_TYPE_FLAGS = $(subst QUANTIFY,FAKE_QUANTIFY, \
-		$(subst PURIFY,FAKE_PURIFY, $(TYPE_FLAGS)))
-endif
 ifeq ($(GCC),yes)
-CS_CFLAGS = $(CS_TYPE_FLAGS) $(GEN_OPT_FLGS) $(UNROLL_FLG) $(DEFS) $(WFLAGS)
+CS_CFLAGS = $(TYPE_FLAGS) $(GEN_OPT_FLGS) $(UNROLL_FLG) $(DEFS) $(WFLAGS)
 else
-CS_CFLAGS = $(CS_TYPE_FLAGS) $(DEFS) $(WFLAGS)
+CS_CFLAGS = $(TYPE_FLAGS) $(DEFS) $(WFLAGS)
 endif
 CS_LDFLAGS = $(LDFLAGS)
 CS_LIBS = -L../lib/internal/$(TARGET) -lerts_internal$(TYPEMARKER) @ERTS_INTERNAL_X_LIBS@ @SOCKET_LIBS@
@@ -917,7 +875,7 @@
 CS_OBJ = $(OBJDIR)/erl_child_setup.o $(OBJDIR)/sys_uds.o $(OBJDIR)/hash.o
 
 $(BINDIR)/$(CS_EXECUTABLE): $(TTF_DIR)/GENERATED $(PRELOAD_SRC) $(CS_OBJ) $(ERTS_LIB)
-	$(ld_verbose)$(CS_PURIFY) $(LD) $(CS_LDFLAGS) -o $(BINDIR)/$(CS_EXECUTABLE) \
+	$(ld_verbose) $(LD) $(CS_LDFLAGS) -o $(BINDIR)/$(CS_EXECUTABLE) \
                $(CS_CFLAGS) $(COMMON_INCLUDES) $(CS_OBJ) $(CS_LIBS)
 
 ifeq ($(GCC),yes)
@@ -1183,13 +1141,13 @@ $(OBJS): $(TTF_DIR)/GENERATED
 ifeq ($(TARGET), win32)
 # Only the basic erlang to begin with eh?
 $(BINDIR)/$(EMULATOR_EXECUTABLE): $(INIT_OBJS) $(OBJS) $(DEPLIBS)
-	$(ld_verbose)$(PURIFY) $(LD) -dll -def:sys/$(ERLANG_OSTYPE)/erl.def -implib:$(BINDIR)/erl_dll.lib -o $(BINDIR)/$(EMULATOR_EXECUTABLE) \
+	$(ld_verbose) $(LD) -dll -def:sys/$(ERLANG_OSTYPE)/erl.def -implib:$(BINDIR)/erl_dll.lib -o $(BINDIR)/$(EMULATOR_EXECUTABLE) \
 	$(LDFLAGS) $(DEXPORT) $(INIT_OBJS) $(OBJS) $(STATIC_NIF_LIBS) \
 	$(STATIC_DRIVER_LIBS) $(LIBS)
 
 else
 $(BINDIR)/$(EMULATOR_EXECUTABLE): $(INIT_OBJS) $(OBJS) $(DEPLIBS)
-	$(ld_verbose)$(PURIFY) $(LD) -o $@ \
+	$(ld_verbose) $(LD) -o $@ \
 	$(HIPEBEAMLDFLAGS) $(PROFILE_LDFLAGS) $(LDFLAGS) $(DEXPORT) $(INIT_OBJS) $(OBJS) \
 	$(STATIC_NIF_LIBS) $(STATIC_DRIVER_LIBS) $(LIBS)
 
diff --git a/erts/emulator/beam/atom.names b/erts/emulator/beam/atom.names
index 6efc166630..4234a05ff2 100644
--- a/erts/emulator/beam/atom.names
+++ b/erts/emulator/beam/atom.names
@@ -545,8 +545,6 @@ atom protected
 atom protection
 atom ptab_list_continue
 atom public
-atom purify
-atom quantify
 atom queue_size
 atom raw
 atom re
diff --git a/erts/emulator/beam/dist.c b/erts/emulator/beam/dist.c
index dc331c7fb0..a3ef41a21e 100644
--- a/erts/emulator/beam/dist.c
+++ b/erts/emulator/beam/dist.c
@@ -163,13 +163,11 @@ static char *erts_dop_to_string(enum dop dop) {
 #endif
 
 #if defined(VALGRIND)
-#include <valgrind/valgrind.h>
-#include <valgrind/memcheck.h>
-
-#  define PURIFY_MSG(msg)                                                    \
-    VALGRIND_PRINTF("%s, line %d: %s", __FILE__, __LINE__, msg)
+#  include <valgrind/valgrind.h>
+#  include <valgrind/memcheck.h>
+#  define VALGRIND_MSG(msg) VALGRIND_PRINTF("%s, line %d: %s", __FILE__, __LINE__, msg)
 #else
-#  define PURIFY_MSG(msg)
+#  define VALGRIND_MSG(msg)
 #endif
 
 int erts_is_alive; /* System must be blocked on change */
@@ -1874,7 +1872,7 @@ int erts_net_message(Port *prt,
             erts_fprintf(dbg_file, "DIST MSG DEBUG: erts_decode_dist_ext_size(CTL) failed:\n");
             bw(buf, orig_len);
 #endif
-            PURIFY_MSG("data error");
+            VALGRIND_MSG("data error");
             goto data_error;
         }
 
@@ -1962,7 +1960,7 @@ int erts_net_message(Port *prt,
 	erts_fprintf(dbg_file, "DIST MSG DEBUG: erts_decode_dist_ext(CTL) failed:\n");
 	bw(buf, orig_len);
 #endif
-	PURIFY_MSG("data error");
+	VALGRIND_MSG("data error");
 	goto decode_error;
     }
 
@@ -2747,7 +2745,7 @@ int erts_net_message(Port *prt,
 	erts_send_error_to_logger_nogl(dsbufp);
     }
 decode_error:
-    PURIFY_MSG("data error");
+    VALGRIND_MSG("data error");
     if (ede_hfrag == NULL) {
         erts_factory_close(&factory);
         if (ctl != ctl_default) {
diff --git a/erts/emulator/beam/erl_alloc.c b/erts/emulator/beam/erl_alloc.c
index 1e5a836b7c..192a3e76db 100644
--- a/erts/emulator/beam/erl_alloc.c
+++ b/erts/emulator/beam/erl_alloc.c
@@ -66,7 +66,7 @@
 
 #define ERTS_ALC_DEFAULT_MAX_THR_PREF ERTS_MAX_NO_OF_SCHEDULERS
 
-#if defined(SMALL_MEMORY) || defined(PURIFY) || defined(VALGRIND)
+#if defined(SMALL_MEMORY) || defined(VALGRIND)
 #define AU_ALLOC_DEFAULT_ENABLE(X)	0
 #else
 #define AU_ALLOC_DEFAULT_ENABLE(X)	(X)
diff --git a/erts/emulator/beam/erl_bif_info.c b/erts/emulator/beam/erl_bif_info.c
index 6e79156ab0..4a4c4f9278 100644
--- a/erts/emulator/beam/erl_bif_info.c
+++ b/erts/emulator/beam/erl_bif_info.c
@@ -122,9 +122,6 @@ static char erts_system_version[] = ("Erlang/OTP " ERLANG_OTP_RELEASE
 #ifdef ERTS_OPCODE_COUNTER_SUPPORT
 				     " [instruction-counting]"
 #endif
-#ifdef PURIFY
-				     " [purify-compiled]"
-#endif	
 #ifdef VALGRIND
 				     " [valgrind-compiled]"
 #endif
@@ -2183,44 +2180,22 @@ info_1_tuple(Process* BIF_P,	/* Pointer to current process. */
 	    goto badarg;
 	ERTS_BIF_PREP_TRAP1(ret, erts_format_cpu_topology_trap, BIF_P, res);
 	return ret;
-#if defined(PURIFY) || defined(VALGRIND)
+#if defined(VALGRIND)
     } else if (ERTS_IS_ATOM_STR("error_checker", sel)
-#if defined(PURIFY)
-	       || sel == am_purify
-#elif defined(VALGRIND)
-	       || ERTS_IS_ATOM_STR("valgrind", sel)
-#endif
-	) {
+	       || ERTS_IS_ATOM_STR("valgrind", sel)) {
 	if (*tp == am_memory) {
-#if defined(PURIFY)
-	    BIF_RET(erts_make_integer(purify_new_leaks(), BIF_P));
-#elif defined(VALGRIND)
 #  ifdef VALGRIND_DO_ADDED_LEAK_CHECK
 	    VALGRIND_DO_ADDED_LEAK_CHECK;
 #  else
 	    VALGRIND_DO_LEAK_CHECK;
 #  endif
 	    BIF_RET(make_small(0));
-#endif
 	} else if (*tp == am_fd) {
-#if defined(PURIFY)
-	    BIF_RET(erts_make_integer(purify_new_fds_inuse(), BIF_P));
-#elif defined(VALGRIND)
 	    /* Not present in valgrind... */
 	    BIF_RET(make_small(0));
-#endif
 	} else if (*tp == am_running) {
-#if defined(PURIFY)
-	    BIF_RET(purify_is_running() ? am_true : am_false);
-#elif defined(VALGRIND)
 	    BIF_RET(RUNNING_ON_VALGRIND ? am_true : am_false);
-#endif
 	} else if (is_list(*tp)) {
-#if defined(PURIFY)
-#  define ERTS_ERROR_CHECKER_PRINTF purify_printf
-#elif defined(VALGRIND)
-#  define ERTS_ERROR_CHECKER_PRINTF VALGRIND_PRINTF
-#endif
 	    ErlDrvSizeT buf_size = 8*1024; /* Try with 8KB first */
 	    char *buf = erts_alloc(ERTS_ALC_T_TMP, buf_size);
 	    ErlDrvSizeT r = erts_iolist_to_buf(*tp, (char*) buf, buf_size - 1);
@@ -2235,25 +2210,9 @@ info_1_tuple(Process* BIF_P,	/* Pointer to current process. */
 		ASSERT(r == buf_size - 1);
 	    }
 	    buf[buf_size - 1 - r] = '\0';
-            ERTS_ERROR_CHECKER_PRINTF("%s\n", buf);
+            VALGRIND_PRINTF("%s\n", buf);
 	    erts_free(ERTS_ALC_T_TMP, (void *) buf);
 	    BIF_RET(am_true);
-#undef ERTS_ERROR_CHECKER_PRINTF
-	}
-#endif
-#ifdef QUANTIFY
-    } else if (sel == am_quantify) {
-	if (*tp == am_clear) {
-	    quantify_clear_data();
-	    BIF_RET(am_true);
-	} else if (*tp == am_start) {
-	    quantify_start_recording_data();
-	    BIF_RET(am_true);
-	} else if (*tp == am_stop) {
-	    quantify_stop_recording_data();
-	    BIF_RET(am_true);
-	} else if (*tp == am_running) {
-	    BIF_RET(quantify_is_running() ? am_true : am_false);
 	}
 #endif
 #if defined(__GNUC__) && defined(HAVE_SOLARIS_SPARC_PERFMON)
@@ -2445,15 +2404,6 @@ BIF_RETTYPE system_info_1(BIF_ALIST_1)
 #if defined(DEBUG)
 	ERTS_DECL_AM(debug);
 	BIF_RET(AM_debug);
-#elif defined(PURIFY)
-	ERTS_DECL_AM(purify);
-	BIF_RET(AM_purify);
-#elif defined(QUANTIFY)
-	ERTS_DECL_AM(quantify);
-	BIF_RET(AM_quantify);
-#elif defined(PURECOV)
-	ERTS_DECL_AM(purecov);
-	BIF_RET(AM_purecov);
 #elif defined(ERTS_GCOV)
 	ERTS_DECL_AM(gcov);
 	BIF_RET(AM_gcov);
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index 42d35d39c3..a59f2c0f2e 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -2684,7 +2684,7 @@ shrink_new_heap(Process *p, Uint new_sz, Eterm *objv, int nobj)
 
         /*
          * Normally, we don't expect a shrunk heap to move, but you never
-         * know on some strange embedded systems...  Or when using purify.
+         * know on some strange embedded systems...
          */
 
         offset_heap(new_heap, heap_size, offs, area, area_size);
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c
index 0396e14ff8..c1158ea459 100644
--- a/erts/emulator/beam/external.c
+++ b/erts/emulator/beam/external.c
@@ -3385,9 +3385,7 @@ enc_term_int(TTBEncodeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj, byte* ep,
 		/* now the erts_snprintf which does the work */
 		i = sys_double_to_chars(f.fd, (char*) ep, (size_t)31);
 
-		/* Don't leave garbage after the float!  (Bad practice in general,
-		 * and Purify complains.)
-		 */
+		/* Don't leave garbage after the float */
 		sys_memset(ep+i, 0, 31-i);
 		ep += 31;
 	    }
diff --git a/erts/emulator/sys/unix/sys_drivers.c b/erts/emulator/sys/unix/sys_drivers.c
index e3f9a8073e..69f8458166 100644
--- a/erts/emulator/sys/unix/sys_drivers.c
+++ b/erts/emulator/sys/unix/sys_drivers.c
@@ -128,12 +128,6 @@ typedef struct driver_data {
 
 #if defined(DEBUG)
 #define ERL_BUILD_TYPE_MARKER ".debug"
-#elif defined(PURIFY)
-#define ERL_BUILD_TYPE_MARKER ".purify"
-#elif defined(QUANTIFY)
-#define ERL_BUILD_TYPE_MARKER ".quantify"
-#elif defined(PURECOV)
-#define ERL_BUILD_TYPE_MARKER ".purecov"
 #elif defined(VALGRIND)
 #define ERL_BUILD_TYPE_MARKER ".valgrind"
 #else /* opt */
diff --git a/erts/emulator/test/mtx_SUITE.erl b/erts/emulator/test/mtx_SUITE.erl
index 843e917dfc..24bbc70907 100644
--- a/erts/emulator/test/mtx_SUITE.erl
+++ b/erts/emulator/test/mtx_SUITE.erl
@@ -477,8 +477,7 @@ handicap() ->
         opt ->
             X0;
         ReallySlow when ReallySlow == debug;
-                        ReallySlow == valgrind;
-                        ReallySlow == purify ->
+                        ReallySlow == valgrind ->
             X0*3;
         _Slow ->
             X0*2
diff --git a/erts/epmd/src/Makefile.in b/erts/epmd/src/Makefile.in
index f9f65cec5e..7f38e3bdcb 100644
--- a/erts/epmd/src/Makefile.in
+++ b/erts/epmd/src/Makefile.in
@@ -20,23 +20,14 @@
 include $(ERL_TOP)/make/target.mk
 
 ifeq ($(TYPE),debug)
-PURIFY     =
 TYPEMARKER = .debug
 TYPE_FLAGS = -DDEBUG @DEBUG_FLAGS@
 else
 
-ifeq ($(TYPE),purify)
-PURIFY     = purify
-TYPEMARKER =
-TYPE_FLAGS = -O2 -DPURIFY
-else
-
 override TYPE = opt
-PURIFY     =
 TYPEMARKER =
 TYPE_FLAGS = -O2
 endif
-endif
 
 include $(ERL_TOP)/make/$(TARGET)/otp.mk
 include ../../vsn.mk
@@ -116,7 +107,7 @@ clean:
 #
 
 $(BINDIR)/$(EPMD): $(EPMD_OBJS) $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(EPMD_OBJS) $(LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(EPMD_OBJS) $(LIBS)
 
 $(OBJDIR)/%.o: %.c epmd.h epmd_int.h
 	$(V_CC) $(CFLAGS) $(EPMD_FLAGS) -o $@ -c $<
diff --git a/erts/etc/common/Makefile.in b/erts/etc/common/Makefile.in
index 4e7b708f46..ba4d898f79 100644
--- a/erts/etc/common/Makefile.in
+++ b/erts/etc/common/Makefile.in
@@ -26,24 +26,15 @@ ERTS_LIB_TYPEMARKER=.$(TYPE)
 USING_VC=@MIXED_VC@
 
 ifeq ($(TYPE),debug)
-PURIFY =
 TYPEMARKER = .debug
 TYPE_FLAGS = -DDEBUG @DEBUG_FLAGS@
 else
 
-ifeq ($(TYPE),purify)
-PURIFY = purify
-TYPEMARKER =
-TYPE_FLAGS = -g -O2 -DPURIFY
-else
-
 override TYPE=opt
-PURIFY =
 TYPEMARKER =
 ERTS_LIB_TYPEMARKER=
 TYPE_FLAGS =
 endif
-endif
 
 include $(ERL_TOP)/make/$(TARGET)/otp.mk
 include ../../vsn.mk
@@ -411,14 +402,14 @@ $(OBJDIR)/heart.o: heart.c $(RC_GENERATED)
 #	$(V_CC) $(CFLAGS) -o $@ -c $<
 #
 #$(BINDIR)/%: $(OBJDIR)/%.o
-#	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $< $(LIBS)
+#	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $< $(LIBS)
 
 $(OBJDIR)/inet_gethost.o: inet_gethost.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) -o $@ -c inet_gethost.c
 
 # inet_gethost
 $(BINDIR)/inet_gethost@EXEEXT@: $(OBJDIR)/inet_gethost.o $(ENTRY_OBJ) $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) $(ENTRY_LDFLAGS) -o $@ $(OBJDIR)/inet_gethost.o $(ENTRY_OBJ) $(LIBS) $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) $(ENTRY_LDFLAGS) -o $@ $(OBJDIR)/inet_gethost.o $(ENTRY_OBJ) $(LIBS) $(ERTS_INTERNAL_LIBS)
 
 # run_erl
 $(BINDIR)/run_erl: $(OBJDIR)/safe_string.o $(OBJDIR)/run_erl.o
@@ -446,38 +437,38 @@ $(BINDIR)/erl_call@EXEEXT@: $(ERL_TOP)/lib/erl_interface/bin/$(TARGET)/erl_call@
 
 ifneq ($(TARGET),win32)
 $(BINDIR)/$(ERLEXEC): $(OBJDIR)/$(ERLEXEC).o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/$(ERLEXEC).o $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/$(ERLEXEC).o $(ERTS_INTERNAL_LIBS)
 
 $(OBJDIR)/$(ERLEXEC).o: $(ERLEXECDIR)/$(ERLEXEC).c $(RC_GENERATED)
 	$(V_CC) -I$(EMUDIR) $(CFLAGS) -o $@ -c $(ERLEXECDIR)/$(ERLEXEC).c
 endif
 
 $(BINDIR)/erlc@EXEEXT@: $(OBJDIR)/erlc.o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/erlc.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS) $(EI_LIB)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/erlc.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS) $(EI_LIB)
 
 $(OBJDIR)/erlc.o: erlc.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) $(THR_DEFS) $(EI_INCL) $(MT_FLAG) -o $@ -c erlc.c
 
 $(BINDIR)/dialyzer@EXEEXT@: $(OBJDIR)/dialyzer.o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/dialyzer.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/dialyzer.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
 
 $(OBJDIR)/dialyzer.o: dialyzer.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) -o $@ -c dialyzer.c
 
 $(BINDIR)/typer@EXEEXT@: $(OBJDIR)/typer.o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/typer.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/typer.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
 
 $(OBJDIR)/typer.o: typer.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) -o $@ -c typer.c
 
 $(BINDIR)/escript@EXEEXT@: $(OBJDIR)/escript.o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/escript.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/escript.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
 
 $(OBJDIR)/escript.o: escript.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) -o $@ -c escript.c
 
 $(BINDIR)/ct_run@EXEEXT@: $(OBJDIR)/ct_run.o $(ERTS_LIB)
-	$(ld_verbose)$(PURIFY) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/ct_run.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
+	$(ld_verbose) $(LD) $(LDFLAGS) -o $@ $(OBJDIR)/ct_run.o -L$(OBJDIR) $(LIBS) $(ERTS_INTERNAL_LIBS)
 
 $(OBJDIR)/ct_run.o: ct_run.c $(RC_GENERATED)
 	$(V_CC) $(CFLAGS) -o $@ -c ct_run.c
diff --git a/erts/etc/unix/cerl.src b/erts/etc/unix/cerl.src
index 3e5087c0d8..575ef80e88 100644
--- a/erts/etc/unix/cerl.src
+++ b/erts/etc/unix/cerl.src
@@ -38,9 +38,6 @@
 #   -break F    Run the debug compiled emulator in emacs and gdb and set break.
 #               The session is started, i.e. "run" is already don for you.
 #   -xxgdb      FIXME currently disabled
-#   -purify     Run emulator compiled for purify
-#   -quantify   Run emulator compiled for quantify
-#   -purecov    Run emulator compiled for purecov
 #   -gcov       Run emulator compiled for gcov
 #   -valgrind   Run emulator compiled for valgrind
 #   -lcnt	Run emulator compiled for lock counting
@@ -194,21 +191,6 @@ while [ $# -gt 0 ]; do
 #	    shift
 #	    GDB=xxgdb
 #	    ;;
-	"-purify")
-	    shift
-	    cargs="$cargs -purify"
-	    TYPE=.purify
-	    ;;
-	"-quantify")
-	    shift
-	    cargs="$cargs -quantify"
-	    TYPE=.quantify
-	    ;;
-	"-purecov")
-	    shift
-	    cargs="$cargs -purecov"
-	    TYPE=.purecov
-	    ;;
 	"-gcov")
 	    shift
 	    cargs="$cargs -gcov"
diff --git a/erts/include/internal/ethread.h b/erts/include/internal/ethread.h
index e5a692090a..83c66f381d 100644
--- a/erts/include/internal/ethread.h
+++ b/erts/include/internal/ethread.h
@@ -131,7 +131,7 @@ typedef pthread_key_t ethr_tsd_key;
 
 #define ETHR_HAVE_ETHR_SIG_FUNCS 1
 
-#if defined(PURIFY) || defined(VALGRIND)
+#if defined(VALGRIND)
 #  define ETHR_FORCE_PTHREAD_RWLOCK
 #  define ETHR_FORCE_PTHREAD_MUTEX
 #endif
diff --git a/erts/include/internal/i386/ethr_dw_atomic.h b/erts/include/internal/i386/ethr_dw_atomic.h
index 8e037be578..e3dbc82518 100644
--- a/erts/include/internal/i386/ethr_dw_atomic.h
+++ b/erts/include/internal/i386/ethr_dw_atomic.h
@@ -137,7 +137,7 @@ ethr_native_dw_atomic_addr(ethr_native_dw_atomic_t *var)
 #if ETHR_NO_CLOBBER_EBX__ && !defined(ETHR_CMPXCHG8B_REGISTER_SHORTAGE)
 /* When no optimization is on, we'll run into a register shortage */
 #  if defined(ETHR_DEBUG) || defined(DEBUG) || defined(VALGRIND) \
-      || defined(GCOV) || defined(PURIFY) || defined(PURECOV)
+      || defined(GCOV)
 #    define ETHR_CMPXCHG8B_REGISTER_SHORTAGE 1
 #  else
 #    define ETHR_CMPXCHG8B_REGISTER_SHORTAGE 0
diff --git a/erts/lib_src/Makefile.in b/erts/lib_src/Makefile.in
index bb43d51d97..45ff7639d4 100644
--- a/erts/lib_src/Makefile.in
+++ b/erts/lib_src/Makefile.in
@@ -56,21 +56,6 @@ PRE_LD=
 
 else
 
-ifeq ($(TYPE),purify)
-CFLAGS=@DEBUG_CFLAGS@ -DPURIFY
-TYPE_SUFFIX=.purify
-PRE_LD=purify $(PURIFY_BUILD_OPTIONS)
-else
-ifeq ($(TYPE),quantify)
-CFLAGS += -DQUANTIFY
-TYPE_SUFFIX=.quantify
-PRE_LD=quantify $(QUANTIFY_BUILD_OPTIONS)
-else
-ifeq ($(TYPE),purecov)
-CFLAGS=@DEBUG_CFLAGS@ -DPURECOV
-TYPE_SUFFIX=.purecov
-PRE_LD=purecov $(PURECOV_BUILD_OPTIONS)
-else
 ifeq ($(TYPE),gcov)
 CFLAGS=@DEBUG_CFLAGS@ -DGCOV -fprofile-arcs -ftest-coverage -O0
 TYPE_SUFFIX=.gcov
@@ -114,9 +99,6 @@ endif
 endif
 endif
 endif
-endif
-endif
-endif
 
 OPSYS=@OPSYS@
 sol2CFLAGS=
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl
index 313c9d34e1..0c1db03248 100644
--- a/erts/preloaded/src/erlang.erl
+++ b/erts/preloaded/src/erlang.erl
@@ -2730,7 +2730,7 @@ tuple_to_list(_Tuple) ->
       Alloc :: atom();
          (atom_count) -> pos_integer();
          (atom_limit) -> pos_integer();
-         (build_type) -> opt | debug | purify | quantify | purecov |
+         (build_type) -> opt | debug |
                          gcov | valgrind | gprof | lcnt | frmptr;
          (c_compiler_used) -> {atom(), term()};
          (check_io) -> [_];
diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl
index e39c13b63d..6aa73587fe 100644
--- a/erts/preloaded/src/init.erl
+++ b/erts/preloaded/src/init.erl
@@ -824,10 +824,6 @@ do_boot(Init,Flags,Start) ->
 	     vars=BootVars},
     eval_script(BootList, Es),
 
-    %% To help identifying Purify windows that pop up,
-    %% print the node name into the Purify log.
-    (catch erlang:system_info({purify, "Node: " ++ atom_to_list(node())})),
-
     start_em(Start),
     case b2a(get_flag(profile_boot,Flags,false)) of
         false -> ok;
diff --git a/erts/test/utils/gccifier.c b/erts/test/utils/gccifier.c
index 0c3ef915fb..df7329f408 100644
--- a/erts/test/utils/gccifier.c
+++ b/erts/test/utils/gccifier.c
@@ -138,9 +138,6 @@ main(int argc, char *argv[])
     char *cc = NULL;
     args_t args = {0};
     int is_debug = 0;
-    int is_purify = 0;
-    int is_quantify = 0;
-    int is_purecov = 0;
 #ifdef __WIN32__
     int is_shared = 0;
     stdlib_t stdlib = STDLIB_NONE;
@@ -191,18 +188,6 @@ main(int argc, char *argv[])
 		}
 	    }
 	}
-	else if (strcmp("-DPURIFY", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_purify = 1;
-	}
-	else if (strcmp("-DQUANTIFY", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_quantify = 1;
-	}
-	else if (strcmp("-DPURECOV", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_purecov = 1;
-	}
 #ifdef __WIN32__
 	else if (strcmp("-g", arg) == 0) {
 	    goto set_debug;
@@ -246,12 +231,6 @@ main(int argc, char *argv[])
 	    CHECK_FIRST_LINK_ARG;
 	    if (is_debug && strcmp("ethread", arg) == 0)
 		arg = "ethread.debug";
-	    else if (is_purify && strcmp("ethread", arg) == 0)
-		arg = "ethread.purify";
-	    else if (is_quantify && strcmp("ethread", arg) == 0)
-		arg = "ethread.quantify";
-	    else if (is_purecov && strcmp("ethread", arg) == 0)
-		arg = "ethread.purecov";
 #ifdef __WIN32__
 	    else if (strcmp("socket", arg) == 0)
 		arg = "ws2_32";
diff --git a/lib/erl_interface/src/Makefile b/lib/erl_interface/src/Makefile
index dab0cee8a4..6b5e2c1e61 100644
--- a/lib/erl_interface/src/Makefile
+++ b/lib/erl_interface/src/Makefile
@@ -26,7 +26,7 @@
 include $(ERL_TOP)/make/output.mk
 include $(ERL_TOP)/make/target.mk
 
-debug opt shared purify quantify purecov gcov:
+debug opt shared gcov:
 ifndef TERTIARY_BOOTSTRAP
 	$(make_verbose)$(MAKE) -f $(TARGET)/Makefile TYPE=$@
 endif
diff --git a/lib/erl_interface/src/Makefile.in b/lib/erl_interface/src/Makefile.in
index 7ff3f09abb..de82f4ad51 100644
--- a/lib/erl_interface/src/Makefile.in
+++ b/lib/erl_interface/src/Makefile.in
@@ -66,44 +66,23 @@ LDFLAGS = @LDFLAGS@
 LIBS = @LIBS@
 
 ifeq ($(TYPE),debug)
-PURIFY =
 TYPEMARKER = .debug
 TYPE_FLAGS = -g -DDEBUG
 ifeq ($(TARGET),win32)
 LDFLAGS += -g
 endif
 else
-ifeq ($(TYPE),purify)
-PURIFY = purify
-TYPEMARKER = .purify
-TYPE_FLAGS = -DPURIFY -DNO_JUMP_TABLE
-else
-ifeq ($(TYPE),quantify)
-PURIFY = quantify
-TYPEMARKER = .quantify
-TYPE_FLAGS = -g -O2 -DQUANTIFY
-else
-ifeq ($(TYPE),purecov)
-PURIFY = purecov --follow-child-processes=yes
-TYPEMARKER = .purecov
-TYPE_FLAGS = -g -DPURECOV -DNO_JUMP_TABLE
-else
 ifeq ($(TYPE),gcov)
-PURIFY =
 TYPEMARKER =
 TYPE_FLAGS = -DNO_JUMP_TABLE -fprofile-arcs -ftest-coverage
 ifeq ($(TARGET),linux)
 LIBS += -lgcov
 endif
 else
-PURIFY =
 TYPEMARKER =
 TYPE_FLAGS =
 endif
 endif
-endif
-endif
-endif
 
 CC = @CC@
 LD = @LD@
@@ -566,16 +545,16 @@ endif
 
 ifeq ($(TARGET),win32)
 $(ERL_CALL): $(ERLCALL) ../include/ei.h $(MD_EILIB)
-	$(ld_verbose)$(PURIFY) $(CC) -MD $(PROG_CFLAGS) $(THR_DEFS) -o $@ $(ERLCALL) \
+	$(ld_verbose) $(CC) -MD $(PROG_CFLAGS) $(THR_DEFS) -o $@ $(ERLCALL) \
 		-L$(OBJDIR) -lei_md $(THR_LIBS) $(LIBS) -lsocket
 else
 ifdef THR_DEFS
 $(ERL_CALL): $(ERLCALL) ../include/ei.h $(MT_EILIB)
-	$(ld_verbose)$(PURIFY) $(CC) $(PROG_CFLAGS) $(THR_DEFS) $(LDFLAGS) -o $@ $(ERLCALL) \
+	$(ld_verbose) $(CC) $(PROG_CFLAGS) $(THR_DEFS) $(LDFLAGS) -o $@ $(ERLCALL) \
 		-L$(OBJDIR) -lei $(THR_LIBS) $(LIBS)
 else
 $(ERL_CALL): $(ERLCALL) ../include/ei.h $(ST_EILIB)
-	$(ld_verbose)$(PURIFY) $(CC) $(PROG_CFLAGS) $(LDFLAGS) -o $@ $(ERLCALL) \
+	$(ld_verbose) $(CC) $(PROG_CFLAGS) $(LDFLAGS) -o $@ $(ERLCALL) \
 		-L$(OBJDIR) -lei $(LIBS)
 endif
 endif
diff --git a/lib/erl_interface/test/all_SUITE_data/gccifier.c b/lib/erl_interface/test/all_SUITE_data/gccifier.c
index 0c3ef915fb..df7329f408 100644
--- a/lib/erl_interface/test/all_SUITE_data/gccifier.c
+++ b/lib/erl_interface/test/all_SUITE_data/gccifier.c
@@ -138,9 +138,6 @@ main(int argc, char *argv[])
     char *cc = NULL;
     args_t args = {0};
     int is_debug = 0;
-    int is_purify = 0;
-    int is_quantify = 0;
-    int is_purecov = 0;
 #ifdef __WIN32__
     int is_shared = 0;
     stdlib_t stdlib = STDLIB_NONE;
@@ -191,18 +188,6 @@ main(int argc, char *argv[])
 		}
 	    }
 	}
-	else if (strcmp("-DPURIFY", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_purify = 1;
-	}
-	else if (strcmp("-DQUANTIFY", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_quantify = 1;
-	}
-	else if (strcmp("-DPURECOV", arg) == 0) {
-	    save_arg(&args, arg, NULL);
-	    is_purecov = 1;
-	}
 #ifdef __WIN32__
 	else if (strcmp("-g", arg) == 0) {
 	    goto set_debug;
@@ -246,12 +231,6 @@ main(int argc, char *argv[])
 	    CHECK_FIRST_LINK_ARG;
 	    if (is_debug && strcmp("ethread", arg) == 0)
 		arg = "ethread.debug";
-	    else if (is_purify && strcmp("ethread", arg) == 0)
-		arg = "ethread.purify";
-	    else if (is_quantify && strcmp("ethread", arg) == 0)
-		arg = "ethread.quantify";
-	    else if (is_purecov && strcmp("ethread", arg) == 0)
-		arg = "ethread.purecov";
 #ifdef __WIN32__
 	    else if (strcmp("socket", arg) == 0)
 		arg = "ws2_32";
diff --git a/lib/tools/c_src/Makefile.in b/lib/tools/c_src/Makefile.in
index 8e13571786..878aa2cde6 100644
--- a/lib/tools/c_src/Makefile.in
+++ b/lib/tools/c_src/Makefile.in
@@ -43,29 +43,11 @@ ifeq ($(TARGET),win32)
 LDFLAGS += -g
 endif
 else
-ifeq ($(TYPE),purify)
-CFLAGS = @CFLAGS@ -DPURIFY
-TYPEMARKER=.purify
-PRE_LD = purify $(PURIFY_BUILD_OPTIONS)
-else
-ifeq ($(TYPE),quantify)
-CFLAGS = @CFLAGS@ -DQUANTIFY
-TYPEMARKER=.quantify
-PRE_LD = quantify $(QUANTIFY_BUILD_OPTIONS)
-else
-ifeq ($(TYPE),purecov)
-CFLAGS = @DEBUG_CFLAGS@ -DPURECOV
-TYPEMARKER=.purecov
-PRE_LD = purecov $(PURECOV_BUILD_OPTIONS)
-else
 override TYPE=opt
 CFLAGS = @CFLAGS@
 PRE_LD =
 TYPEMARKER =
 endif
-endif
-endif
-endif
 
 ifeq ($(findstring -D_GNU_SOURCE,$(CFLAGS)),)
 THR_DEFS = $(ETHR_DEFS)
diff --git a/lib/tools/c_src/erl_memory.c b/lib/tools/c_src/erl_memory.c
index d52203c7cd..2726d7b81e 100644
--- a/lib/tools/c_src/erl_memory.c
+++ b/lib/tools/c_src/erl_memory.c
@@ -2790,15 +2790,6 @@ main(int argc, char *argv[])
 #ifdef DEBUG
     print_string(state, "> [debug]\n");
 #endif
-#ifdef PURIFY
-    print_string(state, "> [purify]\n");
-#endif
-#ifdef QUANTIFY
-    print_string(state, "> [quantify]\n");
-#endif
-#ifdef PURECOV
-    print_string(state, "> [purecov]\n");
-#endif
 
     res = init_connection(state);
     if (res != 0)
diff --git a/lib/tools/test/emem_SUITE.erl b/lib/tools/test/emem_SUITE.erl
index 6dca7f6739..fd8ee875dd 100644
--- a/lib/tools/test/emem_SUITE.erl
+++ b/lib/tools/test/emem_SUITE.erl
@@ -117,8 +117,6 @@ init_per_suite(Config) when is_list(Config) ->
 		     case check_dir(filename:join([BinDir, Target])) of
 			 not_found -> ok;
 			 TDir ->
-			     check_emem(TDir, purecov),
-			     check_emem(TDir, purify),
 			     check_emem(TDir, debug),
 			     check_emem(TDir, opt)
 		     end,
diff --git a/make/run_make.mk b/make/run_make.mk
index 2c001b7cf9..d66339d28e 100644
--- a/make/run_make.mk
+++ b/make/run_make.mk
@@ -31,7 +31,7 @@ include $(ERL_TOP)/make/target.mk
 
 .PHONY: valgrind
 
-opt debug purify quantify purecov valgrind gcov gprof lcnt frmptr icount:
+opt debug valgrind gcov gprof lcnt frmptr icount:
 	$(make_verbose)$(MAKE) -f $(TARGET)/Makefile TYPE=$@
 
 plain smp frag smp_frag:
-- 
2.26.2

openSUSE Build Service is sponsored by