mirror of https://github.com/openssl/openssl
Make the use of mdebug backtrace a separate option
To force it on anyone using --strict-warnings was the wrong move, as this is an option best left to those who know what they're doing. Use with care! Reviewed-by: Andy Polyakov <appro@openssl.org>
This commit is contained in:
parent
dda71111b8
commit
ef8ca6bd54
28
Configure
28
Configure
|
@ -109,9 +109,9 @@ my $clang_devteam_warn = ""
|
||||||
. " -Wmissing-variable-declarations"
|
. " -Wmissing-variable-declarations"
|
||||||
;
|
;
|
||||||
|
|
||||||
# These are used in addition to $gcc_devteam_warn unless this is a mingw build.
|
# This adds backtrace information to the memory leak info. Is only used
|
||||||
# This adds backtrace information to the memory leak info.
|
# when crypto-mdebug-backtrace is enabled.
|
||||||
my $memleak_devteam_backtrace = "-rdynamic -DCRYPTO_MDEBUG_BACKTRACE";
|
my $memleak_devteam_backtrace = "-rdynamic";
|
||||||
|
|
||||||
my $strict_warnings = 0;
|
my $strict_warnings = 0;
|
||||||
|
|
||||||
|
@ -252,6 +252,7 @@ my @disablables = (
|
||||||
"cms",
|
"cms",
|
||||||
"comp",
|
"comp",
|
||||||
"crypto-mdebug",
|
"crypto-mdebug",
|
||||||
|
"crypto-mdebug-backtrace",
|
||||||
"ct",
|
"ct",
|
||||||
"deprecated",
|
"deprecated",
|
||||||
"des",
|
"des",
|
||||||
|
@ -377,6 +378,8 @@ my @disable_cascades = (
|
||||||
|
|
||||||
# SRP and HEARTBEATS require TLSEXT
|
# SRP and HEARTBEATS require TLSEXT
|
||||||
"tlsext" => [ "srp", "heartbeats" ],
|
"tlsext" => [ "srp", "heartbeats" ],
|
||||||
|
|
||||||
|
"crypto-mdebug" => [ "crypto-mdebug-backtrace" ],
|
||||||
);
|
);
|
||||||
|
|
||||||
# Avoid protocol support holes. Also disable all versions below N, if version
|
# Avoid protocol support holes. Also disable all versions below N, if version
|
||||||
|
@ -1162,16 +1165,17 @@ if ($strict_warnings)
|
||||||
$config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/)
|
$config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($target !~ /^mingw/)
|
}
|
||||||
|
|
||||||
|
unless ($disabled{"crypto-mdebug-backtrace"})
|
||||||
|
{
|
||||||
|
foreach my $wopt (split /\s+/, $memleak_devteam_backtrace)
|
||||||
{
|
{
|
||||||
foreach $wopt (split /\s+/, $memleak_devteam_backtrace)
|
$config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/)
|
||||||
{
|
}
|
||||||
$config{cflags} .= " $wopt" unless ($config{cflags} =~ /(^|\s)$wopt(\s|$)/)
|
if ($target =~ /^BSD-/)
|
||||||
}
|
{
|
||||||
if ($target =~ /^BSD-/)
|
$config{ex_libs} .= " -lexecinfo";
|
||||||
{
|
|
||||||
$config{ex_libs} .= " -lexecinfo";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,8 @@
|
||||||
#include <openssl/buffer.h>
|
#include <openssl/buffer.h>
|
||||||
#include <openssl/bio.h>
|
#include <openssl/bio.h>
|
||||||
#include <openssl/lhash.h>
|
#include <openssl/lhash.h>
|
||||||
#if defined(CRYPTO_MDEBUG_BACKTRACE) && defined(__GNUC__)
|
|
||||||
|
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||||
# include <execinfo.h>
|
# include <execinfo.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -171,7 +172,7 @@ struct mem_st {
|
||||||
unsigned long order;
|
unsigned long order;
|
||||||
time_t time;
|
time_t time;
|
||||||
APP_INFO *app_info;
|
APP_INFO *app_info;
|
||||||
#if defined(CRYPTO_MDEBUG_BACKTRACE) && defined(__GNUC__)
|
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||||
void *array[30];
|
void *array[30];
|
||||||
size_t array_siz;
|
size_t array_siz;
|
||||||
#endif
|
#endif
|
||||||
|
@ -445,7 +446,7 @@ void CRYPTO_mem_debug_malloc(void *addr, size_t num, int before_p,
|
||||||
m->order = order;
|
m->order = order;
|
||||||
}
|
}
|
||||||
m->order = order++;
|
m->order = order++;
|
||||||
# if defined(CRYPTO_MDEBUG_BACKTRACE) && defined(__GNUC__)
|
# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||||
m->array_siz = backtrace(m->array, OSSL_NELEM(m->array));
|
m->array_siz = backtrace(m->array, OSSL_NELEM(m->array));
|
||||||
# endif
|
# endif
|
||||||
m->time = time(NULL);
|
m->time = time(NULL);
|
||||||
|
@ -525,7 +526,7 @@ void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, size_t num,
|
||||||
if (mp != NULL) {
|
if (mp != NULL) {
|
||||||
mp->addr = addr2;
|
mp->addr = addr2;
|
||||||
mp->num = num;
|
mp->num = num;
|
||||||
#if defined(CRYPTO_MDEBUG_BACKTRACE) && defined(__GNUC__)
|
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||||
mp->array_siz = backtrace(mp->array, OSSL_NELEM(mp->array));
|
mp->array_siz = backtrace(mp->array, OSSL_NELEM(mp->array));
|
||||||
#endif
|
#endif
|
||||||
(void)lh_MEM_insert(mh, mp);
|
(void)lh_MEM_insert(mh, mp);
|
||||||
|
@ -618,7 +619,7 @@ static void print_leak(const MEM *m, MEM_LEAK *l)
|
||||||
while (amip && !CRYPTO_THREADID_cmp(&amip->threadid, &ti));
|
while (amip && !CRYPTO_THREADID_cmp(&amip->threadid, &ti));
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CRYPTO_MDEBUG_BACKTRACE) && defined(__GNUC__)
|
#ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
char **strings = backtrace_symbols(m->array, m->array_siz);
|
char **strings = backtrace_symbols(m->array, m->array_siz);
|
||||||
|
|
Loading…
Reference in New Issue