#ifndef __MACSBUG_H__
#define __MACSBUG_H__
#include "gdb.h"
extern Gdb_Cmd_Class macsbug_class;
extern Gdb_Cmd_Class macsbug_internal_class;
extern Gdb_Cmd_Class macsbug_screen_class;
extern Gdb_Cmd_Class macsbug_testing_class;
extern Gdb_Cmd_Class macsbug_useful_class;
#define MACSBUG_COMMAND(command, help) \
gdb_define_cmd(#command, command, macsbug_class, help)
#define MACSBUG_INTERNAL_COMMAND(command, help) \
gdb_define_cmd(#command, command, macsbug_internal_class, help)
#define MACSBUG_SCREEN_COMMAND(command, help) \
gdb_define_cmd(#command, command, macsbug_screen_class, help)
#define MACSBUG_TESTING_COMMAND(command, help) \
gdb_define_cmd(#command, command, macsbug_testing_class, help)
#define MACSBUG_USEFUL_COMMAND(command, help) \
gdb_define_cmd(#command, command, macsbug_useful_class, help)
#define COMMAND_ALIAS(command, alias) gdb_define_cmd_alias(#command, #alias)
#define CHANGE_TO_MACSBUG_COMMAND(command) gdb_change_class(#command, macsbug_class)
#define safe_strcpy(dst, src) (src ? strcpy(dst, src) : NULL)
#define DEFAULT_HEXDUMP_WIDTH 16
#define DEFAULT_HEXDUMP_GROUP 4
extern void init_macsbug_utils(void);
extern char *format_disasm_line(FILE *f, char *src, void *data);
extern char *filter_char(int c, int isString, char *buffer);
extern void __asciidump(char *arg, int from_tty);
extern void __binary(char *arg, int from_tty);
extern void __disasm(char *arg, int from_tty);
extern void __hexdump(char *arg, int from_tty);
extern void __is_running(char *arg, int from_tty);
extern void __print_1(char *arg, int from_tty);
extern void __print_2(char *arg, int from_tty);
extern void __print_4(char *arg, int from_tty);
extern void __reset_current_function(char *arg, int from_tty);
extern void __window_size(char *arg, int from_tty);
extern char *default_help;
typedef struct {
GDB_ADDRESS addr;
GDB_ADDRESS pc;
short max_width;
short comm_max;
GDB_FILE *stream;
unsigned short flags;
#define FLAG_PC 0x0001
#define ALWAYS_SHOW_NAME 0x0002
#define NO_NEWLINE 0x0004
#define WRAP_TO_SIDEBAR 0x0008
#define DISASM_PC_AREA 0x0010
#define BRANCH_TAKEN 0x4000
#define BRANCH_NOT_TAKEN 0x8000
} DisasmData;
extern int branchTaken;
extern unsigned long update_env_values;
extern void init_macsbug_cmdline(void);
extern void init_macsbug_display(void);
extern void position_cursor_for_shell_input(void);
extern void refresh(char *arg, int from_tty);
extern void init_sidebar_and_pc_areas(void);
extern void macsbug_on(int resume);
extern void macsbug_off(int suspend);
extern void display_pc_area(void);
extern void restore_current_prompt(void);
extern void force_pc_area_update(void);
extern void fix_pc_area_if_necessary(GDB_ADDRESS address);
extern void rewrite_bottom_line(char *line, int err);
extern void __display_side_bar(char *arg, int from_tty);
extern void get_screen_size(int *max_rows, int *max_cols);
extern void save_stack(int max_rows);
extern void my_prompt_position_function(int continued);
extern void my_raw_input_handler(char *theRawLine);
extern void my_raw_input_prompt_setter(char *prompt);
extern void update_macsbug_prompt(void);
extern void forget_some_history(int n);
extern void define_macsbug_screen_positions(short pc_area_lines, short cmd_area_lines);
#define DEFAULT_PC_LINES 4
#define DEFAULT_CMD_LINES 2
#define DEFAULT_TAB_VALUE 8
#define DEFAULT_HISTORY_SIZE 4000
#define MIN_SIDEBAR (12+32)
#define MIN_PC_LINES 2
#define MAX_PC_LINES 15
#define MIN_CMD_LINES 2
#define MAX_CMD_LINES 15
#define MIN_SCREEN_COLS 80
#define MIN_SCREEN_ROWS MIN_SIDEBAR
#define CLEAR_LINE "\033[0K"
#define GOTO "\033[%d;%dH"
#define COLOR "\033[%dm"
#define COLOR_BLUE "\033[34m"
#define COLOR_RED "\033[31m"
#define COLOR_BOLD "\033[1m"
#define COLOR_OFF "\033[0m"
#define SAVE_CURSOR "\0337"
#define RESTORE_CURSOR "\0338"
#define ERASE_BELOW "\033[0J"
#define RESET "\033c\033\014\33[?7h"
#define CURSOR_UP "\033[%dA\n"
#define ESC '\033'
#define COLOR_CHANGE(x) ((x) ? COLOR_RED : COLOR_OFF)
#define Update_PC_and_SideBare_Areas() if (macsbug_screen) { \
__display_side_bar(NULL, 0); \
display_pc_area(); \
}
extern int target_arch;
#define DEFAULT_TARGET_ARCH "inferior's"
extern int macsbug_screen;
extern GDB_FILE *macsbug_screen_stdout;
extern GDB_FILE *macsbug_screen_stderr;
extern int max_rows, max_cols;
extern int continued_len;
extern int continued_count;
extern char *continued_line_starts[];
extern int continued_segment_len[];
extern char continued_line[1024];
extern int doing_set_prompt;
extern int need_CurApName;
extern int scroll_mode;
extern FILE *log_stream;
extern char *log_filename;
typedef enum {
NORMAL_REFRESH,
QUERY_REFRESH1,
QUERY_REFRESH2,
PROGRESS_REFRESH
} Special_Refresh_States;
extern Special_Refresh_States immediate_flush;
extern void run_command(char *arg, int from_tty);
extern void init_macsbug_patches(void);
extern int find_breakpt(GDB_ADDRESS address);
extern int control_level;
extern int reading_raw;
extern Gdb_Plugin gdb_printf_command;
extern int macsbug_generation;
extern void init_macsbug_set(void);
extern int ditto;
extern int unmangle;
extern int echo_commands;
extern int wrap_lines;
extern int tab_value;
extern int pc_area_lines;
extern int cmd_area_lines;
extern int max_history;
extern int show_so_si_src;
extern int dx_state;
extern int sidebar_state;
extern int show_selectors;
extern int comment_insns;
extern int hexdump_width;
extern int hexdump_group;
extern int force_arch;
extern int mb_testing;
typedef enum {
HISTORY_AREA,
PC_AREA,
SIDE_BAR,
CMD_AREA,
NO_AREA
} Screen_Area;
extern void screen_init(int top, int left, int bottom, int right);
extern void screen_close(void);
extern void screen_refresh(int full_refresh);
extern void screen_fflush(FILE *stream, Screen_Area area);
extern void screen_fputs(char *line, FILE *stream, Screen_Area area);
extern void screen_fprintf(FILE *stream, Screen_Area area, char *format, ...);
#define BUFSIZE 10000
#endif