From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic304-22.consmr.mail.ir2.yahoo.com (sonic304-22.consmr.mail.ir2.yahoo.com [77.238.179.147]) by sourceware.org (Postfix) with ESMTPS id 2A820388C025 for ; Sat, 6 Mar 2021 17:45:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 2A820388C025 X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1615052724; bh=0uHXD//UtQPvIcHZw2RFmI+PksTLDHmBJhpJ12faeDo=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=CSDjgaeMV0ox81sdqwlE1xTJ4Ky/lpEAYEKPOnhOrxf4nPcShNpoRaIIu6Sx64xaR30HOLiO7Mz7MAyucdRv8TsKdpTAoKplqy+BnEvunifJEIjfs/acqv22GAVk0nCU4SWZWT+rZP6IFUwK1PrCC/HjlOZAj0LdKdx3JOVI3TsZnmwCvxHMmKUiY0NLwCOOspcG93WsEIbnD5/HRFgyt/8M1sX2s57+RTB2B8f7mjQTIoq6jYtnoKCfAfHKvOLKwmCNHAg1x0Z7ixmLYID0tNOvBJZcpMNEaSBCkr+YawRMV+TiONRngwkDVbgv77PavFk9AL/paLAbFO5CeTF5sQ== X-YMail-OSG: 29VGD28VM1llJVN.KGZCqIxom.IZZH1GB8GXpQPGjnSx6qrYtQw27VoraKBlUlF x7gtoymSGt4M1eZ6sxKv1YB86cblkmiEAV.dCLOLRt6ZfHfy20S8MJFoXlwATHmmgCSPui6UQuXu ptTB3LpwKL4pjBq1qrvwFgJG5OJ674z.8biqGTrrH1c8_CtVh.xhqSwW8XY4T02uVuwIIUHr2Nei 8L3MHesNiD4swsMie1ek6Y3LEqfONo3LTxBsKx2Ez2zhR1l8vp5_d7ZvWN_.rq0rL3lB1SE3iRKq zZCaqZI0Oyq1bkCUOVFot7vkWieTATTmFLF9MNlvJisAIj4kZwjIeQSIz7TWWZwPuh7pIwFMXB2G 4NzxOGRWpVig1Q0DRifFMa0OhWurW0gAlbxHOzdbW_nsHEvNMiInzvadbrDMBfrgLaXBUA27uGnA ouV19hYuy041kOxN5RgB_oB1zhrxV3_NcWb_8SYZN_MaL3lDM7TvXGBxtliUPn71tqnBFb9MzVTS JA3dCPTiG_XNxMzEjT4mWxK_q.golyOgEy3Uo661ApBFnWaJ9wL9zq7OlJmGFZVBfFSydd1Ct0NU R.vZNeKz4DBtyOAnYetej.a5969.c16vu06JoIMibquzkdq82aFDcNnUwTeOPS8fcrpewbioxFSv I28LAkkPFoPX104y70VYO4U0Y.3dH189zqSNriwl2G7i63tfRCcMC141BSAdhFIUNqgMkAJ6ab20 0._xMgTyFX2CTvFwp0X3FS.ftcTsFjhx5XeomDLzHL_BIdUvVunfQsK1Ll8.igktXCgbs.KaB6gE aEOzGvirN_.eK.XnlyPMvHMefMp7W_SuUoGiP0EaZyFQQ_LhCY12mXmlTjp3GIWH97QORE8AUJLW dmscm_EgA4O.ZM2KnBnso4ikAjc.cQIq1IjbkVmcLwNKrgWh1XOHfQHJsF81K5uj.4FOcKTuHCeq BnzQ5ZI7iV4Gd31fy16Qbgvq8qUg66062hxIHxFvRRbKGGvmvB.wINdIEAmVa9y.Bn8izkcDZoA5 gW54dl.HdUN_UyMfSq33xnMJ7l2OwafsSIGMfAnS62F5Ypt9sS.H.juhgRt872L59IHOzteKCRjH JP83915TioUxySIzIdv_pSCX0wGwRmgavrpBHITUgU4jYT7UnQ2VM1EUx7VNBwb2VoLlDUrAIhjJ 3YBSCrDDpeZfovhGbuAG5bRqCufcFFnxIgJ6qRVHoIb13.C0dkVdaUYIV1LO40ycD4GoxOc7374b hL9EysbjrhEBX0mkjYWWHxthGaZ0VUd8FUoy99PV65knoh6GrIEr419XA150KlX4vStCNoQvoZpQ az3rZTZo6uoZ8bNGPDd.4B.SFQyUZhJI826TSk5JtGQXRAHvb19eOokl07xzfF8KhZp0lnioNCKB qWgZcAuD_aK17ez_2pbiINYUMomKWHuLTblkDMX88UoeuYVhryXkuCx7GawOdVHgvWsm4g2.WdhW sPWuf8UDxptseDpeFvTfpU_YeR2hoByFSVBWgLmt.zTjfbIq3LWKKZkrlzftaGWYLrOr6c8wQZ8j VPu_09XYanz6TqXA9noVDPt3sgOwvz2YfUmX_FfGmvtu71WbLfPYxsbLxT.FnNyvIP4bTEk8EY.b aGrtYZ3ZdWtOb2_1Z_F3w7utM2C7nZdsNxVGPUw84nactPZO7GvOojXBwW3PJHHZ9AWCYElDG1Md RAypJuIXDyYCCiC0voatpWB7WElMjq.naw0pu2bAafzUp6s26mfU100vq1a701Vq6diM_cOj0xec F0nn1cIlOxqQuykQV51FWxp5hRDGp3B3L0qxbH9s836UcrlS0SGGwLnv6zKAmP4o4FOEu_VKIIUd u4C.5zt5zXT9B_7Fs7SwnCcLTKjGdOlXA0gcPvjTYbl_cTCg7HUB6egMq85wHUPXV2k6kups6eyM uw1PGl_0qgY8PwRRlPqs_XvUtf49wDiMMNDfUiywNzX2QPEF.CKq.IaN2RBEIxipyB5Aa6llE5Gv j5btY50SmHRA_BwjH0V30.Ve3h8LLTqG77VvTa4N42D6o4jG8_fVY63YyJFmZ2vMViilYMrn9ZV5 OT2RcjdqMAg8gDJbKos9lM2r_4A7N1_xFgbI1QTV2TLyjHNVHrRALcsoFmgD1ER6QZELntn90Fix fBL4gn7PkKVobl7Vsjd99BvMBGG6Yy.DkQE4On8c6E4..SlzS7Nl0AeGfKjK.d2eJFErSeGTPNGW HK3Q8ONm9v15PeEd0aWvQ3y4r2DuEjZxg0IogTikInJ52oWrMBUaM4JQyOOvqUl5RynDQMc1kR.3 gDhgZuxmS0SzAFKDUMJYc8bEzUI4.wd31mQ0F7VVchFtoNT.cwnNJsjeuTnW88UwPsojTvBAb9aJ iTH2C2aEX_B_OMDN9ii3wTDn.spCORIruT1Zs_vM9ch1rQxMMd3WScJ_gk0PAMCsM.HdBwd9na0T 42bIHVb5DkMJI9YYA_XnFTx1yo7g9dME- X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic304.consmr.mail.ir2.yahoo.com with HTTP; Sat, 6 Mar 2021 17:45:24 +0000 Received: by smtp416.mail.ir2.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID a5c27c167ad5f336b76dd6250ed2d9ff; Sat, 06 Mar 2021 17:45:20 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH 21/22] Implement memory TUI window Date: Sat, 6 Mar 2021 18:44:49 +0100 Message-Id: <20210306174450.21718-2-ssbssa@yahoo.de> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210306174450.21718-1-ssbssa@yahoo.de> References: <20210306174450.21718-1-ssbssa@yahoo.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 210306-0, 03/06/2021), Outbound message X-Antivirus-Status: Clean X-Spam-Status: No, score=-10.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Mar 2021 17:45:27 -0000 --- gdb/python/lib/gdb/command/tui_windows.py | 57 +++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/gdb/python/lib/gdb/command/tui_windows.py b/gdb/python/lib/gdb/command/tui_windows.py index 92a7a2b2f01..45ba9502878 100644 --- a/gdb/python/lib/gdb/command/tui_windows.py +++ b/gdb/python/lib/gdb/command/tui_windows.py @@ -712,10 +712,65 @@ class FramesWindow(TextWindow): var_change_handler() +class MemoryWindow(TextWindow): + def __init__(self, win): + super(MemoryWindow, self).__init__(win, "memory") + self.pointer = 0 + + def refill(self): + if not self.win.is_valid(): + return + self.lines = [] + pointer = self.pointer + try: + mem = gdb.selected_inferior().read_memory(pointer, 16 * self.win.height) + ptr_hex_count = int(gdb.lookup_type("void").pointer().sizeof) * 2 + ofs = 0 + for h in range(self.win.height): + l = "0x%0*x " % (ptr_hex_count, pointer + ofs) + l += " ".join(["%02x%02x" % (ord(mem[ofs + i]), ord(mem[ofs + i + 1])) for i in range(0, 16, 2)]) + l += " " + l += "".join([self.printable(mem[ofs + i]) for i in range(16)]) + self.lines.append(l) + ofs += 16 + except: + self.lines = [str(sys.exc_info()[1])] + self.redraw() + + def vscroll(self, num): + self.pointer += num * 16 + if self.pointer < 0: + self.pointer = 0 + self.refill() + + def printable(self, c): + o = ord(c) + if o < 0x20 or o >= 0x7f: + return "." + return c + +class MemoryCommand(gdb.Command): + """Set start pointer for memory window.""" + + def __init__(self): + super(MemoryCommand, self).__init__("memory", gdb.COMMAND_TUI, gdb.COMPLETE_EXPRESSION) + + def invoke(self, arg, from_tty): + self.dont_repeat() + global custom_windows + if 'memory' not in custom_windows or not custom_windows['memory'].win.is_valid(): + gdb.execute("layout memory") + memory_window = custom_windows['memory'] + memory_window.pointer = long(gdb.parse_and_eval(arg)) + +MemoryCommand() + + gdb.register_window_type("locals", LocalsWindow) gdb.register_window_type("display", DisplayWindow) gdb.register_window_type("threads", ThreadsWindow) gdb.register_window_type("frames", FramesWindow) +gdb.register_window_type("memory", MemoryWindow) class CustomCommandWindow(TextWindow): @@ -778,6 +833,7 @@ gdb.execute("tui new-layout locals-frames {-horizontal src 2 {locals 2 frames 1} gdb.execute("tui new-layout display-frames {-horizontal src 2 {display 2 frames 1} 1} 2 status 0 cmd 1") gdb.execute("tui new-layout locals-display-frames {-horizontal src 2 {locals 2 display 2 frames 1} 1} 3 status 0 cmd 1") gdb.execute("tui new-layout threads-locals-frames-display {-horizontal src 3 {threads 1 locals 2} 1 {frames 1 display 2} 1} 3 status 0 cmd 1") +gdb.execute("tui new-layout memory memory 1 src 2 status 0 cmd 1") gdb.execute("tui new-layout all {-horizontal {{-horizontal asm 1 regs 1} 1 src 2} 3 {threads 1 locals 2} 1 {frames 1 display 2} 1} 3 status 0 cmd 1") gdb.execute("alias ll = layout locals") @@ -790,4 +846,5 @@ gdb.execute("alias llf = layout locals-frames") gdb.execute("alias ldf = layout display-frames") gdb.execute("alias lldf = layout locals-display-frames") gdb.execute("alias ltlfd = layout threads-locals-frames-display") +gdb.execute("alias lm = layout memory") gdb.execute("alias la = layout all") -- 2.30.1