ENABLE_CHECKING in bfd, opcodes, binutils, ld
authorAlan Modra <amodra@gmail.com>
Mon, 12 Apr 2021 09:03:45 +0000 (18:33 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 12 Apr 2021 15:05:44 +0000 (00:35 +0930)
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.

17 files changed:
bfd/ChangeLog
bfd/config.in
bfd/configure
bfd/configure.ac
bfd/elf-bfd.h
binutils/ChangeLog
binutils/config.in
binutils/configure
binutils/configure.ac
ld/ChangeLog
ld/config.in
ld/configure
ld/configure.ac
opcodes/ChangeLog
opcodes/config.in
opcodes/configure
opcodes/configure.ac

index 84f16fc21768d8f52a90016bf7cea3a957dceec9..fa7e649c022c2c123885b7b85dcebefaa8f04c3f 100644 (file)
@@ -1,3 +1,11 @@
+2021-04-12  Alan Modra  <amodra@gmail.com>
+
+       * 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  <amodra@gmail.com>
 
        * elf-bfd.h (is_elf_hash_table): Convert macro to inline function.
index ba5ce68b337729bb0c4808063c93b251cfc71171..6d46ea72a6c3a44a83cd386dc97db4522639466d 100644 (file)
@@ -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
index adddec128d81b29473eef619a3805e66ecdd2005..d98e330df8b4a4a5d703569d65c9bbc2a33d30ff 100755 (executable)
@@ -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
index c016fd087a49640e1202baf205a4ecd4f2b1da5f..07a75ed162639427d8a9243dd6ce509bdfbec90c 100644 (file)
@@ -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
index e0b7e5759ad5553385bfe2fc89aa82dc5475f156..5a2f64233f9c727facb5445e6c8f0afebe04c5de 100644 (file)
 #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);
index 9e8837394940936d4a5d0767573253429dbb18e1..1dbb038fda6f0328c24e7480ce286da91ec77019 100644 (file)
@@ -1,3 +1,9 @@
+2021-04-12  Alan Modra  <amodra@gmail.com>
+
+       * configure.ac (--enable-checking): Add support.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+
 2021-04-09  Alan Modra  <amodra@gmail.com>
 
        * objdump.c (struct objdump_disasm_info): Delete dynrelbuf and
index 78b8a51905ccdcb7648839431ca308967630af6f..cc6aad16dddb19169dab422927d69abecd285196 100644 (file)
@@ -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
 
index 995837966035c6d22641fd7b110a39c9e6fe9ca2..938ef4836989fcc5c2204165246e242a31caec03 100755 (executable)
@@ -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
 
 
 
+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
index ad6d2aaefad9c4b38d52bd3c3e6c58c392c4afb3..2553b809e6c1f26a1843d8ad3dd435af61587c2d 100644 (file)
@@ -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
index 244f286a0a3cd604d7f7d2f422bfeb455542aabc..c862e8b13aee70221f63d591104f63c6362c08dd 100644 (file)
@@ -1,3 +1,9 @@
+2021-04-12  Alan Modra  <amodra@gmail.com>
+
+       * configure.ac (--enable-checking): Add support.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+
 2021-04-12  Alan Modra  <amodra@gmail.com>
 
        * emultempl/mipself.em (mips_create_output_section_statements):
index 1e78b00f96abc5685cf72fdfb093834c4674317b..26d55a00d47b97d55046ec69711626ce48e2f6b3 100644 (file)
@@ -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
 
index d46fcefebe560fc661ffd7fb472705f60921825d..d8f8b2de18e5b8b8fbf71893b56f6b435a5229d7 100755 (executable)
@@ -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
 
 
 
+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 :
index 5429f22ac23e84def5bea4f49d7a4d7d99b6153e..8ea97c43cd42f670f2c24cc9a66807f41960243b 100644 (file)
@@ -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],
index d2b54352d98a2023638d5aa8595beb47e95e5744..f63eb4797496d717318b1fa6f62c244d5816594d 100644 (file)
@@ -1,3 +1,9 @@
+2021-04-12  Alan Modra  <amodra@gmail.com>
+
+       * configure.ac (--enable-checking): Add support.
+       * config.in: Regenerate.
+       * configure: Regenerate.
+
 2021-04-09  Tejas Belagod  <tejas.belagod@arm.com>
 
        * aarch64-tbl.h (struct aarch64_opcode aarch64_opcode_table): Reclassify
index 9807dd75ca6cc6bbed666fe6f572ee588737e021..392cda5d0d90ea1bade1690fd027cca94cd37ac7 100644 (file)
@@ -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
index 8fcdb5b3a655eaf8da5ad7a4f2911c7ad7aff1eb..922a939125b328e80de80725da74cdb9feddc0e3 100755 (executable)
@@ -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
index 7cf0d2968b2b6d43e70ec8730383d733bb49ff0f..911c9c6f0826dd1922807ce7e66724715063bbbd 100644 (file)
@@ -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