From: Simon Marchi <simark@simark.ca>
To: Simon Marchi <simon.marchi@efficios.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH 1/4] gdb/selftest.m4: ensure $development is set
Date: Thu, 05 Mar 2020 19:42:00 -0000 [thread overview]
Message-ID: <f287f118-37d1-ddbc-eb24-055d8fe00112@simark.ca> (raw)
In-Reply-To: <20200305193011.25939-1-simon.marchi@efficios.com>
On 2020-03-05 2:30 p.m., Simon Marchi wrote:
> The GDB build in non-development mode (turn development to false in
> bfd/development.sh if you want to try) is currently broken:
>
> CXXLD gdb
> /home/smarchi/src/binutils-gdb/gdb/disasm-selftests.c:218: error: undefined reference to 'selftests::register_test_foreach_arch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void (*)(gdbarch*))'
> /home/smarchi/src/binutils-gdb/gdb/disasm-selftests.c:220: error: undefined reference to 'selftests::register_test_foreach_arch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void (*)(gdbarch*))'
> /home/smarchi/src/binutils-gdb/gdb/dwarf2/frame.c:2310: error: undefined reference to 'selftests::register_test_foreach_arch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void (*)(gdbarch*))'
> /home/smarchi/src/binutils-gdb/gdb/gdbarch-selftests.c:168: error: undefined reference to 'selftests::register_test_foreach_arch(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void (*)(gdbarch*))'
> /home/smarchi/src/binutils-gdb/gdbsupport/selftest.cc:96: error: undefined reference to 'selftests::reset()'
>
> This is because the gdbsupport configure script doesn't source
> bfd/development.sh to set the development variable. When $development
> is unset, GDB_AC_SELFTEST defaults to enabling selftests. I don't think
> the macro was written with this intention in mind, it just happens to be
> that way.
>
> So gdbsupport thinks selftests are enabled, while gdb thinks they are
> disabled. gdbsupport compiles in code that calls selftests:: functions,
> which are normally provided by gdb, but gdb doesn't provide them, hence
> the undefined references.
>
> Since the macro relies on the `development` variable, I propose to
> modify it such that it errors out if $development does not have an
> expected value of "true" or "false". This could prevent a future
> similar problem from happening while refactoring the configure scripts.
> This catches the current problem in the gdbsupport configure script,
> which is fixed by sourcing development.sh, as it's done in
> gdb/configure.ac and gdbserver/configure.ac.
>
> gdb/ChangeLog:
>
> * selftest.m4 (GDB_AC_SELFTEST): Error out if $development is
> not "true" or "false".
> * configure: Re-generate.
>
> gdbserver/ChangeLog:
>
> * configure: Re-generate.
>
> gdbsupport/ChangeLog:
>
> * configure.ac: Source bfd/development.sh.
> * configure: Re-generate.
Since I've pushed this other patch:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=3d1e5a43cbe1780ea66df0fe091998ee61177899
I've rebased this series and modified the commit message of patch 1/4, this is
the updated version.
From e9d5bf80c7d9fd27ea38ac82067e286d4b313184 Mon Sep 17 00:00:00 2001
From: Simon Marchi <simon.marchi@efficios.com>
Date: Thu, 5 Mar 2020 11:23:52 -0500
Subject: [PATCH] gdb/selftest.m4: ensure $development is set
Before commit 3d1e5a43cbe ("gdbsupport/configure.ac: source
development.sh"), the GDB build in non-development mode (turn
development to false in bfd/development.sh if you want to try) was
broken because the gdbsupport configure script didn't source
bfd/development.sh to set the development variable.
Since the GDB_AC_SELFTEST macro relies on the `development` variable, I
propose to modify it such that it errors out if $development does not
have an expected value of "true" or "false". This could prevent a
future similar problem from happening while refactoring the configure
scripts. It would have caught the problem fixed by the patch mentioned
earlier.
gdb/ChangeLog:
* selftest.m4 (GDB_AC_SELFTEST): Error out if $development is
not "true" or "false".
* configure: Re-generate.
gdbserver/ChangeLog:
* configure: Re-generate.
gdbsupport/ChangeLog:
* configure: Re-generate.
---
gdb/configure | 5 +++++
gdb/selftest.m4 | 4 ++++
gdbserver/configure | 5 +++++
gdbsupport/configure | 5 +++++
4 files changed, 19 insertions(+)
diff --git a/gdb/configure b/gdb/configure
index f99cbe40f11f..d885b94b8b52 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -19186,6 +19186,11 @@ $as_echo "#define GDB_DEFAULT_HOST_CHARSET \"UTF-8\"" >>confdefs.h
# The default value of this option changes depending whether we're on
# development mode (in which case it's "true") or not (in which case
# it's "false").
+
+if test "x$development" != xtrue && test "x$development" != xfalse; then :
+ as_fn_error $? "Invalid value for \$development, got \"$development\", expecting \"true\" or \"false\"." "$LINENO" 5
+fi
+
# Check whether --enable-unit-tests was given.
if test "${enable_unit_tests+set}" = set; then :
enableval=$enable_unit_tests; case "${enableval}" in
diff --git a/gdb/selftest.m4 b/gdb/selftest.m4
index 4969de1cada9..a88aa96171cb 100644
--- a/gdb/selftest.m4
+++ b/gdb/selftest.m4
@@ -27,6 +27,10 @@ AC_DEFUN([GDB_AC_SELFTEST],[
# The default value of this option changes depending whether we're on
# development mode (in which case it's "true") or not (in which case
# it's "false").
+
+AS_IF([test "x$development" != xtrue && test "x$development" != xfalse],
+ [AC_MSG_ERROR([Invalid value for \$development, got "$development", expecting "true" or "false".])])
+
AC_ARG_ENABLE(unit-tests,
AS_HELP_STRING([--enable-unit-tests],
[Enable the inclusion of unit tests when compiling GDB]),
diff --git a/gdbserver/configure b/gdbserver/configure
index be5719eb77aa..06b25ba2b6e0 100755
--- a/gdbserver/configure
+++ b/gdbserver/configure
@@ -6083,6 +6083,11 @@ fi
# The default value of this option changes depending whether we're on
# development mode (in which case it's "true") or not (in which case
# it's "false").
+
+if test "x$development" != xtrue && test "x$development" != xfalse; then :
+ as_fn_error $? "Invalid value for \$development, got \"$development\", expecting \"true\" or \"false\"." "$LINENO" 5
+fi
+
# Check whether --enable-unit-tests was given.
if test "${enable_unit_tests+set}" = set; then :
enableval=$enable_unit_tests; case "${enableval}" in
diff --git a/gdbsupport/configure b/gdbsupport/configure
index e7a99e3ddfba..10dbd7e6ee76 100755
--- a/gdbsupport/configure
+++ b/gdbsupport/configure
@@ -10606,6 +10606,11 @@ $as_echo "$bfd_cv_have_sys_procfs_type_elf_fpregset_t" >&6; }
# The default value of this option changes depending whether we're on
# development mode (in which case it's "true") or not (in which case
# it's "false").
+
+if test "x$development" != xtrue && test "x$development" != xfalse; then :
+ as_fn_error $? "Invalid value for \$development, got \"$development\", expecting \"true\" or \"false\"." "$LINENO" 5
+fi
+
# Check whether --enable-unit-tests was given.
if test "${enable_unit_tests+set}" = set; then :
enableval=$enable_unit_tests; case "${enableval}" in
--
2.25.1
next prev parent reply other threads:[~2020-03-05 19:42 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-05 19:30 Simon Marchi
2020-03-05 19:30 ` [PATCH 2/4] Move sourcing of development.sh to GDB_AC_COMMON Simon Marchi
2020-03-05 19:30 ` [PATCH 3/4] Don't include selftests objects in build when unit tests are disabled Simon Marchi
2020-03-05 19:30 ` [PATCH 4/4] Move gdb/selftest.m4 to gdbsupport/selftest.m4 Simon Marchi
2020-03-05 19:42 ` Simon Marchi [this message]
2020-03-12 18:07 ` [PATCH 1/4] gdb/selftest.m4: ensure $development is set Tom Tromey
2020-03-12 18:19 ` Simon Marchi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f287f118-37d1-ddbc-eb24-055d8fe00112@simark.ca \
--to=simark@simark.ca \
--cc=gdb-patches@sourceware.org \
--cc=simon.marchi@efficios.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox