From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13969 invoked by alias); 9 Jan 2014 17:25:22 -0000 Mailing-List: contact insight-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: insight-owner@sourceware.org Received: (qmail 13958 invoked by uid 89); 9 Jan 2014 17:25:22 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 09 Jan 2014 17:25:19 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s09HPHkZ013352 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 9 Jan 2014 12:25:17 -0500 Received: from barimba (ovpn-113-85.phx2.redhat.com [10.3.113.85]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s09HPFx1030147 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 9 Jan 2014 12:25:16 -0500 From: Tom Tromey To: Keith Seitz Cc: Insight List Subject: Re: [PATCH] use an observer instead of deprecated_file_changed_hook References: <871u0jhamf.fsf@fleche.redhat.com> <52CC5D85.8030400@redhat.com> <87txdd9iy5.fsf@fleche.redhat.com> Date: Thu, 09 Jan 2014 17:25:00 -0000 In-Reply-To: <87txdd9iy5.fsf@fleche.redhat.com> (Tom Tromey's message of "Thu, 09 Jan 2014 10:13:54 -0700") Message-ID: <87k3e99if8.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2014-q1/txt/msg00003.txt.bz2 Tom> This one failed with my patch. I'm trying a new patch to see if I can Tom> make it work reasonably well with the existing observers. I'll let you Tom> know. I thought I could make it work by also using the free_objfile observer, but that observer is not in the old CVS repository. So until Insight has its own git repository and can be based on the latest gdb, no joy here. I'm appending my current patch for reference. I can't test it though. Tom Index: gdbtk-hooks.c =================================================================== RCS file: /cvs/src/src/gdb/gdbtk/generic/gdbtk-hooks.c,v retrieving revision 1.60 diff -u -c -r1.60 gdbtk-hooks.c cvs diff: conflicting specifications of output style --- gdbtk-hooks.c 2 Jul 2013 17:07:29 -0000 1.60 +++ gdbtk-hooks.c 9 Jan 2014 17:24:28 -0000 @@ -1,7 +1,7 @@ /* Startup code for Insight. Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 200, 2002, 2003, 2004, - 2008, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. + 2008, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. Written by Stu Grossman of Cygnus Support. @@ -77,7 +77,8 @@ static void gdbtk_trace_start_stop (int, int); static void gdbtk_attach (void); static void gdbtk_detach (void); -static void gdbtk_file_changed (char *); +static void gdbtk_new_objfile (struct objfile *); +static void gdbtk_objfile_removed (struct objfile *); static void gdbtk_exec_file_display (char *); static void gdbtk_call_command (struct cmd_list_element *, char *, int); static ptid_t gdbtk_wait (ptid_t, struct target_waitstatus *, int); @@ -144,7 +145,9 @@ deprecated_ui_loop_hook = x_event; deprecated_pre_add_symbol_hook = gdbtk_pre_add_symbol; deprecated_post_add_symbol_hook = gdbtk_post_add_symbol; - deprecated_file_changed_hook = gdbtk_file_changed; + observer_attach_new_objfile (gdbtk_new_objfile); + observer_attach_free_objfile (gdbtk_objfile_removed); + specify_exec_file_hook (gdbtk_exec_file_display); deprecated_trace_find_hook = gdbtk_trace_find; @@ -764,11 +767,23 @@ gdb_context = num; } -/* Called from file_command */ +/* Called from file_command, via the new objfile observer. */ +static void +gdbtk_new_objfile (struct objfile *objfile) +{ + if (objfile == symfile_objfile && objfile != NULL) + gdbtk_two_elem_cmd ("gdbtk_tcl_file_changed", + objfile == NULL ? NULL : objfile->original_name); +} + +/* Called from file_command, via the free objfile observer. */ static void -gdbtk_file_changed (char *filename) +gdbtk_objfile_removed (struct objfile *objfile) { - gdbtk_two_elem_cmd ("gdbtk_tcl_file_changed", filename); + static int symfile_was_set; + + if (objfile == symfile_objfile) + gdbtk_two_elem_cmd ("gdbtk_tcl_file_changed", NULL); } /* Called from exec_file_command */