From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 7E37C3858408 for ; Fri, 2 Dec 2022 18:00:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7E37C3858408 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=polymtl.ca Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=polymtl.ca Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 2B2I0rSJ020398 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 2 Dec 2022 13:00:58 -0500 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 2B2I0rSJ020398 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=polymtl.ca; s=default; t=1670004058; bh=lkyQGRgI0Hnvsz3mq1rFa0RM4tb0VrrE8w7qm5sh26s=; h=From:To:Cc:Subject:Date:From; b=XhmxqYjtke2WYwlXBU+uu3sfA6mPUDBikGM9eI2bG8mLSsdcc+VryQumSD7O80qC0 STdv4fE3pzI4h2YzZWP0XJoJF3tN1257qyNUlamMzGMgfVpojq9pvd23NDqgkEW+NG tsJpLJlNGhp324hIHcIkmBOniJ2OmCA0WrjX0kmc= Received: from simark.localdomain (unknown [217.28.27.60]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id AB4EF1E0CB; Fri, 2 Dec 2022 13:00:53 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 0/6] Make frame_info_ptr automatic Date: Fri, 2 Dec 2022 13:00:46 -0500 Message-Id: <20221202180052.212745-1-simon.marchi@polymtl.ca> X-Mailer: git-send-email 2.38.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Fri, 2 Dec 2022 18:00:53 +0000 X-Spam-Status: No, score=-3183.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This patch series makes frame_info_ptr automatic, in that it won't be needed to call prepare_reinflate and reinflate to benefit from reinflation. The current frame_info_ptr is a bit error-prone, as it's easy to call prepare_reinflate, reinflate, or both, when it would be needed. There are some complication with user-created frames, patches 2 and 3 deal with that. Patch 4 changes a lot of code back to using `frame_info *`, because it won't be possible to use the new frame_info_ptr on frames whose id is not computed yet. Finally, patches 5 and 6 do the changes to frame_info_ptr itself to make it automatic. Simon Marchi (6): gdb: add invalidate_selected_frame function gdb: make it possible to restore selected user-created frames gdb: make user-created frames reinflatable gdb: revert frame_unwind::this_id and callees to use `frame_info *` gdb: make frame_info_ptr grab frame level and id on construction gdb: make frame_info_ptr auto-reinflatable gdb/aarch64-fbsd-tdep.c | 2 +- gdb/aarch64-linux-tdep.c | 2 +- gdb/aarch64-tdep.c | 30 +-- gdb/alpha-linux-tdep.c | 2 +- gdb/alpha-mdebug-tdep.c | 16 +- gdb/alpha-netbsd-tdep.c | 2 +- gdb/alpha-obsd-tdep.c | 2 +- gdb/alpha-tdep.c | 18 +- gdb/alpha-tdep.h | 2 +- gdb/amd64-darwin-tdep.c | 2 +- gdb/amd64-fbsd-tdep.c | 2 +- gdb/amd64-linux-tdep.c | 6 +- gdb/amd64-netbsd-tdep.c | 4 +- gdb/amd64-obsd-tdep.c | 12 +- gdb/amd64-sol2-tdep.c | 2 +- gdb/amd64-tdep.c | 32 +-- gdb/amd64-tdep.h | 1 - gdb/amd64-windows-tdep.c | 10 +- gdb/arc-linux-tdep.c | 4 +- gdb/arc-tdep.c | 18 +- gdb/arc-tdep.h | 4 +- gdb/arm-fbsd-tdep.c | 2 +- gdb/arm-linux-tdep.c | 8 +- gdb/arm-obsd-tdep.c | 2 +- gdb/arm-tdep.c | 56 ++-- gdb/arm-tdep.h | 2 +- gdb/avr-tdep.c | 14 +- gdb/bfin-linux-tdep.c | 2 +- gdb/bfin-tdep.c | 12 +- gdb/blockframe.c | 4 +- gdb/bpf-tdep.c | 8 +- gdb/cris-tdep.c | 34 +-- gdb/csky-linux-tdep.c | 4 +- gdb/csky-tdep.c | 22 +- gdb/defs.h | 1 - gdb/dummy-frame.c | 8 +- gdb/dummy-frame.h | 2 +- gdb/dwarf2/expr.c | 12 +- gdb/dwarf2/expr.h | 6 +- gdb/dwarf2/frame-tailcall.c | 34 ++- gdb/dwarf2/frame-tailcall.h | 5 +- gdb/dwarf2/frame.c | 38 +-- gdb/dwarf2/frame.h | 12 +- gdb/dwarf2/loc.c | 10 +- gdb/dwarf2/loc.h | 2 +- gdb/findvar.c | 15 +- gdb/frame-base.c | 8 +- gdb/frame-base.h | 14 +- gdb/frame-info.c | 74 +++++- gdb/frame-info.h | 61 +++-- gdb/frame-unwind.c | 24 +- gdb/frame-unwind.h | 32 +-- gdb/frame.c | 249 ++++++++++-------- gdb/frame.h | 354 ++++++++++++++++++++++---- gdb/frv-linux-tdep.c | 10 +- gdb/frv-tdep.c | 10 +- gdb/ft32-tdep.c | 8 +- gdb/gdbarch-components.py | 8 +- gdb/gdbarch-gen.h | 16 +- gdb/gdbarch-selftests.c | 5 +- gdb/gdbarch.c | 8 +- gdb/h8300-tdep.c | 8 +- gdb/hppa-bsd-tdep.c | 2 +- gdb/hppa-linux-tdep.c | 8 +- gdb/hppa-netbsd-tdep.c | 4 +- gdb/hppa-tdep.c | 28 +- gdb/hppa-tdep.h | 6 +- gdb/i386-bsd-tdep.c | 2 +- gdb/i386-darwin-tdep.c | 4 +- gdb/i386-darwin-tdep.h | 2 +- gdb/i386-fbsd-tdep.c | 2 +- gdb/i386-gnu-tdep.c | 6 +- gdb/i386-linux-tdep.c | 10 +- gdb/i386-netbsd-tdep.c | 4 +- gdb/i386-nto-tdep.c | 4 +- gdb/i386-obsd-tdep.c | 10 +- gdb/i386-sol2-tdep.c | 2 +- gdb/i386-tdep.c | 46 ++-- gdb/i386-tdep.h | 6 +- gdb/i387-tdep.c | 2 +- gdb/i387-tdep.h | 2 +- gdb/ia64-libunwind-tdep.c | 12 +- gdb/ia64-libunwind-tdep.h | 11 +- gdb/ia64-tdep.c | 38 +-- gdb/infcmd.c | 2 - gdb/inline-frame.c | 12 +- gdb/inline-frame.h | 3 +- gdb/iq2000-tdep.c | 10 +- gdb/jit.c | 10 +- gdb/lm32-tdep.c | 8 +- gdb/loongarch-linux-tdep.c | 2 +- gdb/loongarch-tdep.c | 6 +- gdb/m32c-tdep.c | 8 +- gdb/m32r-linux-tdep.c | 14 +- gdb/m32r-tdep.c | 8 +- gdb/m68hc11-tdep.c | 12 +- gdb/m68k-linux-tdep.c | 12 +- gdb/m68k-tdep.c | 14 +- gdb/m68k-tdep.h | 2 - gdb/mep-tdep.c | 8 +- gdb/mi/mi-cmd-stack.c | 2 - gdb/microblaze-linux-tdep.c | 4 +- gdb/microblaze-tdep.c | 10 +- gdb/mips-fbsd-tdep.c | 4 +- gdb/mips-linux-tdep.c | 16 +- gdb/mips-sde-tdep.c | 12 +- gdb/mips-tdep.c | 68 ++--- gdb/mips64-obsd-tdep.c | 2 +- gdb/mn10300-linux-tdep.c | 4 +- gdb/mn10300-tdep.c | 10 +- gdb/moxie-tdep.c | 8 +- gdb/msp430-tdep.c | 8 +- gdb/nds32-tdep.c | 18 +- gdb/nios2-linux-tdep.c | 2 +- gdb/nios2-tdep.c | 22 +- gdb/observable.h | 1 + gdb/or1k-linux-tdep.c | 8 +- gdb/or1k-tdep.c | 10 +- gdb/ppc-fbsd-tdep.c | 8 +- gdb/ppc-linux-tdep.c | 10 +- gdb/ppc-netbsd-tdep.c | 2 +- gdb/ppc-obsd-tdep.c | 8 +- gdb/python/py-unwind.c | 10 +- gdb/record-btrace.c | 24 +- gdb/riscv-fbsd-tdep.c | 2 +- gdb/riscv-linux-tdep.c | 4 +- gdb/riscv-tdep.c | 8 +- gdb/rl78-tdep.c | 12 +- gdb/rs6000-aix-tdep.c | 8 +- gdb/rs6000-tdep.c | 26 +- gdb/rx-tdep.c | 16 +- gdb/s12z-tdep.c | 6 +- gdb/s390-linux-tdep.c | 8 +- gdb/s390-tdep.c | 41 ++- gdb/s390-tdep.h | 2 +- gdb/sentinel-frame.c | 6 +- gdb/sh-linux-tdep.c | 6 +- gdb/sh-tdep.c | 16 +- gdb/sol2-tdep.c | 2 +- gdb/sol2-tdep.h | 2 +- gdb/sparc-linux-tdep.c | 4 +- gdb/sparc-netbsd-tdep.c | 10 +- gdb/sparc-obsd-tdep.c | 8 +- gdb/sparc-sol2-tdep.c | 8 +- gdb/sparc-tdep.c | 16 +- gdb/sparc-tdep.h | 6 +- gdb/sparc64-fbsd-tdep.c | 8 +- gdb/sparc64-linux-tdep.c | 4 +- gdb/sparc64-netbsd-tdep.c | 10 +- gdb/sparc64-obsd-tdep.c | 16 +- gdb/sparc64-sol2-tdep.c | 8 +- gdb/sparc64-tdep.c | 10 +- gdb/sparc64-tdep.h | 3 +- gdb/stack.c | 16 -- gdb/std-regs.c | 8 +- gdb/symfile.h | 1 - gdb/testsuite/gdb.base/frame-view.c | 80 ++++++ gdb/testsuite/gdb.base/frame-view.exp | 107 ++++++++ gdb/testsuite/gdb.base/frame-view.py | 25 ++ gdb/tic6x-linux-tdep.c | 2 +- gdb/tic6x-tdep.c | 20 +- gdb/tilegx-linux-tdep.c | 2 +- gdb/tilegx-tdep.c | 10 +- gdb/trad-frame.c | 10 +- gdb/trad-frame.h | 9 +- gdb/tramp-frame.c | 10 +- gdb/tramp-frame.h | 5 +- gdb/user-regs.c | 4 +- gdb/user-regs.h | 16 +- gdb/v850-tdep.c | 10 +- gdb/value.c | 5 +- gdb/value.h | 28 +- gdb/vax-tdep.c | 12 +- gdb/xstormy16-tdep.c | 10 +- gdb/xtensa-tdep.c | 22 +- gdb/z80-tdep.c | 6 +- 176 files changed, 1628 insertions(+), 1056 deletions(-) create mode 100644 gdb/testsuite/gdb.base/frame-view.c create mode 100644 gdb/testsuite/gdb.base/frame-view.exp create mode 100644 gdb/testsuite/gdb.base/frame-view.py base-commit: ac57bf55472df186dc9fb63f7787f740d457f473 -- 2.38.1