From: Richard Levitte Date: Thu, 13 Dec 2018 00:42:46 +0000 (+0100) Subject: Adapt ENGINE_REF_COUNT_DEBUG to the new generic trace API X-Git-Tag: openssl-3.0.0-alpha1~2432 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=f518e3e802d8dcad283be6cb4913dd7cfc6f11fd Adapt ENGINE_REF_COUNT_DEBUG to the new generic trace API Co-authored-by: Dr. Matthias St. Pierre Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/8198) --- diff --git a/crypto/engine/eng_int.h b/crypto/engine/eng_int.h index 7bb1d73680..d45617567c 100644 --- a/crypto/engine/eng_int.h +++ b/crypto/engine/eng_int.h @@ -20,27 +20,20 @@ extern CRYPTO_RWLOCK *global_engine_lock; /* - * If we compile with this symbol defined, then both reference counts in the - * ENGINE structure will be monitored with a line of output on stderr for - * each change. This prints the engine's pointer address (truncated to - * unsigned int), "struct" or "funct" to indicate the reference type, the - * before and after reference count, and the file:line-number pair. The - * "engine_ref_debug" statements must come *after* the change. + * This prints the engine's pointer address (truncated to unsigned int), + * "struct" or "funct" to indicate the reference type, the before and after + * reference count, and the file:line-number pair. The "engine_ref_debug" + * statements must come *after* the change. */ -# ifdef ENGINE_REF_COUNT_DEBUG - -# define engine_ref_debug(e, isfunct, diff) \ - fprintf(stderr, "engine: %08x %s from %d to %d (%s:%d)\n", \ - (unsigned int)(e), (isfunct ? "funct" : "struct"), \ - ((isfunct) ? ((e)->funct_ref - (diff)) : ((e)->struct_ref - (diff))), \ - ((isfunct) ? (e)->funct_ref : (e)->struct_ref), \ - (OPENSSL_FILE), (OPENSSL_LINE)) - -# else - -# define engine_ref_debug(e, isfunct, diff) - -# endif +# define engine_ref_debug(e, isfunct, diff) \ + OSSL_TRACE6(ENGINE_REF_COUNT, \ + "engine: %p %s from %d to %d (%s:%d)\n", \ + (void *)(e), (isfunct ? "funct" : "struct"), \ + ((isfunct) \ + ? ((e)->funct_ref - (diff)) \ + : ((e)->struct_ref - (diff))), \ + ((isfunct) ? (e)->funct_ref : (e)->struct_ref), \ + (OPENSSL_FILE), (OPENSSL_LINE)) /* * Any code that will need cleanup operations should use these functions to diff --git a/crypto/trace.c b/crypto/trace.c index 38ef7ae232..8e1db68190 100644 --- a/crypto/trace.c +++ b/crypto/trace.c @@ -125,6 +125,7 @@ static const struct trace_category_st trace_categories[] = { TRACE_CATEGORY_(TLS_CIPHER), TRACE_CATEGORY_(ENGINE_CONF), TRACE_CATEGORY_(ENGINE_TABLE), + TRACE_CATEGORY_(ENGINE_REF_COUNT), }; const char *OSSL_trace_get_category_name(int num) diff --git a/include/openssl/trace.h b/include/openssl/trace.h index 4dd9bb4080..47da0d66a6 100644 --- a/include/openssl/trace.h +++ b/include/openssl/trace.h @@ -38,7 +38,8 @@ extern "C" { # define OSSL_TRACE_CATEGORY_TLS_CIPHER 3 # define OSSL_TRACE_CATEGORY_ENGINE_CONF 4 # define OSSL_TRACE_CATEGORY_ENGINE_TABLE 5 -# define OSSL_TRACE_CATEGORY_NUM 6 +# define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT 6 +# define OSSL_TRACE_CATEGORY_NUM 7 /* Returns the trace category number for the given |name| */ int OSSL_trace_get_category_num(const char *name);