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.133.124]) by sourceware.org (Postfix) with ESMTPS id F41C43858D20 for ; Tue, 9 Apr 2024 17:23:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F41C43858D20 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 F41C43858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712683442; cv=none; b=WSCZb+F7LX1NQOPuLeEag8dyhlj8n8UqOr80ooOzXmtq37sT36L7mTdqlo96xjwnGVkOSBAWXa7w/aJY5vxCFrz6LtiXxUU36l/LHEErL6FmotWPn/gAnO9COGdN1N74pw2u5YB4WygXk3JVchUpqaew0tTUbmhsCLDGwgOBMz8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712683442; c=relaxed/simple; bh=SM2O1EfzljDv83dGayGpB4nCTKM7WyiRQAkvbfLX0g0=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=xGopAkAFtZwRNCetF1mnBbr/Hhaqs4n6ws1DP4psrMcXEL4WZxzhE3uNuBOi+fs7BPY7g8WIxi6/945Snd5wyxSKqCl5DfmNGX+tI0nPOnX8QU2mKLpNxe1b+U5VwUR4wWYOCV2Ct7JNG90eJjJvD9KKuqAR1W5Uk6OQb981hBE= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1712683438; 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=wXsw5qvllBb2vNvYwmYCeoaGTLummbPYfqlEVW2d/UY=; b=LjHOzOyE7y0EqE7kLTXdwTGr9HJVosWW209+17b/XQ4uswxdUILwqqVxHMvuE3GH6Ux5EV CA8CZS1UDw0/WUYHNbh8n5AhH5qryJfStzGCYWXpBdBz6AuMQbbBgt643Uh+urLPRXlp7R Bl9U50634h4CcSd1H5hUckTZWUVKWOw= Received: from mail-oi1-f200.google.com (mail-oi1-f200.google.com [209.85.167.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-76-x4n99MDuOvKOGrFmU5Eauw-1; Tue, 09 Apr 2024 13:23:57 -0400 X-MC-Unique: x4n99MDuOvKOGrFmU5Eauw-1 Received: by mail-oi1-f200.google.com with SMTP id 5614622812f47-3c5f808178dso1514662b6e.1 for ; Tue, 09 Apr 2024 10:23:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712683436; x=1713288236; 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=wXsw5qvllBb2vNvYwmYCeoaGTLummbPYfqlEVW2d/UY=; b=RGFd+ubBcfjsk60fUuCJ2LJxWHUpfRnQ6LPMLJwc62B/sARWny8OA8cLIeJsBk0k4e eKX83jYLnl9aYaKt7fUAeALnHnGCqtjfPOC7dSAUjh+/V25cQWHbNULdd74P1hKg5Pj9 j16J8JBFHd3b/K+amskQ2rFe0jZUY9N9VlPJ5RzdpNaqBAf9DobXvR3dxJpkxj3SOVe+ ChTOdFAsu81LFtSBWz9HdDUk0STVTw9jOB0u0xQtlKkjfHxI3EhPThuqBYN2n+JbL8gs QzRE7txGf5/rHj2FpfJ17wz0X2YiDd+ZGYmrvDTZhU2VuBqmzLI13O/RYFPrnIdFs3EQ dvug== X-Forwarded-Encrypted: i=1; AJvYcCVSeXX9Cp+AinTKs5wPrnTc5unOZfPs0Kj5Zm2kG/g2flXLsfIVrCtIspSuBH+rWic7lkrlavVyC0g2HnVuTyxveYm1rAGyCT35iA== X-Gm-Message-State: AOJu0Yz5DzvSEaoYuyDDTEyAXQ4cu1hW1w+p7qMcxuDau3ckOTS138Eg Q6wWh/ilaFCVNEj1oBFydNsPjC3bid33yHheIWtMRDroAjUy/btos0tqNDIwnPlBxSjOQShb4Dv 5aTuP6oeK+rCvx3ihz7RdtZvCgZNcECZvX0P91OkIOc+6W8l6lIuhydzqYq8= X-Received: by 2002:aca:1c0e:0:b0:3c5:f94e:2f6a with SMTP id c14-20020aca1c0e000000b003c5f94e2f6amr174741oic.2.1712683436351; Tue, 09 Apr 2024 10:23:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZavHNCwG4DnV3nRP8jQOvswQ2G9hdTc0+58BYooclQNT2wdL3DH29zxCLVMOLrXnIaTK6KA== X-Received: by 2002:aca:1c0e:0:b0:3c5:f94e:2f6a with SMTP id c14-20020aca1c0e000000b003c5f94e2f6amr174725oic.2.1712683435996; Tue, 09 Apr 2024 10:23:55 -0700 (PDT) Received: from ?IPV6:2804:14d:8084:92c5::1000? ([2804:14d:8084:92c5::1000]) by smtp.gmail.com with ESMTPSA id z14-20020ac86b8e000000b00434bbe9cb43sm1444942qts.7.2024.04.09.10.23.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Apr 2024 10:23:55 -0700 (PDT) Message-ID: Date: Tue, 9 Apr 2024 14:23:53 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 0/5] Modernize frame unwinders and add disable feature To: Guinevere Larsen , "gdb-patches@sourceware.org" References: <20240408201915.1482831-1-blarsen@redhat.com> From: Guinevere Larsen In-Reply-To: <20240408201915.1482831-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.7 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 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: For anyone reviewing this, I'm aware of the arm regressions (thanks again, linaro CI). I'm looking into them, but other reviews are still welcome! -- Cheers, Guinevere Larsen She/Her/Hers On 4/8/24 17:19, 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. I almost expect > some unwinders to be mis-categorized, but that should be easy to fix. > > The changes up to patch 3 have been tested with a try-branch, no > regressions as far as I could see. > > 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 | 7 + > 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 | 24 ++ > 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 | 56 ++- > 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, 1240 insertions(+), 444 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 >