From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5484 invoked by alias); 1 Feb 2013 19:00:05 -0000 Received: (qmail 5461 invoked by uid 22791); 1 Feb 2013 19:00:04 -0000 X-SWARE-Spam-Status: No, hits=-7.8 required=5.0 tests=AWL,BAYES_00,KHOP_RCVD_UNTRUST,KHOP_SPAMHAUS_DROP,KHOP_THREADED,RCVD_IN_DNSWL_HI,RCVD_IN_HOSTKARMA_W,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 01 Feb 2013 18:59:53 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r11Ixh1J002226 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 1 Feb 2013 13:59:43 -0500 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r11IxeBd001121; Fri, 1 Feb 2013 13:59:42 -0500 Message-ID: <510C109C.6070205@redhat.com> Date: Fri, 01 Feb 2013 19:00:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Andreas Tobler CC: gdb-patches@sourceware.org Subject: Re: [RFC] patch to refactor ppc64 specific code from ppc-linux-tdep References: <50DCBF4B.7000009@fgznet.ch> <50FD6398.3000807@redhat.com> <51040329.3090102@fgznet.ch> In-Reply-To: <51040329.3090102@fgznet.ch> Content-Type: text/plain; charset=UTF-8 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: 2013-02/txt/msg00017.txt.bz2 On 01/26/2013 04:24 PM, Andreas Tobler wrote: > Hi Pedro, Hi Andreas. >> > Also, GDB's convention is that the function name goes on the first >> > column in function definitions only, not declarations, and that >> > declarations in .h files get an explicit "extern". > Done, not sure if I need the extern on ppc64-tdep.h too? Yes. > 2013-01-26 Andreas Tobler > > * Makefile.in (ALL_TARGET_OBS): Add new file ppc64-tdep.o. > (HFILES_NO_SRCDIR): Likewise. > (ALLDEPFILES): Likewise. * Makefile.in (ALL_TARGET_OBS): Add ppc64-tdep.o. (HFILES_NO_SRCDIR): Add ppc64-tdep.h. (ALLDEPFILES): Add ppc64-tdep.c. > * configure.tgt: Add new file for powerpc-linux. * configure.tgt (powerpc-*-linux* | powerpc64-*-linux*): Add ppc64-tdep.o to gdb_target_obs. > * ppc64-tdep.h: New file. > * ppc64-tdep.c: New file. > (insn_d, insn_ds, insn_xfx, ppc64_desc_entry_point): Move from > ppc-linux-tdep.c to here. > (PPC64_STANDARD_LINKAGE1_LEN, PPC64_STANDARD_LINKAGE2_LEN) > (PPC64_STANDARD_LINKAGE2_LEN): Likewise and use ARRAY_SIZE macro. > (ppc64_standard_linkage1_target, ppc64_standard_linkage2_target) > (ppc64_standard_linkage3_target, ppc64_skip_trampoline_code): Move > from ppc-linux-tdep.c to here. > (ppc64_convert_from_func_ptr_addr): Rename it from > ppc64_linux_convert_from_func_ptr_addr to > ppc64_convert_from_func_ptr_addr and move it from ppc-linux-tdep.c to > here. Drop the "it"s. > * rs6000-tdep.c: > (read_insn): Move from ppc-linux-tdep.c to here. > (insns_match_pattern, insn_d_field, insn_ds_field): Move > from ppc-linux-tdep.c to here and rename them with the ppc_ prefix. > * ppc-linux-tdep.c: Include ppc64-tdep.h. > Removed above functions. > (ppc_linux_init_abi): Rename > ppc64_linux_convert_from_func_ptr_addr to > ppc64_convert_from_func_ptr_addr. (ppc_linux_init_abi): Adjust. > diff --git a/gdb/ppc-tdep.h b/gdb/ppc-tdep.h > index 9be9666..b268e90 100644 > --- a/gdb/ppc-tdep.h > +++ b/gdb/ppc-tdep.h > @@ -291,6 +291,23 @@ enum { > PPC_NUM_REGS > }; > > +/* An instruction to match. */ > + > +struct ppc_insn_pattern > +{ > + unsigned int mask; /* mask the insn with this... */ > + unsigned int data; /* ...and see if it matches this. */ > + int optional; /* If non-zero, this insn may be absent. */ > +}; > + > +extern int > +ppc_insns_match_pattern (CORE_ADDR pc, struct ppc_insn_pattern *pattern, > + unsigned int *insn); > +extern CORE_ADDR > +ppc_insn_d_field (unsigned int insn); > + > +extern CORE_ADDR > +ppc_insn_ds_field (unsigned int insn); Here, GDB's convention is that the function name goes on the first column in function definitions only, not declarations. So: extern int ppc_insns_match_pattern (CORE_ADDR pc, struct ppc_insn_pattern *pattern, unsigned int *insn); extern CORE_ADDR ppc_insn_d_field (unsigned int insn); extern CORE_ADDR ppc_insn_ds_field (unsigned int insn); This is so 'grep ^functionname" finds function definitions. > > /* Instruction size. */ > #define PPC_INSN_SIZE 4 > diff --git a/gdb/ppc64-tdep.c b/gdb/ppc64-tdep.c > new file mode 100644 > index 0000000..cdf8f4d > --- /dev/null > +++ b/gdb/ppc64-tdep.c > @@ -0,0 +1,364 @@ > +/* Common target-dependent code for ppc64 GDB, the GNU debugger. > + > + Copyright (C) 2013 Free Software > + Foundation, Inc. This is existing code, not new code. Please retain the copyright the copyright years of the file(s) the code has been copied from. This is okay with these issues fixed. Thanks again for doing this. -- Pedro Alves