From 43e05cd4f48b550023819d823fec02abf54e26d3 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Mon, 12 Apr 2021 18:33:45 +0930 Subject: [PATCH] ENABLE_CHECKING in bfd, opcodes, binutils, ld gas already has this. Here it enables checking hash table type passed to elf_link_hash_lookup and elf_link_hash_traverse. bfd/ * elf-bfd.h (ENABLE_CHECKING): Define. (elf_link_hash_lookup): Abort if wrong type of hash table. (elf_link_hash_traverse): Likewise. * configure.ac (--enable-checking): Add support. * config.in: Regenerate. * configure: Regenerate. binutils/ * configure.ac (--enable-checking): Add support. * config.in: Regenerate. * configure: Regenerate. ld/ * configure.ac (--enable-checking): Add support. * config.in: Regenerate. * configure: Regenerate. opcodes/ * configure.ac (--enable-checking): Add support. * config.in: Regenerate. * configure: Regenerate. --- bfd/ChangeLog | 8 ++++++++ bfd/config.in | 3 +++ bfd/configure | 22 ++++++++++++++++++++-- bfd/configure.ac | 13 +++++++++++++ bfd/elf-bfd.h | 8 ++++++++ binutils/ChangeLog | 6 ++++++ binutils/config.in | 3 +++ binutils/configure | 22 ++++++++++++++++++++-- binutils/configure.ac | 13 +++++++++++++ ld/ChangeLog | 6 ++++++ ld/config.in | 3 +++ ld/configure | 22 ++++++++++++++++++++-- ld/configure.ac | 13 +++++++++++++ opcodes/ChangeLog | 6 ++++++ opcodes/config.in | 3 +++ opcodes/configure | 22 ++++++++++++++++++++-- opcodes/configure.ac | 13 +++++++++++++ 17 files changed, 178 insertions(+), 8 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 84f16fc217..fa7e649c02 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2021-04-12 Alan Modra + + * elf-bfd.h (ENABLE_CHECKING): Define. + (elf_link_hash_lookup): Abort if wrong type of hash table. + * configure.ac (--enable-checking): Add support. + * config.in: Regenerate. + * configure: Regenerate. + 2021-04-12 Alan Modra * elf-bfd.h (is_elf_hash_table): Convert macro to inline function. diff --git a/bfd/config.in b/bfd/config.in index ba5ce68b33..6d46ea72a6 100644 --- a/bfd/config.in +++ b/bfd/config.in @@ -14,6 +14,9 @@ default. */ #undef DEFAULT_LD_Z_SEPARATE_CODE +/* Define if you want run-time sanity checks. */ +#undef ENABLE_CHECKING + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/bfd/configure b/bfd/configure index adddec128d..d98e330df8 100755 --- a/bfd/configure +++ b/bfd/configure @@ -826,6 +826,7 @@ with_gnu_ld enable_libtool_lock enable_plugins enable_largefile +enable_checking enable_64_bit_bfd enable_targets enable_64_bit_archive @@ -1484,6 +1485,7 @@ Optional Features: --disable-libtool-lock avoid locking (might break parallel builds) --enable-plugins Enable support for plugins --disable-largefile omit support for large files + --enable-checking enable run-time checks --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) --enable-targets alternative target configurations --enable-64-bit-archive force 64-bit archives @@ -11042,7 +11044,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11045 "configure" +#line 11047 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11148,7 +11150,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11151 "configure" +#line 11153 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11788,6 +11790,22 @@ else fi +ac_checking= +. ${srcdir}/development.sh +test "$development" = true && ac_checking=yes +# Check whether --enable-checking was given. +if test "${enable_checking+set}" = set; then : + enableval=$enable_checking; case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac +fi +if test x$ac_checking != x ; then + +$as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + +fi + # Check whether --enable-64-bit-bfd was given. if test "${enable_64_bit_bfd+set}" = set; then : enableval=$enable_64_bit_bfd; case "${enableval}" in diff --git a/bfd/configure.ac b/bfd/configure.ac index c016fd087a..07a75ed162 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -69,6 +69,19 @@ esac AM_CONDITIONAL(PLUGINS, test "$plugins" = "yes") +ac_checking= +. ${srcdir}/development.sh +test "$development" = true && ac_checking=yes +AC_ARG_ENABLE(checking, +[ --enable-checking enable run-time checks], +[case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac])dnl +if test x$ac_checking != x ; then + AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) +fi + AC_ARG_ENABLE(64-bit-bfd, [ --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes)], [case "${enableval}" in diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index e0b7e5759a..5a2f64233f 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -27,6 +27,10 @@ #include "elf/internal.h" #include "bfdlink.h" +#ifndef ENABLE_CHECKING +#define ENABLE_CHECKING 0 +#endif + #ifdef __cplusplus extern "C" { #endif @@ -721,6 +725,8 @@ static inline struct elf_link_hash_entry * elf_link_hash_lookup (struct elf_link_hash_table *table, const char *string, bool create, bool copy, bool follow) { + if (ENABLE_CHECKING && !is_elf_hash_table (&table->root)) + abort (); return (struct elf_link_hash_entry *) bfd_link_hash_lookup (&table->root, string, create, copy, follow); } @@ -732,6 +738,8 @@ elf_link_hash_traverse (struct elf_link_hash_table *table, bool (*f) (struct elf_link_hash_entry *, void *), void *info) { + if (ENABLE_CHECKING && !is_elf_hash_table (&table->root)) + abort (); bfd_link_hash_traverse (&table->root, (bool (*) (struct bfd_link_hash_entry *, void *)) f, info); diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 9e88373949..1dbb038fda 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2021-04-12 Alan Modra + + * configure.ac (--enable-checking): Add support. + * config.in: Regenerate. + * configure: Regenerate. + 2021-04-09 Alan Modra * objdump.c (struct objdump_disasm_info): Delete dynrelbuf and diff --git a/binutils/config.in b/binutils/config.in index 78b8a51905..cc6aad16dd 100644 --- a/binutils/config.in +++ b/binutils/config.in @@ -19,6 +19,9 @@ /* Should strings use -a behavior by default? */ #undef DEFAULT_STRINGS_ALL +/* Define if you want run-time sanity checks. */ +#undef ENABLE_CHECKING + /* Handle .ctf type-info sections */ #undef ENABLE_LIBCTF diff --git a/binutils/configure b/binutils/configure index 9958379660..938ef48369 100755 --- a/binutils/configure +++ b/binutils/configure @@ -817,6 +817,7 @@ with_gnu_ld enable_libtool_lock enable_plugins enable_largefile +enable_checking enable_targets enable_deterministic_archives enable_default_strings_all @@ -1481,6 +1482,7 @@ Optional Features: --disable-libtool-lock avoid locking (might break parallel builds) --enable-plugins Enable support for plugins --disable-largefile omit support for large files + --enable-checking enable run-time checks --enable-targets alternative target configurations --enable-deterministic-archives ar and ranlib default to -D behavior @@ -10872,7 +10874,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10875 "configure" +#line 10877 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10978,7 +10980,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10981 "configure" +#line 10983 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11583,6 +11585,22 @@ fi +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +# Check whether --enable-checking was given. +if test "${enable_checking+set}" = set; then : + enableval=$enable_checking; case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac +fi +if test x$ac_checking != x ; then + +$as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + +fi + # Check whether --enable-targets was given. if test "${enable_targets+set}" = set; then : enableval=$enable_targets; case "${enableval}" in diff --git a/binutils/configure.ac b/binutils/configure.ac index ad6d2aaefa..2553b809e6 100644 --- a/binutils/configure.ac +++ b/binutils/configure.ac @@ -33,6 +33,19 @@ AC_USE_SYSTEM_EXTENSIONS LT_INIT ACX_LARGEFILE +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +AC_ARG_ENABLE(checking, +[ --enable-checking enable run-time checks], +[case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac])dnl +if test x$ac_checking != x ; then + AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) +fi + AC_ARG_ENABLE(targets, [ --enable-targets alternative target configurations], [case "${enableval}" in diff --git a/ld/ChangeLog b/ld/ChangeLog index 244f286a0a..c862e8b13a 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2021-04-12 Alan Modra + + * configure.ac (--enable-checking): Add support. + * config.in: Regenerate. + * configure: Regenerate. + 2021-04-12 Alan Modra * emultempl/mipself.em (mips_create_output_section_statements): diff --git a/ld/config.in b/ld/config.in index 1e78b00f96..26d55a00d4 100644 --- a/ld/config.in +++ b/ld/config.in @@ -33,6 +33,9 @@ */ #undef DEFAULT_NEW_DTAGS +/* Define if you want run-time sanity checks. */ +#undef ENABLE_CHECKING + /* Handle .ctf type-info sections */ #undef ENABLE_LIBCTF diff --git a/ld/configure b/ld/configure index d46fcefebe..d8f8b2de18 100755 --- a/ld/configure +++ b/ld/configure @@ -824,6 +824,7 @@ with_gnu_ld enable_libtool_lock enable_plugins enable_largefile +enable_checking with_lib_path enable_targets enable_64_bit_bfd @@ -1494,6 +1495,7 @@ Optional Features: --disable-libtool-lock avoid locking (might break parallel builds) --enable-plugins Enable support for plugins --disable-largefile omit support for large files + --enable-checking enable run-time checks --enable-targets alternative target configurations --enable-64-bit-bfd 64-bit support (on hosts with narrower word sizes) --enable-gold[=ARG] build gold [ARG={default,yes,no}] @@ -11410,7 +11412,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11413 "configure" +#line 11415 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11516,7 +11518,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11519 "configure" +#line 11521 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -15127,6 +15129,22 @@ fi +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +# Check whether --enable-checking was given. +if test "${enable_checking+set}" = set; then : + enableval=$enable_checking; case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac +fi +if test x$ac_checking != x ; then + +$as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + +fi + # Check whether --with-lib-path was given. if test "${with_lib_path+set}" = set; then : diff --git a/ld/configure.ac b/ld/configure.ac index 5429f22ac2..8ea97c43cd 100644 --- a/ld/configure.ac +++ b/ld/configure.ac @@ -37,6 +37,19 @@ AC_PROG_INSTALL LT_INIT ACX_LARGEFILE +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +AC_ARG_ENABLE(checking, +[ --enable-checking enable run-time checks], +[case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac])dnl +if test x$ac_checking != x ; then + AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) +fi + AC_ARG_WITH(lib-path, [ --with-lib-path=dir1:dir2... set default LIB_PATH],LIB_PATH=$withval) AC_ARG_ENABLE(targets, [ --enable-targets alternative target configurations], diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index d2b54352d9..f63eb47974 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2021-04-12 Alan Modra + + * configure.ac (--enable-checking): Add support. + * config.in: Regenerate. + * configure: Regenerate. + 2021-04-09 Tejas Belagod * aarch64-tbl.h (struct aarch64_opcode aarch64_opcode_table): Reclassify diff --git a/opcodes/config.in b/opcodes/config.in index 9807dd75ca..392cda5d0d 100644 --- a/opcodes/config.in +++ b/opcodes/config.in @@ -7,6 +7,9 @@ #endif #define __CONFIG_H__ 1 +/* Define if you want run-time sanity checks. */ +#undef ENABLE_CHECKING + /* Define to 1 if translation of program messages to the user's native language is requested. */ #undef ENABLE_NLS diff --git a/opcodes/configure b/opcodes/configure index 8fcdb5b3a6..922a939125 100755 --- a/opcodes/configure +++ b/opcodes/configure @@ -799,6 +799,7 @@ with_pic enable_fast_install with_gnu_ld enable_libtool_lock +enable_checking enable_targets enable_werror enable_build_warnings @@ -1446,6 +1447,7 @@ Optional Features: --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) + --enable-checking enable run-time checks --enable-targets alternative target configurations --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings @@ -10806,7 +10808,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10809 "configure" +#line 10811 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10912,7 +10914,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10915 "configure" +#line 10917 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11150,6 +11152,22 @@ CC="$lt_save_CC" +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +# Check whether --enable-checking was given. +if test "${enable_checking+set}" = set; then : + enableval=$enable_checking; case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac +fi +if test x$ac_checking != x ; then + +$as_echo "#define ENABLE_CHECKING 1" >>confdefs.h + +fi + # Check whether --enable-targets was given. if test "${enable_targets+set}" = set; then : enableval=$enable_targets; case "${enableval}" in diff --git a/opcodes/configure.ac b/opcodes/configure.ac index 7cf0d2968b..911c9c6f08 100644 --- a/opcodes/configure.ac +++ b/opcodes/configure.ac @@ -40,6 +40,19 @@ AC_DISABLE_SHARED LT_INIT +ac_checking= +. ${srcdir}/../bfd/development.sh +test "$development" = true && ac_checking=yes +AC_ARG_ENABLE(checking, +[ --enable-checking enable run-time checks], +[case "${enableval}" in + no|none) ac_checking= ;; + *) ac_checking=yes ;; +esac])dnl +if test x$ac_checking != x ; then + AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) +fi + AC_ARG_ENABLE(targets, [ --enable-targets alternative target configurations], [case "${enableval}" in -- 2.34.1