38bcc89d48
The type of the function pointer PyOS_ReadlineFunctionPointer (part of the Python C API), which we use, slightly changed starting with Python 3.4. The signature went from PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, char *); to PyAPI_DATA(char) *(*PyOS_ReadlineFunctionPointer)(FILE *, FILE *, const char *); The parameter that changed is the prompt text. This commits adjust gdb accordingly by making the prompt_arg parameter const, as well as the fallouts of that. I needed to rework how annotations are added to the prompt, since the it is now const. If annotations are enabled, it will make a copy of the prompt overwrite the prompt variable that is used throughout the function. Otherwise, no copy is done and the original prompt_arg value is passed. I changed the signature of deprecated_readline_hook. I would've changed any user of it, but it seems like nothing is using it, Built-tested with python 2.7.x, 3.3.y and 3.4.z. gdb/ChangeLog: * defs.h (gdb_readline): Constify argument. (gdb_readline_wrapper): Same. (command_line_input): Same. (deprecated_readline_hook): Same. * top.c (deprecated_readline_hook): Same. (gdb_readline): Same. (gdb_readline_wrapper): Same. (command_line_input): Constify argument. Pass prompt to called functions instead of local_prompt, overwriting prompt if using annotations. * event-top.h (display_gdb_prompt): Constify argument. * event-top.c (display_gdb_prompt): Same. * python/py-gdb-readline.c (gdbpy_readline_wrapper): Constify argument if building with Python 3.4 and up. Signed-off-by: Simon Marchi <simon.marchi@ericsson.com>
79 lines
2.7 KiB
C
79 lines
2.7 KiB
C
/* Definitions used by event-top.c, for GDB, the GNU debugger.
|
|
|
|
Copyright (C) 1999-2014 Free Software Foundation, Inc.
|
|
|
|
Written by Elena Zannoni <ezannoni@cygnus.com> of Cygnus Solutions.
|
|
|
|
This file is part of GDB.
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef EVENT_TOP_H
|
|
#define EVENT_TOP_H
|
|
|
|
struct cmd_list_element;
|
|
|
|
/* Exported functions from event-top.c.
|
|
FIXME: these should really go into top.h. */
|
|
|
|
extern void display_gdb_prompt (const char *new_prompt);
|
|
void gdb_setup_readline (void);
|
|
void gdb_disable_readline (void);
|
|
extern void async_init_signals (void);
|
|
extern void set_async_editing_command (char *args, int from_tty,
|
|
struct cmd_list_element *c);
|
|
|
|
/* Signal to catch ^Z typed while reading a command: SIGTSTP or SIGCONT. */
|
|
#ifndef STOP_SIGNAL
|
|
#include <signal.h>
|
|
#ifdef SIGTSTP
|
|
#define STOP_SIGNAL SIGTSTP
|
|
extern void handle_stop_sig (int sig);
|
|
#endif
|
|
#endif
|
|
extern void handle_sigint (int sig);
|
|
extern void handle_sigterm (int sig);
|
|
extern void gdb_readline2 (void *client_data);
|
|
extern void async_request_quit (void *arg);
|
|
extern void stdin_event_handler (int error, void *client_data);
|
|
extern void async_disable_stdin (void);
|
|
extern void async_enable_stdin (void);
|
|
|
|
/* Exported variables from event-top.c.
|
|
FIXME: these should really go into top.h. */
|
|
|
|
extern int async_command_editing_p;
|
|
extern int exec_done_display_p;
|
|
extern char *async_annotation_suffix;
|
|
extern struct prompts the_prompts;
|
|
extern void (*call_readline) (void *);
|
|
extern void (*input_handler) (char *);
|
|
extern int input_fd;
|
|
extern void (*after_char_processing_hook) (void);
|
|
extern int call_stdin_event_handler_again_p;
|
|
|
|
/* Wrappers for rl_callback_handler_remove and
|
|
rl_callback_handler_install that keep track of whether the callback
|
|
handler is installed in readline. Do not call the readline
|
|
versions directly. */
|
|
extern void gdb_rl_callback_handler_remove (void);
|
|
extern void gdb_rl_callback_handler_install (const char *prompt);
|
|
|
|
/* Reinstall the readline callback handler (with no prompt), if not
|
|
currently installed. */
|
|
extern void gdb_rl_callback_handler_reinstall (void);
|
|
|
|
extern void cli_command_loop (void *);
|
|
|
|
#endif
|