From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30173 invoked by alias); 19 Apr 2010 08:39:44 -0000 Received: (qmail 30153 invoked by uid 22791); 19 Apr 2010 08:39:41 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=BAYES_00,MSGID_MULTIPLE_AT X-Spam-Check-By: sourceware.org Received: from mailhost.u-strasbg.fr (HELO mailhost.u-strasbg.fr) (130.79.200.156) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 19 Apr 2010 08:39:32 +0000 Received: from baal.u-strasbg.fr (baal.u-strasbg.fr [IPv6:2001:660:2402::41]) by mailhost.u-strasbg.fr (8.14.3/jtpda-5.5pre1) with ESMTP id o3J8dT1G061204 for ; Mon, 19 Apr 2010 10:39:29 +0200 (CEST) (envelope-from pierre.muller@ics-cnrs.unistra.fr) Received: from mailserver.u-strasbg.fr (ms2.u-strasbg.fr [IPv6:2001:660:2402:d::11]) by baal.u-strasbg.fr (8.14.0/jtpda-5.5pre1) with ESMTP id o3J8dTi7079673 for ; Mon, 19 Apr 2010 10:39:29 +0200 (CEST) (envelope-from pierre.muller@ics-cnrs.unistra.fr) Received: from d620muller (gw-ics.u-strasbg.fr [130.79.210.225]) (user=mullerp mech=LOGIN) by mailserver.u-strasbg.fr (8.14.3/jtpda-5.5pre1) with ESMTP id o3J8dS1o024921 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=NO) for ; Mon, 19 Apr 2010 10:39:28 +0200 (CEST) (envelope-from pierre.muller@ics-cnrs.unistra.fr) From: "Pierre Muller" To: Subject: [RFA/Windows] Change type of handler field of current_seh in windows-tdep.c Date: Mon, 19 Apr 2010 08:39:00 -0000 Message-ID: <000c01cadf9b$dad07560$90716020$@muller@ics-cnrs.unistra.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2010-04/txt/msg00551.txt.bz2 In the newly added convenience variable $_tlb for Windows OS executables, you can see the Structured Exception Handling list. This is current_seh field: (top-gdb) start Temporary breakpoint 3 at 0x40105c: file ../../src/gdb/gdb.c, line 26. Starting program: /usr/local/src/gdbcvs/build-norm/gdb/gdb.exe [New Thread 5532.0xbfc] [New Thread 5532.0x824] Temporary breakpoint 3, main (argc=1, argv=0x1de26a8) at ../../src/gdb/gdb.c:26 26 { (top-gdb) p *$_tlb.current_seh $1 = {next_seh = 0x15dffe0, handler = 0x61018970} (top-gdb) p *$_tlb.current_seh.next_seh $2 = {next_seh = 0xffffffff, handler = 0x7c839ad8} (top-gdb) After this patch, the handler field also displays the function corresponding to that pointer. (top-gdb) p *$_tlb.current_seh $2 = {next_seh = 0x15dffe0, handler = 0x61018970 <_cygtls::handle_exceptions(_EXCEPTION_RECORD*, _exceptio n_list*, _CONTEXT*, void*)>} (top-gdb) p *$_tlb.current_seh .next_seh $3 = {next_seh = 0xffffffff, handler = 0x7c839ad8 } This make it much more readable, no? OK to install? Pierre Muller 2010-04-19 Pierre Muller * windows-tdep.c (windows_get_tlb_type): Change current_seh.handler type to void function. Index: windows-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/windows-tdep.c,v retrieving revision 1.6 diff -u -p -r1.6 windows-tdep.c --- windows-tdep.c 16 Apr 2010 07:49:35 -0000 1.6 +++ windows-tdep.c 19 Apr 2010 07:57:53 -0000 @@ -102,6 +102,7 @@ windows_get_tlb_type (struct gdbarch *gd struct type *peb_type, *peb_ptr_type, *list_type, *list_ptr_type; struct type *module_list_ptr_type; struct type *tib_type, *seh_type, *tib_ptr_type, *seh_ptr_type; + struct type *seh_handler_type, *seh_handler_ptr_type; dword_ptr_type = arch_integer_type (gdbarch, gdbarch_ptr_bit (gdbarch), 1, "DWORD_PTR"); @@ -125,6 +126,13 @@ windows_get_tlb_type (struct gdbarch *gd /* Structured Exception Handler */ + seh_handler_type = arch_type (gdbarch, TYPE_CODE_FUNC, 0, NULL); + TYPE_TARGET_TYPE (seh_handler_type) = builtin_type (gdbarch)->builtin_void; + + seh_handler_ptr_type = arch_type (gdbarch, TYPE_CODE_PTR, + TYPE_LENGTH (void_ptr_type), NULL); + TYPE_TARGET_TYPE (seh_handler_ptr_type) = seh_handler_type; + seh_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT); TYPE_NAME (seh_type) = xstrdup ("seh"); @@ -133,7 +141,7 @@ windows_get_tlb_type (struct gdbarch *gd TYPE_TARGET_TYPE (seh_ptr_type) = seh_type; append_composite_type_field (seh_type, "next_seh", seh_ptr_type); - append_composite_type_field (seh_type, "handler", void_ptr_type); + append_composite_type_field (seh_type, "handler", seh_handler_ptr_type); /* struct _PEB_LDR_DATA */ peb_ldr_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);