Re: [PATCHSET] [4/4] Fix various issue in TUI

Eli Zaretskii
2015-01-17T09:55:13Z

> Date: Mon, 05 Jan 2015 22:06:07 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: gdb-patches@sourceware.org
>
> > Date: Mon, 05 Jan 2015 19:54:42 +0000
> > From: Pedro Alves <palves@redhat.com>
> >
> > On 12/31/2014 05:56 PM, Eli Zaretskii wrote:
> > > Well, one patch is Windows-specific after all. This patch makes sure
> > > windows-termcap is not compiled when GDB is linked against ncurses,
> >
> > ...
> >
> > > and also makes the file a no-op should it compile in that
> > > configuration.
> >
> > With the configure.ac change, how can that happen?
>
> It shouldn't.
>
> > > --- gdb/configure.ac~0 2014-10-29 21:45:50 +0200
> > > +++ gdb/configure.ac 2014-12-30 07:42:27 +0200
> > > @@ -627,9 +627,10 @@
> > > ac_cv_search_tgetent="none required"
> > > ;;
> > > *mingw32*)
> > > - ac_cv_search_tgetent="none required"
> > > - CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
> > > - ;;
> > > + if test x"$prefer_curses" = xyes; then
> > > + ac_cv_search_tgetent="none required"
> > > + CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
> >
> > I'm confused on the predicate here. How can we tell
> > from $prefer_curses that the curses library doesn't include
> > termcap? AFAICS, if the TUI is enabled, it'll always be
> > "yes". But isn't that the case where you _don't_
> > want windows-termcap.o? And shouldn't this be checking
> > $curses_found?
>
> Sorry, I sent the wrong patch here. It should be !=, of course.
>
> > > --- gdb/windows-termcap.c~0 2014-06-11 18:34:41 +0300
> > > +++ gdb/windows-termcap.c 2014-12-29 15:42:44 +0200
> > > @@ -19,6 +19,11 @@
> > > You should have received a copy of the GNU General Public License
> > > along with this program. If not, see <http://www.gnu.org/licenses/>. */
> > >
> > > +
> > > +#include "config.h"
> >
> > All files in gdb/ should start with "defs.h" instead.
>
> OK.

I just realized that I cannot push this changeset because Autoconf I
have installed isn't version 2.64, and so I cannot regenerate
'configure'. Could someone please do that for me? The patch is
below.

Or I could push the patch below, and then someone else could do the
generated files as a separate commit.

Thanks in advance.

Don't use windows-termcap.c when linking against a curses library

gdb/
2015-01-17 Eli Zaretskii <eliz@gnu.org>

* configure.ac [*mingw32*]: Only add windows-termcap.o to
CONFIG_OBS if not building with a curses library.

* windows-termcap.c: Include defs.h. Make the whole body empty if
either one of HAVE_CURSES_H or HAVE_NCURSES_H or
HAVE_NCURSES_NCURSES_H is defined.

diff --git a/gdb/configure.ac b/gdb/configure.ac
index 8dd7f8f..b852b93 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -611,9 +611,10 @@ case $host_os in
ac_cv_search_tgetent="none required"
;;
*mingw32*)
- ac_cv_search_tgetent="none required"
- CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
- ;;
+ if test x"$prefer_curses" != xyes; then
+ ac_cv_search_tgetent="none required"
+ CONFIG_OBS="$CONFIG_OBS windows-termcap.o"
+ fi ;;
esac

# These are the libraries checked by Readline.
diff --git a/gdb/windows-termcap.c b/gdb/windows-termcap.c
index 026c3d2..b366f65 100644
--- a/gdb/windows-termcap.c
+++ b/gdb/windows-termcap.c
@@ -19,6 +19,11 @@
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */

+
+#include "defs.h"
+
+#if !defined HAVE_CURSES_H && !defined HAVE_NCURSES_H && !defined HAVE_NCURSES_NCURSES_H
+
#include <stdlib.h>

/* -Wmissing-prototypes */
@@ -71,3 +76,5 @@
{
return NULL;
}
+
+#endif /* !HAVE_CURSES_H && !HAVE_NCURSES_H && !HAVE_NCURSES_NCURSES_H */
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index ac23875..832ce0b 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-17 Eli Zaretskii <eliz@gnu.org>
+
+ * strerror.c <sys_nerr, sys_errlist>: Declare only if they aren't
+ macros.
+
2014-12-24 Uros Bizjak <ubizjak@gmail.com>
Ben Elliston <bje@au.ibm.com>
Manuel Lopez-Ibanez <manu@gcc.gnu.org>
diff --git a/libiberty/strerror.c b/libiberty/strerror.c
index 0efadc3..a8a0bd1 100644
--- a/libiberty/strerror.c
+++ b/libiberty/strerror.c
@@ -469,8 +469,13 @@ struct error_info

#else

+
+#ifndef sys_nerr
extern int sys_nerr;
+#endif
+#ifndef sys_errlist
extern char *sys_errlist[];
+#endif

#endif