This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix tui compilation with Solaris libcurses: non-const last arg to mvwaddstr (PR tui/21482)


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7a6e7fcc77997bf7679cce4f1cfebcd57ba8af70

commit 7a6e7fcc77997bf7679cce4f1cfebcd57ba8af70
Author: Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Date:   Fri May 19 14:16:55 2017 +0200

    Fix tui compilation with Solaris libcurses: non-const last arg to mvwaddstr (PR tui/21482)
    
    On both mainline and the 8.0 branch, gdb compilation fails on Solaris 10
    with the native libcurses in gdb/tui for several instances of the same problem:
    
    /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c: In function `void tui_erase_source_content(tui_win_info*, int)':
    /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:257:18: error: invalid conversion from `const char*' to `char*' [-fpermissive]
            no_src_str);
                      ^
    In file included from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/gdb_curses.h:42:0,
                     from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-data.h:26,
                     from /vol/src/gnu/gdb/gdb-8.0-branch/local/gdb/tui/tui-winsource.c:33:
    /vol/gcc-7/lib/gcc/sparc-sun-solaris2.10/7.1.0/include-fixed/curses.h:699:12: note:   initializing argument 4 of `int mvwaddstr(WINDOW*, int, int, char*)'
     extern int mvwaddstr(WINDOW *, int, int, char *);
                ^~~~~~~~~
    make[2]: *** [Makefile:1927: tui-winsource.o] Error 1
    
    Unlike ncurses, <curses.h> declares
    
    extern int mvwaddstr(WINDOW *, int, int, char *);
    
    i.e. the last arg is char *, not const char *.
    
    The patch fixes this by casting the last arg to mvwaddstr to char *,
    as was recently done on mainline in a newterm() call (the only
    difference between 8.0 and mainline gdb/tui).
    
    	* tui/tui-windata.c (tui_erase_data_content): Cast last mvwaddstr
    	arg to char *.
    	* tui/tui-wingeneral.c (box_win): Likewise.
    	* tui/tui-winsource.c (tui_erase_source_content): Likewise.
    	(tui_show_source_line): Likewise.
    	(tui_show_exec_info_content): Likewise.

Diff:
---
 gdb/ChangeLog            | 9 +++++++++
 gdb/tui/tui-windata.c    | 2 +-
 gdb/tui/tui-wingeneral.c | 2 +-
 gdb/tui/tui-winsource.c  | 7 ++++---
 4 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1273ed8..6bffa90 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2017-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+	* tui/tui-windata.c (tui_erase_data_content): Cast last mvwaddstr
+	arg to char *.
+	* tui/tui-wingeneral.c (box_win): Likewise.
+	* tui/tui-winsource.c (tui_erase_source_content): Likewise.
+	(tui_show_source_line): Likewise.
+	(tui_show_exec_info_content): Likewise.
+
 2017-05-19  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>
 
 	* sparc-tdep.c (sparc_structure_return_p)
diff --git a/gdb/tui/tui-windata.c b/gdb/tui/tui-windata.c
index 8e7d55c..e7571e6 100644
--- a/gdb/tui/tui-windata.c
+++ b/gdb/tui/tui-windata.c
@@ -117,7 +117,7 @@ tui_erase_data_content (const char *prompt)
       mvwaddstr (TUI_DATA_WIN->generic.handle,
 		 (TUI_DATA_WIN->generic.height / 2),
 		 x_pos,
-		 prompt);
+		 (char *) prompt);
     }
   wrefresh (TUI_DATA_WIN->generic.handle);
 }
diff --git a/gdb/tui/tui-wingeneral.c b/gdb/tui/tui-wingeneral.c
index 16b466d..5dd2c01 100644
--- a/gdb/tui/tui-wingeneral.c
+++ b/gdb/tui/tui-wingeneral.c
@@ -101,7 +101,7 @@ box_win (struct tui_gen_win_info *win_info,
       box (win, tui_border_vline, tui_border_hline);
 #endif
       if (win_info->title)
-        mvwaddstr (win, 0, 3, win_info->title);
+        mvwaddstr (win, 0, 3, (char *) win_info->title);
       wattroff (win, attrs);
     }
 }
diff --git a/gdb/tui/tui-winsource.c b/gdb/tui/tui-winsource.c
index 73ad93f..3ae9c71 100644
--- a/gdb/tui/tui-winsource.c
+++ b/gdb/tui/tui-winsource.c
@@ -254,7 +254,7 @@ tui_erase_source_content (struct tui_win_info *win_info,
 	  mvwaddstr (win_info->generic.handle,
 		     (win_info->generic.height / 2),
 		     x_pos,
-		     no_src_str);
+		     (char *) no_src_str);
 
 	  /* elz: Added this function call to set the real contents of
 	     the window to what is on the screen, so that later calls
@@ -280,7 +280,7 @@ tui_show_source_line (struct tui_win_info *win_info, int lineno)
     wattron (win_info->generic.handle, A_STANDOUT);
 
   mvwaddstr (win_info->generic.handle, lineno, 1,
-             line->which_element.source.line);
+             (char *) line->which_element.source.line);
   if (line->which_element.source.is_exec_point)
     wattroff (win_info->generic.handle, A_STANDOUT);
 
@@ -565,7 +565,8 @@ tui_show_exec_info_content (struct tui_win_info *win_info)
     mvwaddstr (exec_info->handle,
 	       cur_line,
 	       0,
-	       exec_info->content[cur_line - 1]->which_element.simple_string);
+	       (char *) exec_info->content[cur_line - 1]
+			  ->which_element.simple_string);
   tui_refresh_win (exec_info);
   exec_info->content_in_use = TRUE;
 }


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]