summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2021-04-12 18:33:45 +0930
committerAlan Modra <amodra@gmail.com>2021-04-13 00:35:44 +0930
commit43e05cd4f48b550023819d823fec02abf54e26d3 (patch)
tree8db8be01bef7bae060fcfef55b7d6d0843731274
parent04977957ecfc723bc4f57460e8e4eed7e6b69f32 (diff)
downloadbinutils-gdb-43e05cd4f48b550023819d823fec02abf54e26d3.tar.gz
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.
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/config.in3
-rwxr-xr-xbfd/configure22
-rw-r--r--bfd/configure.ac13
-rw-r--r--bfd/elf-bfd.h8
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/config.in3
-rwxr-xr-xbinutils/configure22
-rw-r--r--binutils/configure.ac13
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/config.in3
-rwxr-xr-xld/configure22
-rw-r--r--ld/configure.ac13
-rw-r--r--opcodes/ChangeLog6
-rw-r--r--opcodes/config.in3
-rwxr-xr-xopcodes/configure22
-rw-r--r--opcodes/configure.ac13
17 files changed, 178 insertions, 8 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 84f16fc2176..fa7e649c022 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,13 @@
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.
(elf_link_hash_lookup, elf_link_hash_traverse): Likewise.
(elf_hash_table, elf_hash_table_id): Likewise.
diff --git a/bfd/config.in b/bfd/config.in
index ba5ce68b337..6d46ea72a6c 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 adddec128d8..d98e330df8b 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 c016fd087a4..07a75ed1626 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 e0b7e5759ad..5a2f64233f9 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 9e883739494..1dbb038fda6 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -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
diff --git a/binutils/config.in b/binutils/config.in
index 78b8a51905c..cc6aad16ddd 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 99583796603..938ef483698 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 ad6d2aaefad..2553b809e6c 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 244f286a0a3..c862e8b13ae 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,5 +1,11 @@
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):
Pass base type of hash table to is_elf_hash_table.
* ldelf.c (ldelf_after_open): Likewise.
diff --git a/ld/config.in b/ld/config.in
index 1e78b00f96a..26d55a00d47 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 d46fcefebe5..d8f8b2de18e 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 5429f22ac23..8ea97c43cd4 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 d2b54352d98..f63eb479749 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -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
diff --git a/opcodes/config.in b/opcodes/config.in
index 9807dd75ca6..392cda5d0d9 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 8fcdb5b3a65..922a939125b 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 7cf0d2968b2..911c9c6f082 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