198944Sobrien#!/bin/sh 298944Sobrien 398944Sobrien# User Interface Events. 4130803Smarcel# Copyright 1999, 2000, 2001, 2002, 2004 Free Software Foundation, Inc. 598944Sobrien# 698944Sobrien# Contributed by Cygnus Solutions. 798944Sobrien# 898944Sobrien# This file is part of GDB. 998944Sobrien# 1098944Sobrien# This program is free software; you can redistribute it and/or modify 1198944Sobrien# it under the terms of the GNU General Public License as published by 1298944Sobrien# the Free Software Foundation; either version 2 of the License, or 1398944Sobrien# (at your option) any later version. 1498944Sobrien# 1598944Sobrien# This program is distributed in the hope that it will be useful, 1698944Sobrien# but WITHOUT ANY WARRANTY; without even the implied warranty of 1798944Sobrien# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1898944Sobrien# GNU General Public License for more details. 1998944Sobrien# 2098944Sobrien# You should have received a copy of the GNU General Public License 2198944Sobrien# along with this program; if not, write to the Free Software 2298944Sobrien# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 2398944Sobrien 2498944Sobrien# 2598944Sobrien# What happens next: 2698944Sobrien# 2798944Sobrien 2898944Sobrien# The gdb-events.h/gdb-events.c files this script generates are commited 2998944Sobrien# and published. 3098944Sobrien 3198944Sobrien# Any UI module that is installing events is changed so that the 3298944Sobrien# events are installed using the ``set_gdb_events()'' and 3398944Sobrien# ``gdb_event_hooks()'' interfaces. There could prove to be an issue 3498944Sobrien# here with respect to annotate. We might need to accomodate a hook 3598944Sobrien# stack that allows several ui blocks to install their own events. 3698944Sobrien 3798944Sobrien# Each of the variable events (as currently generated) is converted 3898944Sobrien# to either a straight function call or a function call with a 3998944Sobrien# predicate. 4098944Sobrien 4198944Sobrien 4298944SobrienIFS=: 4398944Sobrien 4498944Sobrienread="class returntype function formal actual attrib" 4598944Sobrien 4698944Sobrienfunction_list () 4798944Sobrien{ 4898944Sobrien # category: 4998944Sobrien # # -> disable 5098944Sobrien # * -> compatibility - pointer variable that is initialized 5198944Sobrien # by set_gdb_events(). 5298944Sobrien # ? -> Predicate and function proper. 5398944Sobrien # f -> always call (must have a void returntype) 5498944Sobrien # return-type 5598944Sobrien # name 5698944Sobrien # formal argument list 5798944Sobrien # actual argument list 5898944Sobrien # attributes 5998944Sobrien # description 6098944Sobrien cat <<EOF | 6198944Sobrienf:void:breakpoint_create:int b:b 6298944Sobrienf:void:breakpoint_delete:int b:b 6398944Sobrienf:void:breakpoint_modify:int b:b 6498944Sobrienf:void:tracepoint_create:int number:number 6598944Sobrienf:void:tracepoint_delete:int number:number 6698944Sobrienf:void:tracepoint_modify:int number:number 6798944Sobrienf:void:architecture_changed:void 68130803Smarcelf:void:target_changed:void 69130803Smarcelf:void:selected_frame_level_changed:int level:level 70130803Smarcelf:void:selected_thread_changed:int thread_num:thread_num 7198944Sobrien#*:void:annotate_starting_hook:void 7298944Sobrien#*:void:annotate_stopped_hook:void 7398944Sobrien#*:void:annotate_signalled_hook:void 7498944Sobrien#*:void:annotate_signal_hook:void 7598944Sobrien#*:void:annotate_exited_hook:void 7698944Sobrien##*:void:print_register_hook:int 7798944Sobrien##*:CORE_ADDR:find_toc_address_hook:CORE_ADDR 7898944Sobrien##*:void:sparc_print_register_hook:int regno:regno 7998944Sobrien#*:void:target_resume_hook:void 8098944Sobrien#*:void:target_wait_loop_hook:void 8198944Sobrien#*:void:init_gdb_hook:char *argv0:argv0 8298944Sobrien#*:void:command_loop_hook:void 8398944Sobrien#*:void:fputs_unfiltered_hook:const char *linebuff,struct ui_file *stream:linebuff, stream 8498944Sobrien#*:void:print_frame_info_listing_hook:struct symtab *s, int line, int stopline, int noerror:s, line, stopline, noerror 8598944Sobrien#*:int:query_hook:const char *query, va_list args:query, args 8698944Sobrien#*:void:warning_hook:const char *string, va_list args:string, args 8798944Sobrien#*:void:target_output_hook:char *b:b 8898944Sobrien#*:void:interactive_hook:void 8998944Sobrien#*:void:registers_changed_hook:void 9098944Sobrien#*:void:readline_begin_hook:char *format, ...:format 9198944Sobrien#*:char *:readline_hook:char *prompt:prompt 9298944Sobrien#*:void:readline_end_hook:void 9398944Sobrien#*:int:target_wait_hook:int pid, struct target_waitstatus *status:pid, status 9498944Sobrien#*:void:call_command_hook:struct cmd_list_element *c, char *cmd, int from_tty:c, cmd, from_tty 9598944Sobrien#*:NORETURN void:error_hook:void:: ATTR_NORETURN 9698944Sobrien#*:void:error_begin_hook:void 9798944Sobrien##*:int:target_architecture_hook:const struct bfd_arch_info * 9898944Sobrien#*:void:exec_file_display_hook:char *filename:filename 9998944Sobrien#*:void:file_changed_hook:char *filename:filename 10098944Sobrien##*:void:specify_exec_file_hook: 10198944Sobrien#*:int:gdb_load_progress_hook:char *section, unsigned long num:section, num 10298944Sobrien#*:void:pre_add_symbol_hook:char *name:name 10398944Sobrien#*:void:post_add_symbol_hook:void 10498944Sobrien#*:void:selected_frame_level_changed_hook:int level:level 10598944Sobrien#*:int:gdb_loop_hook:int signo:signo 10698944Sobrien##*:void:solib_create_inferior_hook:void 10798944Sobrien##*:void:xcoff_relocate_symtab_hook:unsigned int 10898944SobrienEOF 10998944Sobrien grep -v '^#' 11098944Sobrien} 11198944Sobrien 11298944Sobriencopyright () 11398944Sobrien{ 11498944Sobrien cat <<EOF 11598944Sobrien/* User Interface Events. 11698944Sobrien 117130803Smarcel Copyright 1999, 2001, 2002 Free Software Foundation, Inc. 118130803Smarcel 11998944Sobrien Contributed by Cygnus Solutions. 12098944Sobrien 12198944Sobrien This file is part of GDB. 12298944Sobrien 12398944Sobrien This program is free software; you can redistribute it and/or modify 12498944Sobrien it under the terms of the GNU General Public License as published by 12598944Sobrien the Free Software Foundation; either version 2 of the License, or 12698944Sobrien (at your option) any later version. 12798944Sobrien 12898944Sobrien This program is distributed in the hope that it will be useful, 12998944Sobrien but WITHOUT ANY WARRANTY; without even the implied warranty of 13098944Sobrien MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13198944Sobrien GNU General Public License for more details. 13298944Sobrien 13398944Sobrien You should have received a copy of the GNU General Public License 13498944Sobrien along with this program; if not, write to the Free Software 13598944Sobrien Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 13698944Sobrien 13798944Sobrien/* Work in progress */ 13898944Sobrien 13998944Sobrien/* This file was created with the aid of \`\`gdb-events.sh''. 14098944Sobrien 14198944Sobrien The bourn shell script \`\`gdb-events.sh'' creates the files 14298944Sobrien \`\`new-gdb-events.c'' and \`\`new-gdb-events.h and then compares 14398944Sobrien them against the existing \`\`gdb-events.[hc]''. Any differences 14498944Sobrien found being reported. 14598944Sobrien 14698944Sobrien If editing this file, please also run gdb-events.sh and merge any 14798944Sobrien changes into that script. Conversely, when making sweeping changes 14898944Sobrien to this file, modifying gdb-events.sh and using its output may 14998944Sobrien prove easier. */ 15098944Sobrien 15198944SobrienEOF 15298944Sobrien} 15398944Sobrien 15498944Sobrien# 15598944Sobrien# The .h file 15698944Sobrien# 15798944Sobrien 15898944Sobrienexec > new-gdb-events.h 15998944Sobriencopyright 16098944Sobriencat <<EOF 16198944Sobrien 16298944Sobrien#ifndef GDB_EVENTS_H 16398944Sobrien#define GDB_EVENTS_H 16498944Sobrien 16598944Sobrien#ifndef WITH_GDB_EVENTS 16698944Sobrien#define WITH_GDB_EVENTS 1 16798944Sobrien#endif 16898944SobrienEOF 16998944Sobrien 17098944Sobrien# pointer declarations 17198944Sobrienecho "" 17298944Sobrienecho "" 17398944Sobriencat <<EOF 17498944Sobrien/* COMPAT: pointer variables for old, unconverted events. 17598944Sobrien A call to set_gdb_events() will automatically update these. */ 17698944SobrienEOF 17798944Sobrienecho "" 17898944Sobrienfunction_list | while eval read $read 17998944Sobriendo 18098944Sobrien case "${class}" in 18198944Sobrien "*" ) 18298944Sobrien echo "extern ${returntype} (*${function}_event) (${formal})${attrib};" 18398944Sobrien ;; 18498944Sobrien esac 18598944Sobriendone 18698944Sobrien 18798944Sobrien# function typedef's 18898944Sobrienecho "" 18998944Sobrienecho "" 19098944Sobriencat <<EOF 19198944Sobrien/* Type definition of all hook functions. 19298944Sobrien Recommended pratice is to first declare each hook function using 19398944Sobrien the below ftype and then define it. */ 19498944SobrienEOF 19598944Sobrienecho "" 19698944Sobrienfunction_list | while eval read $read 19798944Sobriendo 19898944Sobrien echo "typedef ${returntype} (gdb_events_${function}_ftype) (${formal});" 19998944Sobriendone 20098944Sobrien 20198944Sobrien# gdb_events object 20298944Sobrienecho "" 20398944Sobrienecho "" 20498944Sobriencat <<EOF 20598944Sobrien/* gdb-events: object. */ 20698944SobrienEOF 20798944Sobrienecho "" 20898944Sobrienecho "struct gdb_events" 20998944Sobrienecho " {" 21098944Sobrienfunction_list | while eval read $read 21198944Sobriendo 21298944Sobrien echo " gdb_events_${function}_ftype *${function}${attrib};" 21398944Sobriendone 21498944Sobrienecho " };" 21598944Sobrien 21698944Sobrien# function declarations 21798944Sobrienecho "" 21898944Sobrienecho "" 21998944Sobriencat <<EOF 22098944Sobrien/* Interface into events functions. 22198944Sobrien Where a *_p() predicate is present, it must be called before 22298944Sobrien calling the hook proper. */ 22398944SobrienEOF 22498944Sobrienfunction_list | while eval read $read 22598944Sobriendo 22698944Sobrien case "${class}" in 22798944Sobrien "*" ) continue ;; 22898944Sobrien "?" ) 22998944Sobrien echo "extern int ${function}_p (void);" 23098944Sobrien echo "extern ${returntype} ${function}_event (${formal})${attrib};" 23198944Sobrien ;; 23298944Sobrien "f" ) 23398944Sobrien echo "extern ${returntype} ${function}_event (${formal})${attrib};" 23498944Sobrien ;; 23598944Sobrien esac 23698944Sobriendone 23798944Sobrien 23898944Sobrien# function macros 23998944Sobrienecho "" 24098944Sobrienecho "" 24198944Sobriencat <<EOF 242130803Smarcel/* When GDB_EVENTS are not being used, completely disable them. */ 24398944SobrienEOF 24498944Sobrienecho "" 24598944Sobrienecho "#if !WITH_GDB_EVENTS" 24698944Sobrienfunction_list | while eval read $read 24798944Sobriendo 24898944Sobrien case "${class}" in 24998944Sobrien "*" ) continue ;; 25098944Sobrien "?" ) 25198944Sobrien echo "#define ${function}_event_p() 0" 25298944Sobrien echo "#define ${function}_event(${actual}) 0" 25398944Sobrien ;; 25498944Sobrien "f" ) 25598944Sobrien echo "#define ${function}_event(${actual}) 0" 25698944Sobrien ;; 25798944Sobrien esac 25898944Sobriendone 25998944Sobrienecho "#endif" 26098944Sobrien 26198944Sobrien# our set function 26298944Sobriencat <<EOF 26398944Sobrien 26498944Sobrien/* Install custom gdb-events hooks. */ 26598944Sobrienextern struct gdb_events *set_gdb_event_hooks (struct gdb_events *vector); 26698944Sobrien 26798944Sobrien/* Deliver any pending events. */ 26898944Sobrienextern void gdb_events_deliver (struct gdb_events *vector); 26998944Sobrien 270130803Smarcel/* Clear event handlers */ 271130803Smarcelextern void clear_gdb_event_hooks (void); 272130803Smarcel 27398944Sobrien#if !WITH_GDB_EVENTS 27498944Sobrien#define set_gdb_events(x) 0 27598944Sobrien#define set_gdb_event_hooks(x) 0 27698944Sobrien#define gdb_events_deliver(x) 0 27798944Sobrien#endif 27898944SobrienEOF 27998944Sobrien 28098944Sobrien# close it off 28198944Sobrienecho "" 28298944Sobrienecho "#endif" 28398944Sobrienexec 1>&2 28498944Sobrien#../move-if-change new-gdb-events.h gdb-events.h 28598944Sobrienif test -r gdb-events.h 28698944Sobrienthen 28798944Sobrien diff -c gdb-events.h new-gdb-events.h 28898944Sobrien if [ $? = 1 ] 28998944Sobrien then 29098944Sobrien echo "gdb-events.h changed? cp new-gdb-events.h gdb-events.h" 1>&2 29198944Sobrien fi 29298944Sobrienelse 29398944Sobrien echo "File missing? mv new-gdb-events.h gdb-events.h" 1>&2 29498944Sobrienfi 29598944Sobrien 29698944Sobrien 29798944Sobrien 29898944Sobrien# 29998944Sobrien# C file 30098944Sobrien# 30198944Sobrien 30298944Sobrienexec > new-gdb-events.c 30398944Sobriencopyright 30498944Sobriencat <<EOF 30598944Sobrien 30698944Sobrien#include "defs.h" 30798944Sobrien#include "gdb-events.h" 30898944Sobrien#include "gdbcmd.h" 30998944Sobrien 31098944Sobrien#if WITH_GDB_EVENTS 31198944Sobrienstatic struct gdb_events null_event_hooks; 31298944Sobrienstatic struct gdb_events queue_event_hooks; 31398944Sobrienstatic struct gdb_events *current_event_hooks = &null_event_hooks; 31498944Sobrien#endif 31598944Sobrien 31698944Sobrienint gdb_events_debug; 31798944SobrienEOF 31898944Sobrien 31998944Sobrien# global pointer variables - always have this 32098944Sobrien#echo "" 32198944Sobrien#function_list | while eval read $read 32298944Sobrien#do 32398944Sobrien# case "${class}" in 32498944Sobrien# "*" ) 32598944Sobrien# echo "${returntype} (*${function}_event) (${formal})${attrib} = 0;" 32698944Sobrien# ;; 32798944Sobrien# esac 32898944Sobrien#done 32998944Sobrien 33098944Sobrien# function bodies 33198944Sobrienecho "" 33298944Sobrienecho "#if WITH_GDB_EVENTS" 33398944Sobrienfunction_list | while eval read $read 33498944Sobriendo 33598944Sobrien case "${class}" in 33698944Sobrien "*" ) continue ;; 33798944Sobrien "?" ) 33898944Sobriencat <<EOF 33998944Sobrien 34098944Sobrienint 34198944Sobrien${function}_event_p (${formal}) 34298944Sobrien{ 34398944Sobrien return current_event_hooks->${function}; 34498944Sobrien} 34598944Sobrien 34698944Sobrien${returntype} 34798944Sobrien${function}_event (${formal}) 34898944Sobrien{ 34998944Sobrien return current_events->${function} (${actual}); 35098944Sobrien} 35198944SobrienEOF 35298944Sobrien ;; 35398944Sobrien "f" ) 35498944Sobriencat <<EOF 35598944Sobrien 35698944Sobrienvoid 35798944Sobrien${function}_event (${formal}) 35898944Sobrien{ 35998944Sobrien if (gdb_events_debug) 36098944Sobrien fprintf_unfiltered (gdb_stdlog, "${function}_event\n"); 36198944Sobrien if (!current_event_hooks->${function}) 36298944Sobrien return; 36398944Sobrien current_event_hooks->${function} (${actual}); 36498944Sobrien} 36598944SobrienEOF 36698944Sobrien ;; 36798944Sobrien esac 36898944Sobriendone 36998944Sobrienecho "" 37098944Sobrienecho "#endif" 37198944Sobrien 37298944Sobrien# Set hooks function 37398944Sobrienecho "" 37498944Sobriencat <<EOF 37598944Sobrien#if WITH_GDB_EVENTS 37698944Sobrienstruct gdb_events * 37798944Sobrienset_gdb_event_hooks (struct gdb_events *vector) 37898944Sobrien{ 37998944Sobrien struct gdb_events *old_events = current_event_hooks; 38098944Sobrien if (vector == NULL) 38198944Sobrien current_event_hooks = &queue_event_hooks; 38298944Sobrien else 38398944Sobrien current_event_hooks = vector; 38498944Sobrien return old_events; 38598944SobrienEOF 38698944Sobrienfunction_list | while eval read $read 38798944Sobriendo 38898944Sobrien case "${class}" in 38998944Sobrien "*" ) 39098944Sobrien echo " ${function}_event = hooks->${function};" 39198944Sobrien ;; 39298944Sobrien esac 39398944Sobriendone 39498944Sobriencat <<EOF 39598944Sobrien} 39698944Sobrien#endif 39798944SobrienEOF 39898944Sobrien 399130803Smarcel# Clear hooks function 400130803Smarcelecho "" 401130803Smarcelcat <<EOF 402130803Smarcel#if WITH_GDB_EVENTS 403130803Smarcelvoid 404130803Smarcelclear_gdb_event_hooks (void) 405130803Smarcel{ 406130803Smarcel set_gdb_event_hooks (&null_event_hooks); 407130803Smarcel} 408130803Smarcel#endif 409130803SmarcelEOF 410130803Smarcel 41198944Sobrien# event type 41298944Sobrienecho "" 41398944Sobriencat <<EOF 41498944Sobrienenum gdb_event 41598944Sobrien{ 41698944SobrienEOF 41798944Sobrienfunction_list | while eval read $read 41898944Sobriendo 41998944Sobrien case "${class}" in 42098944Sobrien "f" ) 42198944Sobrien echo " ${function}," 42298944Sobrien ;; 42398944Sobrien esac 42498944Sobriendone 42598944Sobriencat <<EOF 42698944Sobrien nr_gdb_events 42798944Sobrien}; 42898944SobrienEOF 42998944Sobrien 43098944Sobrien# event data 43198944Sobrienecho "" 43298944Sobrienfunction_list | while eval read $read 43398944Sobriendo 43498944Sobrien case "${class}" in 43598944Sobrien "f" ) 43698944Sobrien if test ${actual} 43798944Sobrien then 43898944Sobrien echo "struct ${function}" 43998944Sobrien echo " {" 44098944Sobrien echo " `echo ${formal} | tr '[,]' '[;]'`;" 44198944Sobrien echo " };" 44298944Sobrien echo "" 44398944Sobrien fi 44498944Sobrien ;; 44598944Sobrien esac 44698944Sobriendone 44798944Sobrien 44898944Sobrien# event queue 44998944Sobriencat <<EOF 45098944Sobrienstruct event 45198944Sobrien { 45298944Sobrien enum gdb_event type; 45398944Sobrien struct event *next; 45498944Sobrien union 45598944Sobrien { 45698944SobrienEOF 45798944Sobrienfunction_list | while eval read $read 45898944Sobriendo 45998944Sobrien case "${class}" in 46098944Sobrien "f" ) 46198944Sobrien if test ${actual} 46298944Sobrien then 46398944Sobrien echo " struct ${function} ${function};" 46498944Sobrien fi 46598944Sobrien ;; 46698944Sobrien esac 46798944Sobriendone 46898944Sobriencat <<EOF 46998944Sobrien } 47098944Sobrien data; 47198944Sobrien }; 47298944Sobrienstruct event *pending_events; 47398944Sobrienstruct event *delivering_events; 47498944SobrienEOF 47598944Sobrien 47698944Sobrien# append 47798944Sobrienecho "" 47898944Sobriencat <<EOF 47998944Sobrienstatic void 48098944Sobrienappend (struct event *new_event) 48198944Sobrien{ 48298944Sobrien struct event **event = &pending_events; 48398944Sobrien while ((*event) != NULL) 48498944Sobrien event = &((*event)->next); 48598944Sobrien (*event) = new_event; 48698944Sobrien (*event)->next = NULL; 48798944Sobrien} 48898944SobrienEOF 48998944Sobrien 49098944Sobrien# schedule a given event 49198944Sobrienfunction_list | while eval read $read 49298944Sobriendo 49398944Sobrien case "${class}" in 49498944Sobrien "f" ) 49598944Sobrien echo "" 49698944Sobrien echo "static void" 49798944Sobrien echo "queue_${function} (${formal})" 49898944Sobrien echo "{" 49998944Sobrien echo " struct event *event = XMALLOC (struct event);" 50098944Sobrien echo " event->type = ${function};" 50198944Sobrien for arg in `echo ${actual} | tr '[,]' '[:]' | tr -d '[ ]'`; do 50298944Sobrien echo " event->data.${function}.${arg} = ${arg};" 50398944Sobrien done 50498944Sobrien echo " append (event);" 50598944Sobrien echo "}" 50698944Sobrien ;; 50798944Sobrien esac 50898944Sobriendone 50998944Sobrien 51098944Sobrien# deliver 51198944Sobrienecho "" 51298944Sobriencat <<EOF 51398944Sobrienvoid 51498944Sobriengdb_events_deliver (struct gdb_events *vector) 51598944Sobrien{ 51698944Sobrien /* Just zap any events left around from last time. */ 51798944Sobrien while (delivering_events != NULL) 51898944Sobrien { 51998944Sobrien struct event *event = delivering_events; 52098944Sobrien delivering_events = event->next; 52198944Sobrien xfree (event); 52298944Sobrien } 52398944Sobrien /* Process any pending events. Because one of the deliveries could 52498944Sobrien bail out we move everything off of the pending queue onto an 52598944Sobrien in-progress queue where it can, later, be cleaned up if 52698944Sobrien necessary. */ 52798944Sobrien delivering_events = pending_events; 52898944Sobrien pending_events = NULL; 52998944Sobrien while (delivering_events != NULL) 53098944Sobrien { 53198944Sobrien struct event *event = delivering_events; 53298944Sobrien switch (event->type) 53398944Sobrien { 53498944SobrienEOF 53598944Sobrienfunction_list | while eval read $read 53698944Sobriendo 53798944Sobrien case "${class}" in 53898944Sobrien "f" ) 53998944Sobrien echo " case ${function}:" 54098944Sobrien if test ${actual} 54198944Sobrien then 54298944Sobrien echo " vector->${function}" 54398944Sobrien sep=" (" 54498944Sobrien ass="" 54598944Sobrien for arg in `echo ${actual} | tr '[,]' '[:]' | tr -d '[ ]'`; do 54698944Sobrien ass="${ass}${sep}event->data.${function}.${arg}" 54798944Sobrien sep=", 54898944Sobrien " 54998944Sobrien done 55098944Sobrien echo "${ass});" 55198944Sobrien else 55298944Sobrien echo " vector->${function} ();" 55398944Sobrien fi 55498944Sobrien echo " break;" 55598944Sobrien ;; 55698944Sobrien esac 55798944Sobriendone 55898944Sobriencat <<EOF 55998944Sobrien } 56098944Sobrien delivering_events = event->next; 56198944Sobrien xfree (event); 56298944Sobrien } 56398944Sobrien} 56498944SobrienEOF 56598944Sobrien 56698944Sobrien# Finally the initialization 56798944Sobrienecho "" 56898944Sobriencat <<EOF 56998944Sobrienvoid _initialize_gdb_events (void); 57098944Sobrienvoid 57198944Sobrien_initialize_gdb_events (void) 57298944Sobrien{ 57398944Sobrien struct cmd_list_element *c; 57498944Sobrien#if WITH_GDB_EVENTS 57598944SobrienEOF 57698944Sobrienfunction_list | while eval read $read 57798944Sobriendo 57898944Sobrien case "${class}" in 57998944Sobrien "f" ) 58098944Sobrien echo " queue_event_hooks.${function} = queue_${function};" 58198944Sobrien ;; 58298944Sobrien esac 58398944Sobriendone 58498944Sobriencat <<EOF 58598944Sobrien#endif 58698944Sobrien 58798944Sobrien c = add_set_cmd ("eventdebug", class_maintenance, var_zinteger, 58898944Sobrien (char *) (&gdb_events_debug), "Set event debugging.\n\\ 58998944SobrienWhen non-zero, event/notify debugging is enabled.", &setlist); 59098944Sobrien deprecate_cmd (c, "set debug event"); 59198944Sobrien deprecate_cmd (add_show_from_set (c, &showlist), "show debug event"); 59298944Sobrien 59398944Sobrien add_show_from_set (add_set_cmd ("event", 59498944Sobrien class_maintenance, 59598944Sobrien var_zinteger, 59698944Sobrien (char *) (&gdb_events_debug), 59798944Sobrien "Set event debugging.\n\\ 59898944SobrienWhen non-zero, event/notify debugging is enabled.", &setdebuglist), 59998944Sobrien &showdebuglist); 60098944Sobrien} 60198944SobrienEOF 60298944Sobrien 60398944Sobrien# close things off 60498944Sobrienexec 1>&2 60598944Sobrien#../move-if-change new-gdb-events.c gdb-events.c 60698944Sobrien# Replace any leading spaces with tabs 60798944Sobriensed < new-gdb-events.c > tmp-gdb-events.c \ 60898944Sobrien -e 's/\( \)* /\1 /g' 60998944Sobrienmv tmp-gdb-events.c new-gdb-events.c 61098944Sobrien# Move if changed? 61198944Sobrienif test -r gdb-events.c 61298944Sobrienthen 61398944Sobrien diff -c gdb-events.c new-gdb-events.c 61498944Sobrien if [ $? = 1 ] 61598944Sobrien then 61698944Sobrien echo "gdb-events.c changed? cp new-gdb-events.c gdb-events.c" 1>&2 61798944Sobrien fi 61898944Sobrienelse 61998944Sobrien echo "File missing? mv new-gdb-events.c gdb-events.c" 1>&2 62098944Sobrienfi 621