libctf, dedup: add new configure option --enable-libctf-hash-debugging
Add a new debugging configure option, --enable-libctf-hash-debugging, off by default, which lets you configure in expensive internal consistency checks and enable the printing of debugging output when LIBCTF_DEBUG=t before type deduplication has happened. In this commit we just add the option and cause it to turn ctf_assert into a real, hard assert for easier debugging. libctf/ * configure.ac: Add --enable-libctf-hash-debugging. * aclocal.m4: Pull in enable.m4, for GCC_ENABLE. * Makefile.in: Regenerated. * configure: Likewise. * config.h.in: Likewise. * ctf-impl.h [ENABLE_LIBCTF_HASH_DEBUGGING] (ctf_assert): Define to assert.
This commit is contained in:
parent
1f2e8b5b87
commit
a9b9870206
7 changed files with 65 additions and 2 deletions
|
@ -1,3 +1,13 @@
|
||||||
|
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
|
* configure.ac: Add --enable-libctf-hash-debugging.
|
||||||
|
* aclocal.m4: Pull in enable.m4, for GCC_ENABLE.
|
||||||
|
* Makefile.in: Regenerated.
|
||||||
|
* configure: Likewise.
|
||||||
|
* config.h.in: Likewise.
|
||||||
|
* ctf-impl.h [ENABLE_LIBCTF_HASH_DEBUGGING]
|
||||||
|
(ctf_assert): Define to assert.
|
||||||
|
|
||||||
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
* ctf-sha1.h: New, inline wrappers around sha1_init_ctx and
|
* ctf-sha1.h: New, inline wrappers around sha1_init_ctx and
|
||||||
|
|
|
@ -113,6 +113,7 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||||
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
|
am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \
|
||||||
$(top_srcdir)/../config/acx.m4 \
|
$(top_srcdir)/../config/acx.m4 \
|
||||||
$(top_srcdir)/../config/depstand.m4 \
|
$(top_srcdir)/../config/depstand.m4 \
|
||||||
|
$(top_srcdir)/../config/enable.m4 \
|
||||||
$(top_srcdir)/../config/gettext-sister.m4 \
|
$(top_srcdir)/../config/gettext-sister.m4 \
|
||||||
$(top_srcdir)/../config/lead-dot.m4 \
|
$(top_srcdir)/../config/lead-dot.m4 \
|
||||||
$(top_srcdir)/../config/override.m4 \
|
$(top_srcdir)/../config/override.m4 \
|
||||||
|
|
1
libctf/aclocal.m4
vendored
1
libctf/aclocal.m4
vendored
|
@ -1230,6 +1230,7 @@ AC_SUBST([am__untar])
|
||||||
m4_include([../bfd/acinclude.m4])
|
m4_include([../bfd/acinclude.m4])
|
||||||
m4_include([../config/acx.m4])
|
m4_include([../config/acx.m4])
|
||||||
m4_include([../config/depstand.m4])
|
m4_include([../config/depstand.m4])
|
||||||
|
m4_include([../config/enable.m4])
|
||||||
m4_include([../config/gettext-sister.m4])
|
m4_include([../config/gettext-sister.m4])
|
||||||
m4_include([../config/lead-dot.m4])
|
m4_include([../config/lead-dot.m4])
|
||||||
m4_include([../config/override.m4])
|
m4_include([../config/override.m4])
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
/* Define if building universal (internal helper macro) */
|
/* Define if building universal (internal helper macro) */
|
||||||
#undef AC_APPLE_UNIVERSAL_BUILD
|
#undef AC_APPLE_UNIVERSAL_BUILD
|
||||||
|
|
||||||
|
/* Enable expensive debugging of CTF deduplication type hashing */
|
||||||
|
#undef ENABLE_LIBCTF_HASH_DEBUGGING
|
||||||
|
|
||||||
/* Define to 1 if translation of program messages to the user's native
|
/* Define to 1 if translation of program messages to the user's native
|
||||||
language is requested. */
|
language is requested. */
|
||||||
#undef ENABLE_NLS
|
#undef ENABLE_NLS
|
||||||
|
|
41
libctf/configure
vendored
41
libctf/configure
vendored
|
@ -642,6 +642,8 @@ SHARED_LIBADD
|
||||||
SHARED_LDFLAGS
|
SHARED_LDFLAGS
|
||||||
NEED_CTF_QSORT_R_FALSE
|
NEED_CTF_QSORT_R_FALSE
|
||||||
NEED_CTF_QSORT_R_TRUE
|
NEED_CTF_QSORT_R_TRUE
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_FALSE
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_TRUE
|
||||||
zlibinc
|
zlibinc
|
||||||
zlibdir
|
zlibdir
|
||||||
ac_libctf_warn_cflags
|
ac_libctf_warn_cflags
|
||||||
|
@ -796,6 +798,7 @@ enable_werror_always
|
||||||
enable_maintainer_mode
|
enable_maintainer_mode
|
||||||
enable_install_libbfd
|
enable_install_libbfd
|
||||||
with_system_zlib
|
with_system_zlib
|
||||||
|
enable_libctf_hash_debugging
|
||||||
'
|
'
|
||||||
ac_precious_vars='build_alias
|
ac_precious_vars='build_alias
|
||||||
host_alias
|
host_alias
|
||||||
|
@ -1441,6 +1444,9 @@ Optional Features:
|
||||||
enable make rules and dependencies not useful (and
|
enable make rules and dependencies not useful (and
|
||||||
sometimes confusing) to the casual installer
|
sometimes confusing) to the casual installer
|
||||||
--enable-install-libbfd controls installation of libbfd and related headers
|
--enable-install-libbfd controls installation of libbfd and related headers
|
||||||
|
--enable-libctf-hash-debugging
|
||||||
|
Enable expensive debugging of CTF deduplication type
|
||||||
|
hashing [default=no]
|
||||||
|
|
||||||
Optional Packages:
|
Optional Packages:
|
||||||
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
||||||
|
@ -11513,7 +11519,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11516 "configure"
|
#line 11522 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
|
@ -11619,7 +11625,7 @@ else
|
||||||
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
|
||||||
lt_status=$lt_dlunknown
|
lt_status=$lt_dlunknown
|
||||||
cat > conftest.$ac_ext <<_LT_EOF
|
cat > conftest.$ac_ext <<_LT_EOF
|
||||||
#line 11622 "configure"
|
#line 11628 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#if HAVE_DLFCN_H
|
#if HAVE_DLFCN_H
|
||||||
|
@ -12799,6 +12805,33 @@ fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Check whether --enable-libctf-hash-debugging was given.
|
||||||
|
if test "${enable_libctf_hash_debugging+set}" = set; then :
|
||||||
|
enableval=$enable_libctf_hash_debugging;
|
||||||
|
case "$enableval" in
|
||||||
|
yes|no) ;;
|
||||||
|
*) as_fn_error $? "Argument to enable/disable libctf-hash-debugging must be yes or no" "$LINENO" 5 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
else
|
||||||
|
enable_libctf_hash_debugging=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if test "${enable_libctf_hash_debugging}" = yes; then
|
||||||
|
|
||||||
|
$as_echo "#define ENABLE_LIBCTF_HASH_DEBUGGING 1" >>confdefs.h
|
||||||
|
|
||||||
|
fi
|
||||||
|
if test "${enable_libctf_hash_debugging}" = yes; then
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_TRUE=
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_FALSE='#'
|
||||||
|
else
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_TRUE='#'
|
||||||
|
ENABLE_LIBCTF_HASH_DEBUGGING_FALSE=
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Similar to GDB_AC_CHECK_BFD.
|
# Similar to GDB_AC_CHECK_BFD.
|
||||||
OLD_CFLAGS=$CFLAGS
|
OLD_CFLAGS=$CFLAGS
|
||||||
OLD_LDFLAGS=$LDFLAGS
|
OLD_LDFLAGS=$LDFLAGS
|
||||||
|
@ -13495,6 +13528,10 @@ if test -z "${INSTALL_LIBBFD_TRUE}" && test -z "${INSTALL_LIBBFD_FALSE}"; then
|
||||||
as_fn_error $? "conditional \"INSTALL_LIBBFD\" was never defined.
|
as_fn_error $? "conditional \"INSTALL_LIBBFD\" was never defined.
|
||||||
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
fi
|
fi
|
||||||
|
if test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_TRUE}" && test -z "${ENABLE_LIBCTF_HASH_DEBUGGING_FALSE}"; then
|
||||||
|
as_fn_error $? "conditional \"ENABLE_LIBCTF_HASH_DEBUGGING\" was never defined.
|
||||||
|
Usually this means the macro was only invoked conditionally." "$LINENO" 5
|
||||||
|
fi
|
||||||
|
|
||||||
if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
|
if test -z "${NEED_CTF_QSORT_R_TRUE}" && test -z "${NEED_CTF_QSORT_R_FALSE}"; then
|
||||||
as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
|
as_fn_error $? "conditional \"NEED_CTF_QSORT_R\" was never defined.
|
||||||
|
|
|
@ -67,6 +67,12 @@ AC_FUNC_MMAP
|
||||||
AC_SEARCH_LIBS(dlopen, dl)
|
AC_SEARCH_LIBS(dlopen, dl)
|
||||||
AM_ZLIB
|
AM_ZLIB
|
||||||
|
|
||||||
|
GCC_ENABLE([libctf-hash-debugging], [no], [], [Enable expensive debugging of CTF deduplication type hashing])
|
||||||
|
if test "${enable_libctf_hash_debugging}" = yes; then
|
||||||
|
AC_DEFINE(ENABLE_LIBCTF_HASH_DEBUGGING, 1, [Enable expensive debugging of CTF deduplication type hashing])
|
||||||
|
fi
|
||||||
|
AM_CONDITIONAL(ENABLE_LIBCTF_HASH_DEBUGGING, test "${enable_libctf_hash_debugging}" = yes)
|
||||||
|
|
||||||
# Similar to GDB_AC_CHECK_BFD.
|
# Similar to GDB_AC_CHECK_BFD.
|
||||||
OLD_CFLAGS=$CFLAGS
|
OLD_CFLAGS=$CFLAGS
|
||||||
OLD_LDFLAGS=$LDFLAGS
|
OLD_LDFLAGS=$LDFLAGS
|
||||||
|
|
|
@ -71,9 +71,14 @@ extern "C"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (ENABLE_LIBCTF_HASH_DEBUGGING) && !defined (NDEBUG)
|
||||||
|
#include <assert.h>
|
||||||
|
#define ctf_assert(fp, expr) (assert (expr), 1)
|
||||||
|
#else
|
||||||
#define ctf_assert(fp, expr) \
|
#define ctf_assert(fp, expr) \
|
||||||
_libctf_unlikely_ (ctf_assert_internal (fp, __FILE__, __LINE__, \
|
_libctf_unlikely_ (ctf_assert_internal (fp, __FILE__, __LINE__, \
|
||||||
#expr, !!(expr)))
|
#expr, !!(expr)))
|
||||||
|
#endif
|
||||||
|
|
||||||
/* libctf in-memory state. */
|
/* libctf in-memory state. */
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue