From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id D775D385F009 for ; Mon, 27 May 2024 13:40:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D775D385F009 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D775D385F009 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716817214; cv=none; b=ilVKWiAq3ktMaV8JdB/xNAkTy05Dj2/VcIFuqzCUZNS4fIxbTn+aZY8OFq9yxaIZh63jRSpJPo6pSdzwn3Pk1xktkw2UiCTtOZ4fvFoXYYtHHtX35JwMY015kugET2m/MJCyC6UUdX7UdCn6r4awKB4r7dwIRqSFmyerdP4Wg0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716817214; c=relaxed/simple; bh=wokZrk9gDtuiRaFnwN3AAIFVdviHkP4TajRV9il4kXQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=LN/9H/fe+sOGPv3B0FhajFYhR7WtLzmMb3SVHNmxI9DiZ62RYZ+Dz9F3Rwjjreja4wGXI0AOLTRd7kGhC31bA1YpZUW6RCm+bl5IyYviCqY9zV2VExDcHPowd/JEjjcIV1WyBZm702sRCB0a09sRpphyVe1WkITqXQhmbil3fdw= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1716817212; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6VDvhq0YXn9Qe12DxB9smaflMn5sqFTXTeebXFg3PBo=; b=CskxpJh56BBfUc0Yc/SHln0Q5R98ttykFvZYXcOMn0lrASFdVWIAdgMet2OUgeNSshKdU6 YKBsDZxspSRl2qGvKwJkJ9Qk1Ut/VFMqn9zC+okcacqMCJVkYDrQ0dF/gAu8kw0eefbMXc mDXUNonB/uND/u61y8wgvmb7VtVJuFE= Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-657-sXy3tguKNgOQ4OoOpufb1A-1; Mon, 27 May 2024 09:40:11 -0400 X-MC-Unique: sXy3tguKNgOQ4OoOpufb1A-1 Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-65898ab58deso4175757a12.0 for ; Mon, 27 May 2024 06:40:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1716817210; x=1717422010; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6VDvhq0YXn9Qe12DxB9smaflMn5sqFTXTeebXFg3PBo=; b=lvYMZMmA0JaRA6aNoPOG70DqfpmMmfgmavzRL0NH4dUAhaUH2mGJphsntpT3pEhcxP TCqJb60ZRDyDr++DB0bw15QrNgQG+YeL8pH+TE0Ca8w5jL1Kpa7f1R7Mbw0zKhAc9T1j C/CTMSDzX54fx8fTucDcpQd3RcQWGrg1a4NzJARR7JN7hLFCL4uoz+PqYBxnoVXlmzvS gvWECQYr2uCBllr18aEE4DPmtfR5WthY74fyjbmY6siTlZGjlLyQa4XupYx9Z5mKO3wj OS/zp+pxkz3JaHZ9N6h4wzwNg4oODsxhGBfmBxGQ8867EsAI/t0c+pIxJiT3whaWmavN ianw== X-Forwarded-Encrypted: i=1; AJvYcCV+hsAyKET2RnavM06CO6zTLAgnE1C8jldtfgY6148oKqpsvg+s1N0Wqn+/ElFXfYINRNmx38dzMCSjuUQoWE9+15f7/ADBVlJnzg== X-Gm-Message-State: AOJu0YzrtymXTN5D/zd+oyRLOvNSs+1DkphQUeSr8WaoRiRefdKwANIr SxPRcSyOJ2v+YFExx9PO6xOAopcy0jgNnRZQhmgTEkMDXMyxEEtgNzgm5GZeR2Uqxp1U6ogDnbW pQVwY71bxHMcGyWAgnB0CKK/49n1+5etD2hhVOf37/iawC3+o1TmY3U8Nl/+sqxSYrm0= X-Received: by 2002:a05:6a21:3417:b0:1af:fcbf:df28 with SMTP id adf61e73a8af0-1b212f0e9cfmr10655164637.41.1716817209493; Mon, 27 May 2024 06:40:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IELOE/K4XmeZOjwKLR7NtRDDUisHsuUpl0nN9PMQLiP4Bnc+sPnq9Mo2/XHGDgqUChrBWlkgA== X-Received: by 2002:a05:6a21:3417:b0:1af:fcbf:df28 with SMTP id adf61e73a8af0-1b212f0e9cfmr10655141637.41.1716817209050; Mon, 27 May 2024 06:40:09 -0700 (PDT) Received: from ?IPV6:2804:14d:8084:92c5::1000? ([2804:14d:8084:92c5::1000]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-6f8fcbe9f6csm4878258b3a.127.2024.05.27.06.40.07 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 27 May 2024 06:40:08 -0700 (PDT) Message-ID: <0078b782-2da4-4b91-8f09-03643fb0c09b@redhat.com> Date: Mon, 27 May 2024 10:40:05 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 0/5] Modernize frame unwinders and add disable feature To: Guinevere Larsen , "gdb-patches@sourceware.org" References: <20240508145455.2550696-1-blarsen@redhat.com> From: Guinevere Larsen In-Reply-To: <20240508145455.2550696-1-blarsen@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: Now that we've branched, we should be safe to merge this change, so... ping :) -- Cheers, Guinevere Larsen She/Her/Hers On 5/8/24 11:54, Guinevere Larsen wrote: > This patch series started with me trying to make it easier to test GDB's > ability to unwind using CFI data, to improve a previous patch I sent to > the list. > > The first patch is just a minor change, storing frame unwinders in a > vector instead of through an unwinder table accessible using the > registry system. This isn't required (like I originally thought it was), > but it does make the whole system more readable in my opinion. > > Patch 3 has the real meat of the modernization, making GDB use > polymorphism to handle frame unwinders. This is slightly slower than > using function pointers, but much more readable in my opinion. > > As for the unwinder classes, they were chosen somewhat arbitrarily, > mostly based on where I found an unwinder and its name. > > Despite sending it now, I don't think this patch series should be merged before gdb 15 is branched. > > Changes for v3: > * Fixed Linaro CI issue in 32 bit arm > * Fixed the few comments from Eli. > * Documented addition of unwinder class in the oatch that adds it. > > Changes for v2: > * Added back the test that checks if GDB can handle a mix of CUs with > and without debuginfo in a single backtrace. > * Fixed all the nitpicks for style. > * Removed FRAME_UNWIND_ prefix when talking about classes > * Thoroughly changed the documentation, to be more readable > > > Guinevere Larsen (5): > gdb: make gdbarch store a vector of frame unwinders > gdb: add "unwinder class" to frame unwinders > gdb: Migrate frame unwinders to use C++ classes > gdb: introduce ability to disable frame unwinders > gdb/testsuite: Test for a backtrace through object without debuginfo > > gdb/NEWS | 11 + > gdb/aarch64-tdep.c | 12 +- > gdb/alpha-mdebug-tdep.c | 6 +- > gdb/alpha-tdep.c | 12 +- > gdb/amd64-obsd-tdep.c | 6 +- > gdb/amd64-tdep.c | 24 +- > gdb/amd64-windows-tdep.c | 6 +- > gdb/amdgpu-tdep.c | 7 +- > gdb/arc-tdep.c | 10 +- > gdb/arch-utils.c | 8 + > gdb/arm-tdep.c | 29 +- > gdb/avr-tdep.c | 5 +- > gdb/bfin-tdep.c | 6 +- > gdb/bpf-tdep.c | 6 +- > gdb/cris-tdep.c | 12 +- > gdb/csky-tdep.c | 10 +- > gdb/doc/gdb.texinfo | 26 +- > gdb/dummy-frame.c | 8 +- > gdb/dummy-frame.h | 2 +- > gdb/dwarf2/frame-tailcall.c | 6 +- > gdb/dwarf2/frame-tailcall.h | 2 +- > gdb/dwarf2/frame.c | 16 +- > gdb/frame-unwind.c | 335 ++++++++++++++---- > gdb/frame-unwind.h | 178 +++++++++- > gdb/frame.c | 28 +- > gdb/frv-linux-tdep.c | 6 +- > gdb/frv-tdep.c | 5 +- > gdb/ft32-tdep.c | 6 +- > gdb/gdbarch.c | 3 + > gdb/gdbarch.h | 5 + > gdb/gdbarch.py | 3 + > gdb/h8300-tdep.c | 5 +- > gdb/hppa-linux-tdep.c | 5 +- > gdb/hppa-tdep.c | 17 +- > gdb/i386-obsd-tdep.c | 5 +- > gdb/i386-tdep.c | 30 +- > gdb/ia64-tdep.c | 24 +- > gdb/inline-frame.c | 5 +- > gdb/inline-frame.h | 2 +- > gdb/iq2000-tdep.c | 5 +- > gdb/jit.c | 6 +- > gdb/lm32-tdep.c | 5 +- > gdb/loongarch-tdep.c | 7 +- > gdb/m32c-tdep.c | 5 +- > gdb/m32r-linux-tdep.c | 5 +- > gdb/m32r-tdep.c | 5 +- > gdb/m68hc11-tdep.c | 5 +- > gdb/m68k-linux-tdep.c | 6 +- > gdb/m68k-tdep.c | 6 +- > gdb/mep-tdep.c | 5 +- > gdb/microblaze-tdep.c | 6 +- > gdb/mips-sde-tdep.c | 6 +- > gdb/mips-tdep.c | 24 +- > gdb/mn10300-tdep.c | 5 +- > gdb/moxie-tdep.c | 5 +- > gdb/msp430-tdep.c | 5 +- > gdb/nds32-tdep.c | 14 +- > gdb/nios2-tdep.c | 12 +- > gdb/or1k-tdep.c | 7 +- > gdb/ppc-fbsd-tdep.c | 5 +- > gdb/ppc-obsd-tdep.c | 5 +- > gdb/python/py-unwind.c | 50 ++- > gdb/record-btrace.c | 12 +- > gdb/record.h | 4 +- > gdb/riscv-tdep.c | 8 +- > gdb/rl78-tdep.c | 6 +- > gdb/rs6000-aix-tdep.c | 5 +- > gdb/rs6000-tdep.c | 12 +- > gdb/rx-tdep.c | 10 +- > gdb/s12z-tdep.c | 7 +- > gdb/s390-linux-tdep.c | 5 +- > gdb/s390-tdep.c | 10 +- > gdb/sentinel-frame.c | 8 +- > gdb/sentinel-frame.h | 2 +- > gdb/sh-tdep.c | 11 +- > gdb/sparc-netbsd-tdep.c | 6 +- > gdb/sparc-obsd-tdep.c | 6 +- > gdb/sparc-sol2-tdep.c | 6 +- > gdb/sparc-tdep.c | 6 +- > gdb/sparc64-fbsd-tdep.c | 6 +- > gdb/sparc64-netbsd-tdep.c | 6 +- > gdb/sparc64-obsd-tdep.c | 12 +- > gdb/sparc64-sol2-tdep.c | 6 +- > gdb/sparc64-tdep.c | 6 +- > .../backtrace-through-cu-nodebug-caller.c | 28 ++ > .../backtrace-through-cu-nodebug-main.c | 32 ++ > .../gdb.base/backtrace-through-cu-nodebug.exp | 87 +++++ > gdb/testsuite/gdb.base/frame-unwind-disable.c | 21 ++ > .../gdb.base/frame-unwind-disable.exp | 114 ++++++ > gdb/tic6x-tdep.c | 12 +- > gdb/tilegx-tdep.c | 5 +- > gdb/tramp-frame.c | 58 ++- > gdb/v850-tdep.c | 5 +- > gdb/vax-tdep.c | 6 +- > gdb/windows-tdep.c | 33 +- > gdb/windows-tdep.h | 16 +- > gdb/xstormy16-tdep.c | 5 +- > gdb/xtensa-tdep.c | 7 +- > gdb/z80-tdep.c | 7 +- > 99 files changed, 1247 insertions(+), 445 deletions(-) > create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-caller.c > create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug-main.c > create mode 100644 gdb/testsuite/gdb.base/backtrace-through-cu-nodebug.exp > create mode 100644 gdb/testsuite/gdb.base/frame-unwind-disable.c > create mode 100644 gdb/testsuite/gdb.base/frame-unwind-disable.exp >