From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 93685 invoked by alias); 11 Dec 2015 17:28:55 -0000 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 Received: (qmail 92977 invoked by uid 89); 11 Dec 2015 17:28:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pa0-f53.google.com Received: from mail-pa0-f53.google.com (HELO mail-pa0-f53.google.com) (209.85.220.53) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 11 Dec 2015 17:28:53 +0000 Received: by pabur14 with SMTP id ur14so68624323pab.0 for ; Fri, 11 Dec 2015 09:28:51 -0800 (PST) X-Received: by 10.67.14.3 with SMTP id fc3mr27016340pad.134.1449854931418; Fri, 11 Dec 2015 09:28:51 -0800 (PST) Received: from E107787-LIN (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id w1sm26372377pfa.57.2015.12.11.09.28.48 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Fri, 11 Dec 2015 09:28:50 -0800 (PST) From: Yao Qi To: Antoine Tremblay Cc: , Subject: Re: [PATCH v7.2] Support software single step on ARM in GDBServer References: <566AF5A0.2040606@ericsson.com> <1449851185-9066-1-git-send-email-antoine.tremblay@ericsson.com> Date: Fri, 11 Dec 2015 17:28:00 -0000 In-Reply-To: <1449851185-9066-1-git-send-email-antoine.tremblay@ericsson.com> (Antoine Tremblay's message of "Fri, 11 Dec 2015 11:26:25 -0500") Message-ID: <86lh90q4hf.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg00241.txt.bz2 Antoine Tremblay writes: > Change the name of the ops read_memory_unsigned_integer to read_mem_uint > > OK like that ? Yes. > > --- > This patch teaches GDBServer how to software single step on ARM > linux by sharing code with GDB. > > The arm_get_next_pcs function in GDB is now shared with GDBServer. So th= at > GDBServer can use the function to return the possible addresses of the ne= xt PC. > > A proper shared context was also needed so that we could share the code, = this > context is described in the arm_get_next_pcs structure. > > Testing : > > No regressions, tested on ubuntu 14.04 ARMv7 and x86. > With gdbserver-{native,extended} / { -marm -mthumb } > > gdb/ChangeLog: > > * Makefile.in (ALL_TARGET_OBS): Append arm-get-next-pcs.o, arm-linux.o. > (ALLDEPFILES): Append arm-get-next-pcs.c, arm-linux.c > (arm-linux.o): New rule. > (arm-get-next-pcs.o): New rule. > * arch/arm-get-next-pcs.c: New file. > * arch/arm-get-next-pcs.h: New file. > * arch/arm-linux.h: New file. > * arch/arm-linux.c: New file. > * arm.c: Include common-regcache.c. > (thumb_advance_itstate): Moved from arm-tdep.c. > (arm_instruction_changes_pc): Likewise. > (thumb_instruction_changes_pc): Likewise. > (thumb2_instruction_changes_pc): Likewise. > (shifted_reg_val): Likewise. > * arm.h (submask): Move macro from arm-tdep.h > (bit): Likewise. > (bits): Likewise. > (sbits): Likewise. > (BranchDest): Likewise. > (thumb_advance_itstate): Moved declaration from arm-tdep.h > (arm_instruction_changes_pc): Likewise. > (thumb_instruction_changes_pc): Likewise. > (thumb2_instruction_changes_pc): Likewise. > (shifted_reg_val): Likewise. > * arm-linux-tdep.c: Include arch/arm.h, arch/arm-get-next-pcs.h > arch/arm-linux.h. > (arm_linux_get_next_pcs_ops): New struct. > (ARM_SIGCONTEXT_R0, ARM_UCONTEXT_SIGCONTEXT, > ARM_OLD_RT_SIGFRAME_SIGINFO, ARM_OLD_RT_SIGFRAME_UCONTEXT, > ARM_NEW_RT_SIGFRAME_UCONTEXT, ARM_NEW_SIGFRAME_MAGIC): Move stack > layout defines to arch/arm-linux.h. > (arm_linux_sigreturn_next_pc_offset): Move to arch/arm-linux.c. > (arm_linux_software_single_step): Adjust for arm_get_next_pcs > implementation. > * arm-tdep.c: Include arch/arm-get-next-pcs.h. > (arm_get_next_pcs_ops): New struct. > (submask): Move macro to arm.h. > (bit): Likewise. > (bits): Likewise. > (sbits): Likewise. > (BranchDest): Likewise. > (thumb_instruction_changes_pc): Move to arm.c > (thumb2_instruction_changes_pc): Likewise. > (arm_instruction_changes_pc): Likewise. > (shifted_reg_val): Likewise. > (thumb_advance_itstate): Likewise. > (thumb_get_next_pc_raw): Move to arm-get-next-pcs.c. > (arm_get_next_pc_raw): Likewise. > (arm_get_next_pc): Likewise. > (thumb_deal_with_atomic_sequence_raw): Likewise. > (arm_deal_with_atomic_sequence_raw): Likewise. > (arm_deal_with_atomic_sequence): Likewise. > (arm_get_next_pcs_read_memory_unsigned_integer): New function. > (arm_get_next_pcs_addr_bits_remove): Likewise. > (arm_get_next_pcs_syscall_next_pc): Likewise. > (arm_get_next_pcs_is_thumb): Likewise. > (arm_software_single_step): Adjust for arm_get_next_pcs > implementation. > * arm-tdep.h: (arm_get_next_pc): Remove declaration. > (arm_get_next_pcs_read_memory_unsigned_integer): > New declaration. > (arm_get_next_pcs_addr_bits_remove): Likewise. > (arm_get_next_pcs_syscall_next_pc): Likewise. > (arm_get_next_pcs_is_thumb): Likewise. > (arm_deal_with_atomic_sequence: Remove declaration. > * common/gdb_vecs.h: Add CORE_ADDR vector definition. > * configure.tgt (aarch64*-*-linux): Add arm-get-next-pcs.o, arm-linux.o. ChangeLog line max length is 74. https://sourceware.org/gdb/wiki/ContributionChecklist > (arm*-wince-pe): Add arm-get-next-pcs.o. > (arm*-*-linux*): Add arm-get-next-pcs.o, arm-linux.o, arm-get-next-pcs.o > (arm*-*-netbsd* | arm*-*-knetbsd*-gnu): Add arm-get-next-pcs.o. Replace "|" with ",". > (arm*-*-openbsd*): Likewise. > (arm*-*-symbianelf*): Likewise. > (arm*-*-*): Likewise. > * symtab.h: Move CORE_ADDR vector definition to gdb_vecs.h. > > gdb/gdbserver/ChangeLog: > > * Makefile.in (SFILES): Append arch/arm-linux.c, > arch/arm-get-next-pcs.c. > (arm-linux.o): New rule. > (arm-get-next-pcs.o): New rule. > * configure.srv (arm*-*-linux*): Add arm-get-next-pcs.o, > arm-linux.o. > * linux-aarch32-low.c (arm_abi_breakpoint): Remove macro. Moved > to linux-aarch32-low.c. > (arm_eabi_breakpoint, arm_breakpoint): Likewise. > (arm_breakpoint_len, thumb_breakpoint): Likewise. > (thumb_breakpoint_len, thumb2_breakpoint): Likewise. > (thumb2_breakpoint_len): Likewise. These are not started with TAB. > + > + if ((inst1 & 0xff00) =3D=3D 0xbd00) /* pop {rlist, pc} */ > + { > + CORE_ADDR sp; > + > + /* Fetch the saved PC from the stack. It's stored above > + all of the other registers. */ > + offset =3D bitcount (bits (inst1, 0, 7)) * INT_REGISTER_SIZE; > + sp =3D regcache_raw_get_unsigned (regcache, ARM_SP_REGNUM); > + nextpc =3D self->ops->read_mem_uint (sp + offset, 4, byte_order); Redundant spaces. --=20 Yao (=E9=BD=90=E5=B0=A7)