From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id eP+YIf6ChmfU5g4AWB0awg (envelope-from ) for ; Tue, 14 Jan 2025 10:30:06 -0500 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KHv2LzPX; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 84ABC1E105; Tue, 14 Jan 2025 10:30:06 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.0 Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id E5E241E05C for ; Tue, 14 Jan 2025 10:30:02 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 85A33385B514 for ; Tue, 14 Jan 2025 15:30:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 85A33385B514 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KHv2LzPX Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 905EC385696F for ; Tue, 14 Jan 2025 15:29:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 905EC385696F 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 905EC385696F 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=1736868541; cv=none; b=BV6v212haPOqK014PoMpnHNI9WVR+1mzwUkM0qO+NA+c/Te4WTwMv3h49xsHVZjvHpvTHeQegE2TieQOkqwQ9Q8n9M6pGfzxYrxNM1vPk/CpAyClJET/Gq3EW0z/EfMJZQfiCmyz64Xlt4opz6hw7Cn1Qx4WgWenkVrEYXWofFY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736868541; c=relaxed/simple; bh=wahUHUKV4ws6biM+kY98Yllxt07vf9yOBUcFERsVU+o=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=oImcXG2rXGnIIFfVSMl5kQAq8APji6ORIWPcyQv5f7Q5bk27FTKSsjK6aoxBW8DIbe+DM3bgcIlkugtYoK7/brCYfiCj+7lOH9d25BsBmD9sNJxEkVDWzF3dBmMQGr6JqVA4vZu4DTYTy7CjrO6YywVFeYw5vhW/E7dD907DWko= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 905EC385696F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1736868541; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=B8XJBWpfq0f/TZEz3v64hHMlrKqy7ExQ4y8Hl+6FfgE=; b=KHv2LzPXVDWLvUrRo53pF/11iUihdcZLvdwTwD9c/cLw21ulJgqSdKLxeiEp4ACQkd2vPs S7PQyWlzmgGxDhkNnZvkBinKNQWLWD6KksRyM8KdwLbRyX9Vy8pWvMdP01q+kQgjXtUdtF FMVBb3pSnmcc5No06cVeYNZ44dp3m/E= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-118-oKZSfAMoNxmEQsTCFfvf8w-1; Tue, 14 Jan 2025 10:28:59 -0500 X-MC-Unique: oKZSfAMoNxmEQsTCFfvf8w-1 X-Mimecast-MFC-AGG-ID: oKZSfAMoNxmEQsTCFfvf8w Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-43646b453bcso29863665e9.3 for ; Tue, 14 Jan 2025 07:28:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736868538; x=1737473338; h=mime-version:message-id:date:references:in-reply-to:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=B8XJBWpfq0f/TZEz3v64hHMlrKqy7ExQ4y8Hl+6FfgE=; b=HZw10hVexBMn+AiNOzVzSdJC+iBZvJU41kPFq2MZDgiqLQCGpsBHIMCq8lh8IlRc6k uRJxxfI2rrHnY+W3aSfTYi6csSUVH6eBcgARiiE4ki6UOwOuO7vr1k9Rzko+w1WtmdnI TkJnoxj2mthTyJW+xARW25cn1HXeiYIhx7zjX2I2HC3LkB5Mv2/xKRMkPxLEwM93al+v Rwz/VXFuFMxwCb4hXhy3q3qSw7CmtbcAI2OqmzBX7IiaVWK9jYfGyhK0IfZYFfCXC1fe srRn/E5z2OYBY9tdDkXUDS+0WM8i4L0I5Wt5Krll8loNlq1pFKNNpMa+vKFA+TZrh0t+ uxFg== X-Forwarded-Encrypted: i=1; AJvYcCU0JiZH7/uMkPcN618oic2tkrnZGIBM/07jWihodTB7s6cbe78C8jjP99IRiIz7Yh3mk7DoOVwZt6ceNg==@sourceware.org X-Gm-Message-State: AOJu0YxtB1Cs5XcK+K3Sv29bKlUli2YF2MXSnnNVvSLP6TkxeMrzctKe Bk4R34q8Z/D1r58HO5jywEPsUno/bbB7Rw5/EuBFkVoaupItN78zTg6kgdVs4HT+70nvXmWh38R gFqrnrAYpLcLrGy0V1IPnp27yGhLi8g60Ag5X+md2LF8rewESJVuQX4/brjI= X-Gm-Gg: ASbGncuork2dBPE08Y+RUMVfjTKOkp0vhDu5k1RUMLpmVayDDgli0nTZglN6JHNd9ZU vycjtAAbTAji5z3pzysHQ7LOxXXBT3PFlueeiEtOBy/IEUCWcTtJWjd7fr6Z59fvHr95McUhGVc ErUwyyu4lzvfvYDVdGxItW3L2tWYgUQPcgEnGdFAwd4QB8NdNsEvxHPYetGVLx6glvMvoa/vhIH 2YNeVUTnvqj9tpxR8JVA21JuRpzaIV0MDKt7m/HkK5tew5L6sypGPV0oBQkT8hz1QzDhngyX7SE A5QYTQ== X-Received: by 2002:a05:6000:4611:b0:38a:624b:e619 with SMTP id ffacd0b85a97d-38a8730e03emr21335943f8f.43.1736868538249; Tue, 14 Jan 2025 07:28:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IEgOSkVBUkvHyIMjhYpHS5UW87clJ8iPbR74wKNU2UoKQsUr9wTuRr8murmE1A5RxZGAJysBQ== X-Received: by 2002:a05:6000:4611:b0:38a:624b:e619 with SMTP id ffacd0b85a97d-38a8730e03emr21335908f8f.43.1736868537586; Tue, 14 Jan 2025 07:28:57 -0800 (PST) Received: from localhost (44.226.159.143.dyn.plus.net. [143.159.226.44]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-436f9bc6b9bsm89276065e9.22.2025.01.14.07.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Jan 2025 07:28:57 -0800 (PST) From: Andrew Burgess To: Guinevere Larsen , gdb-patches@sourceware.org Cc: Guinevere Larsen , Eli Zaretskii , Thiago Jung Bauermann , Simon Marchi Subject: Re: [PATCH v8 2/5] gdb: add "unwinder class" to frame unwinders In-Reply-To: <20241210195115.3046370-3-guinevere@redhat.com> References: <20241210195115.3046370-1-guinevere@redhat.com> <20241210195115.3046370-3-guinevere@redhat.com> Date: Tue, 14 Jan 2025 15:28:56 +0000 Message-ID: <878qrdqurr.fsf@redhat.com> MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: vYLqCcZHSmTGXB0vEC4_Ykuxa9VBuwar_Y-8CX1sHHk_1736868539 X-Mimecast-Originator: redhat.com Content-Type: text/plain X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org Guinevere Larsen writes: > A future patch will add a way to disable certain unwinders based on > different characteristics. This patch aims to make it more convenient > to disable related unwinders in bulk, such as architecture specific > ones, by identifying all unwinders by which part of the code adds it. > The classes, and explanations, are as follows: > > * GDB: An internal unwinder, added by GDB core, such as the unwinder > for dummy frames; > * EXTENSION: Unwinders added by extension languages; > * DEBUGINFO: Unwinders installed by the debug info reader; > * ARCH: Unwinders installed by the architecture specific code. > > Reviewed-By: Eli Zaretskii > Reviewed-by: Thiago Jung Bauermann > Approved-By: Simon Marchi Approved-By: Andrew Burgess Thanks, Andrew > --- > gdb/NEWS | 4 ++++ > gdb/aarch64-tdep.c | 2 ++ > gdb/alpha-mdebug-tdep.c | 1 + > gdb/alpha-tdep.c | 2 ++ > gdb/amd64-obsd-tdep.c | 1 + > gdb/amd64-tdep.c | 4 ++++ > gdb/amd64-windows-tdep.c | 1 + > gdb/amdgpu-tdep.c | 1 + > gdb/arc-tdep.c | 2 ++ > gdb/arm-tdep.c | 5 +++++ > gdb/avr-tdep.c | 1 + > gdb/bfin-tdep.c | 1 + > gdb/bpf-tdep.c | 1 + > gdb/cris-tdep.c | 2 ++ > gdb/csky-tdep.c | 2 ++ > gdb/doc/gdb.texinfo | 15 ++++++++++++++- > gdb/dummy-frame.c | 1 + > gdb/dwarf2/frame-tailcall.c | 1 + > gdb/dwarf2/frame.c | 2 ++ > gdb/frame-unwind.c | 22 +++++++++++++++++++++- > gdb/frame-unwind.h | 19 +++++++++++++++++++ > gdb/frv-linux-tdep.c | 1 + > gdb/frv-tdep.c | 1 + > gdb/ft32-tdep.c | 1 + > gdb/h8300-tdep.c | 1 + > gdb/hppa-linux-tdep.c | 1 + > gdb/hppa-tdep.c | 3 +++ > gdb/i386-obsd-tdep.c | 1 + > gdb/i386-tdep.c | 5 +++++ > gdb/ia64-tdep.c | 4 ++++ > gdb/inline-frame.c | 1 + > gdb/iq2000-tdep.c | 1 + > gdb/jit.c | 1 + > gdb/lm32-tdep.c | 1 + > gdb/loongarch-tdep.c | 1 + > gdb/m32c-tdep.c | 1 + > gdb/m32r-linux-tdep.c | 1 + > gdb/m32r-tdep.c | 1 + > gdb/m68hc11-tdep.c | 1 + > gdb/m68k-linux-tdep.c | 1 + > gdb/m68k-tdep.c | 1 + > gdb/mep-tdep.c | 1 + > gdb/microblaze-tdep.c | 1 + > gdb/mips-sde-tdep.c | 1 + > gdb/mips-tdep.c | 4 ++++ > gdb/mn10300-tdep.c | 1 + > gdb/moxie-tdep.c | 1 + > gdb/msp430-tdep.c | 1 + > gdb/nds32-tdep.c | 2 ++ > gdb/or1k-tdep.c | 1 + > gdb/ppc-fbsd-tdep.c | 1 + > gdb/ppc-obsd-tdep.c | 1 + > gdb/python/py-unwind.c | 1 + > gdb/record-btrace.c | 2 ++ > gdb/riscv-tdep.c | 1 + > gdb/rl78-tdep.c | 1 + > gdb/rs6000-aix-tdep.c | 1 + > gdb/rs6000-tdep.c | 2 ++ > gdb/rx-tdep.c | 2 ++ > gdb/s12z-tdep.c | 1 + > gdb/s390-linux-tdep.c | 1 + > gdb/s390-tdep.c | 2 ++ > gdb/sentinel-frame.c | 1 + > gdb/sh-tdep.c | 2 ++ > gdb/sparc-netbsd-tdep.c | 1 + > gdb/sparc-obsd-tdep.c | 1 + > gdb/sparc-sol2-tdep.c | 1 + > gdb/sparc-tdep.c | 1 + > gdb/sparc64-fbsd-tdep.c | 1 + > gdb/sparc64-netbsd-tdep.c | 1 + > gdb/sparc64-obsd-tdep.c | 2 ++ > gdb/sparc64-sol2-tdep.c | 1 + > gdb/sparc64-tdep.c | 1 + > gdb/tic6x-tdep.c | 2 ++ > gdb/tilegx-tdep.c | 1 + > gdb/tramp-frame.c | 1 + > gdb/v850-tdep.c | 1 + > gdb/vax-tdep.c | 1 + > gdb/xstormy16-tdep.c | 1 + > gdb/xtensa-tdep.c | 1 + > gdb/z80-tdep.c | 1 + > 81 files changed, 168 insertions(+), 2 deletions(-) > > diff --git a/gdb/NEWS b/gdb/NEWS > index 361d7726ba0..245b355669a 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -164,6 +164,10 @@ maintenance print remote-registers > which registers were included in the last stop reply packet received by > GDB. > > +mainenance info frame-unwinders > + Add a CLASS column to the output. This class is a somewhat arbitrary > + grouping of unwinders, based on which area of GDB adds the unwinder. > + > show configuration > Now includes the version of GNU Readline library that GDB is using. > > diff --git a/gdb/aarch64-tdep.c b/gdb/aarch64-tdep.c > index bc8746e27f0..e5498089ca9 100644 > --- a/gdb/aarch64-tdep.c > +++ b/gdb/aarch64-tdep.c > @@ -1209,6 +1209,7 @@ static frame_unwind aarch64_prologue_unwind = > { > "aarch64 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > aarch64_prologue_frame_unwind_stop_reason, > aarch64_prologue_this_id, > aarch64_prologue_prev_register, > @@ -1304,6 +1305,7 @@ static frame_unwind aarch64_stub_unwind = > { > "aarch64 stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > aarch64_stub_frame_unwind_stop_reason, > aarch64_stub_this_id, > aarch64_prologue_prev_register, > diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c > index abded2ac192..b087afabae7 100644 > --- a/gdb/alpha-mdebug-tdep.c > +++ b/gdb/alpha-mdebug-tdep.c > @@ -334,6 +334,7 @@ static const struct frame_unwind alpha_mdebug_frame_unwind = > { > "alpha mdebug", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > alpha_mdebug_frame_this_id, > alpha_mdebug_frame_prev_register, > diff --git a/gdb/alpha-tdep.c b/gdb/alpha-tdep.c > index 301ab5cd01d..4ce45d29ade 100644 > --- a/gdb/alpha-tdep.c > +++ b/gdb/alpha-tdep.c > @@ -1011,6 +1011,7 @@ static const struct frame_unwind alpha_sigtramp_frame_unwind = > { > "alpha sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > alpha_sigtramp_frame_this_id, > alpha_sigtramp_frame_prev_register, > @@ -1430,6 +1431,7 @@ static const struct frame_unwind alpha_heuristic_frame_unwind = > { > "alpha prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > alpha_heuristic_frame_this_id, > alpha_heuristic_frame_prev_register, > diff --git a/gdb/amd64-obsd-tdep.c b/gdb/amd64-obsd-tdep.c > index 5b1e77b3e86..5359959e3bb 100644 > --- a/gdb/amd64-obsd-tdep.c > +++ b/gdb/amd64-obsd-tdep.c > @@ -409,6 +409,7 @@ static const struct frame_unwind amd64obsd_trapframe_unwind = > which really is not what we want here. */ > "amd64 openbsd trap", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > amd64obsd_trapframe_this_id, > amd64obsd_trapframe_prev_register, > diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c > index e03180b08af..f1cd1fdef09 100644 > --- a/gdb/amd64-tdep.c > +++ b/gdb/amd64-tdep.c > @@ -2670,6 +2670,7 @@ static const struct frame_unwind amd64_frame_unwind = > { > "amd64 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > amd64_frame_unwind_stop_reason, > amd64_frame_this_id, > amd64_frame_prev_register, > @@ -2816,6 +2817,7 @@ static const struct frame_unwind amd64_sigtramp_frame_unwind = > { > "amd64 sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > amd64_sigtramp_frame_unwind_stop_reason, > amd64_sigtramp_frame_this_id, > amd64_sigtramp_frame_prev_register, > @@ -3008,6 +3010,7 @@ static const struct frame_unwind amd64_epilogue_override_frame_unwind = > { > "amd64 epilogue override", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > amd64_epilogue_frame_unwind_stop_reason, > amd64_epilogue_frame_this_id, > amd64_frame_prev_register, > @@ -3019,6 +3022,7 @@ static const struct frame_unwind amd64_epilogue_frame_unwind = > { > "amd64 epilogue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > amd64_epilogue_frame_unwind_stop_reason, > amd64_epilogue_frame_this_id, > amd64_frame_prev_register, > diff --git a/gdb/amd64-windows-tdep.c b/gdb/amd64-windows-tdep.c > index e3e815e1123..ec32a57d7ea 100644 > --- a/gdb/amd64-windows-tdep.c > +++ b/gdb/amd64-windows-tdep.c > @@ -1188,6 +1188,7 @@ static const struct frame_unwind amd64_windows_frame_unwind = > { > "amd64 windows", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > &amd64_windows_frame_this_id, > &amd64_windows_frame_prev_register, > diff --git a/gdb/amdgpu-tdep.c b/gdb/amdgpu-tdep.c > index 6fe79732158..b8a5fd80fa0 100644 > --- a/gdb/amdgpu-tdep.c > +++ b/gdb/amdgpu-tdep.c > @@ -892,6 +892,7 @@ amdgpu_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache, > static const frame_unwind amdgpu_frame_unwind = { > "amdgpu", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > amdgpu_frame_this_id, > amdgpu_frame_prev_register, > diff --git a/gdb/arc-tdep.c b/gdb/arc-tdep.c > index 9adf2959cf3..a4ab78d8ade 100644 > --- a/gdb/arc-tdep.c > +++ b/gdb/arc-tdep.c > @@ -1913,6 +1913,7 @@ arc_sigtramp_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind arc_frame_unwind = { > "arc prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > arc_frame_this_id, > arc_frame_prev_register, > @@ -1929,6 +1930,7 @@ static const struct frame_unwind arc_frame_unwind = { > static const struct frame_unwind arc_sigtramp_frame_unwind = { > "arc sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > arc_sigtramp_frame_this_id, > arc_sigtramp_frame_prev_register, > diff --git a/gdb/arm-tdep.c b/gdb/arm-tdep.c > index c27b2a2e1af..657ecd57098 100644 > --- a/gdb/arm-tdep.c > +++ b/gdb/arm-tdep.c > @@ -2469,6 +2469,7 @@ arm_prologue_prev_register (const frame_info_ptr &this_frame, > static frame_unwind arm_prologue_unwind = { > "arm prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > arm_prologue_unwind_stop_reason, > arm_prologue_this_id, > arm_prologue_prev_register, > @@ -3188,6 +3189,7 @@ arm_exidx_unwind_sniffer (const struct frame_unwind *self, > struct frame_unwind arm_exidx_unwind = { > "arm exidx", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > arm_prologue_this_id, > arm_prologue_prev_register, > @@ -3298,6 +3300,7 @@ static const struct frame_unwind arm_epilogue_frame_unwind = > { > "arm epilogue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > arm_epilogue_frame_this_id, > arm_epilogue_frame_prev_register, > @@ -3427,6 +3430,7 @@ arm_stub_unwind_sniffer (const struct frame_unwind *self, > struct frame_unwind arm_stub_unwind = { > "arm stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > arm_stub_this_id, > arm_prologue_prev_register, > @@ -3953,6 +3957,7 @@ struct frame_unwind arm_m_exception_unwind = > { > "arm m exception lockup sec_fnc", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > arm_m_exception_frame_unwind_stop_reason, > arm_m_exception_this_id, > arm_m_exception_prev_register, > diff --git a/gdb/avr-tdep.c b/gdb/avr-tdep.c > index 9c97d3cf1c7..08b3cb146f4 100644 > --- a/gdb/avr-tdep.c > +++ b/gdb/avr-tdep.c > @@ -1158,6 +1158,7 @@ avr_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind avr_frame_unwind = { > "avr prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > avr_frame_this_id, > avr_frame_prev_register, > diff --git a/gdb/bfin-tdep.c b/gdb/bfin-tdep.c > index 1fa7a66d043..60838f0548e 100644 > --- a/gdb/bfin-tdep.c > +++ b/gdb/bfin-tdep.c > @@ -376,6 +376,7 @@ static const struct frame_unwind bfin_frame_unwind = > { > "bfin prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > bfin_frame_this_id, > bfin_frame_prev_register, > diff --git a/gdb/bpf-tdep.c b/gdb/bpf-tdep.c > index 79a442068b5..1f53d63c982 100644 > --- a/gdb/bpf-tdep.c > +++ b/gdb/bpf-tdep.c > @@ -185,6 +185,7 @@ static const struct frame_unwind bpf_frame_unwind = > { > "bpf prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > bpf_frame_unwind_stop_reason, > bpf_frame_this_id, > bpf_frame_prev_register, > diff --git a/gdb/cris-tdep.c b/gdb/cris-tdep.c > index 8562def71a6..4db2a234819 100644 > --- a/gdb/cris-tdep.c > +++ b/gdb/cris-tdep.c > @@ -439,6 +439,7 @@ static const struct frame_unwind cris_sigtramp_frame_unwind = > { > "cris sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > cris_sigtramp_frame_this_id, > cris_sigtramp_frame_prev_register, > @@ -904,6 +905,7 @@ static const struct frame_unwind cris_frame_unwind = > { > "cris prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > cris_frame_this_id, > cris_frame_prev_register, > diff --git a/gdb/csky-tdep.c b/gdb/csky-tdep.c > index d69b8e5a2ca..6e8426fe2d8 100644 > --- a/gdb/csky-tdep.c > +++ b/gdb/csky-tdep.c > @@ -2162,6 +2162,7 @@ csky_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind csky_unwind_cache = { > "cski prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > csky_frame_this_id, > csky_frame_prev_register, > @@ -2296,6 +2297,7 @@ csky_stub_prev_register (const frame_info_ptr &this_frame, > static frame_unwind csky_stub_unwind = { > "csky stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > csky_stub_this_id, > csky_stub_prev_register, > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo > index 85ac3d9aab6..115c1f46b7f 100644 > --- a/gdb/doc/gdb.texinfo > +++ b/gdb/doc/gdb.texinfo > @@ -42237,7 +42237,20 @@ architecture, then enabling this flag does not cause them to be used. > > @kindex maint info frame-unwinders > @item maint info frame-unwinders > -List the frame unwinders currently in effect, starting with the highest priority. > +List the frame unwinders currently in effect, starting with the highest > +priority. This also lists the unwinder class, which is mostly defined by > +which area of @value{GDBN} uses it. The currently available classes are: > + > +@table @samp > +@item GDB > +Internal unwinders, added by @value{GDBN} core. > +@item EXTENSION > +Unwinders added by extension languages. > +@item DEBUGINFO > +Unwinders installed by debug information readers. > +@item ARCH > +Unwinders installed by the architecture specific code. > +@end table > > @kindex maint set worker-threads > @kindex maint show worker-threads > diff --git a/gdb/dummy-frame.c b/gdb/dummy-frame.c > index 9f540d02f1a..e7de15b5c4d 100644 > --- a/gdb/dummy-frame.c > +++ b/gdb/dummy-frame.c > @@ -379,6 +379,7 @@ const struct frame_unwind dummy_frame_unwind = > { > "dummy", > DUMMY_FRAME, > + FRAME_UNWIND_GDB, > default_frame_unwind_stop_reason, > dummy_frame_this_id, > dummy_frame_prev_register, > diff --git a/gdb/dwarf2/frame-tailcall.c b/gdb/dwarf2/frame-tailcall.c > index 6ecf8a0b15d..50efd4eb5ff 100644 > --- a/gdb/dwarf2/frame-tailcall.c > +++ b/gdb/dwarf2/frame-tailcall.c > @@ -472,6 +472,7 @@ const struct frame_unwind dwarf2_tailcall_frame_unwind = > { > "dwarf2 tailcall", > TAILCALL_FRAME, > + FRAME_UNWIND_DEBUGINFO, > default_frame_unwind_stop_reason, > tailcall_frame_this_id, > tailcall_frame_prev_register, > diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c > index 6d8a4fb5a9e..492b6928c62 100644 > --- a/gdb/dwarf2/frame.c > +++ b/gdb/dwarf2/frame.c > @@ -1341,6 +1341,7 @@ static const struct frame_unwind dwarf2_frame_unwind = > { > "dwarf2", > NORMAL_FRAME, > + FRAME_UNWIND_DEBUGINFO, > dwarf2_frame_unwind_stop_reason, > dwarf2_frame_this_id, > dwarf2_frame_prev_register, > @@ -1353,6 +1354,7 @@ static const struct frame_unwind dwarf2_signal_frame_unwind = > { > "dwarf2 signal", > SIGTRAMP_FRAME, > + FRAME_UNWIND_DEBUGINFO, > dwarf2_frame_unwind_stop_reason, > dwarf2_frame_this_id, > dwarf2_frame_prev_register, > diff --git a/gdb/frame-unwind.c b/gdb/frame-unwind.c > index e61f6244913..d61f06d3305 100644 > --- a/gdb/frame-unwind.c > +++ b/gdb/frame-unwind.c > @@ -31,6 +31,16 @@ > #include "cli/cli-cmds.h" > #include "inferior.h" > > +/* Conversion list between the enum for frame_unwind_class and > + string. */ > +static const char * unwind_class_conversion[] = > +{ > + "GDB", > + "EXTENSION", > + "DEBUGINFO", > + "ARCH", > +}; > + > /* Default sniffers, that must always be the first in the unwinder list, > no matter the architecture. */ > static constexpr auto standard_unwinders = > @@ -72,6 +82,13 @@ get_frame_unwind_table (struct gdbarch *gdbarch) > return table; > } > > +static const char * > +frame_unwinder_class_str (frame_unwind_class uclass) > +{ > + gdb_assert (uclass < UNWIND_CLASS_NUMBER); > + return unwind_class_conversion[uclass]; > +} > + > void > frame_unwind_prepend_unwinder (struct gdbarch *gdbarch, > const struct frame_unwind *unwinder) > @@ -319,9 +336,10 @@ maintenance_info_frame_unwinders (const char *args, int from_tty) > std::vector *table = get_frame_unwind_table (gdbarch); > > ui_out *uiout = current_uiout; > - ui_out_emit_table table_emitter (uiout, 2, -1, "FrameUnwinders"); > + ui_out_emit_table table_emitter (uiout, 3, -1, "FrameUnwinders"); > uiout->table_header (27, ui_left, "name", "Name"); > uiout->table_header (25, ui_left, "type", "Type"); > + uiout->table_header (9, ui_left, "class", "Class"); > uiout->table_body (); > > for (auto unwinder : *table) > @@ -329,6 +347,8 @@ maintenance_info_frame_unwinders (const char *args, int from_tty) > ui_out_emit_list tuple_emitter (uiout, nullptr); > uiout->field_string ("name", unwinder->name); > uiout->field_string ("type", frame_type_str (unwinder->type)); > + uiout->field_string ("class", frame_unwinder_class_str ( > + unwinder->unwinder_class)); > uiout->text ("\n"); > } > } > diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h > index 53fcd6869e9..ef8bbe091b5 100644 > --- a/gdb/frame-unwind.h > +++ b/gdb/frame-unwind.h > @@ -156,12 +156,31 @@ typedef void (frame_dealloc_cache_ftype) (frame_info *self, > typedef gdbarch *(frame_prev_arch_ftype) (const frame_info_ptr &this_frame, > void **this_prologue_cache); > > +/* Unwinders are classified by what part of GDB code created it. */ > +enum frame_unwind_class > +{ > + /* This is mostly handled by core GDB code. */ > + FRAME_UNWIND_GDB, > + /* This unwinder was added by one of GDB's extension languages. */ > + FRAME_UNWIND_EXTENSION, > + /* The unwinder was created and mostly handles debug information. */ > + FRAME_UNWIND_DEBUGINFO, > + /* The unwinder was created and handles target dependent things. */ > + FRAME_UNWIND_ARCH, > + /* Meta enum value, to ensure we're always sent a valid unwinder class. */ > + UNWIND_CLASS_NUMBER, > +}; > + > struct frame_unwind > { > const char *name; > /* The frame's type. Should this instead be a collection of > predicates that test the frame for various attributes? */ > enum frame_type type; > + /* What kind of unwinder is this. It generally follows from where > + the unwinder was added or where it looks for information to do the > + unwinding. */ > + enum frame_unwind_class unwinder_class; > /* Should an attribute indicating the frame's address-in-block go > here? */ > frame_unwind_stop_reason_ftype *stop_reason; > diff --git a/gdb/frv-linux-tdep.c b/gdb/frv-linux-tdep.c > index 46424453ef0..7a7c4904475 100644 > --- a/gdb/frv-linux-tdep.c > +++ b/gdb/frv-linux-tdep.c > @@ -336,6 +336,7 @@ static const struct frame_unwind frv_linux_sigtramp_frame_unwind = > { > "frv linux sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > frv_linux_sigtramp_frame_this_id, > frv_linux_sigtramp_frame_prev_register, > diff --git a/gdb/frv-tdep.c b/gdb/frv-tdep.c > index 6ae3f0d0f55..a1845a25750 100644 > --- a/gdb/frv-tdep.c > +++ b/gdb/frv-tdep.c > @@ -1407,6 +1407,7 @@ frv_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind frv_frame_unwind = { > "frv prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > frv_frame_this_id, > frv_frame_prev_register, > diff --git a/gdb/ft32-tdep.c b/gdb/ft32-tdep.c > index 15a585a356e..e3827ad96e7 100644 > --- a/gdb/ft32-tdep.c > +++ b/gdb/ft32-tdep.c > @@ -529,6 +529,7 @@ static const struct frame_unwind ft32_frame_unwind = > { > "ft32 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ft32_frame_this_id, > ft32_frame_prev_register, > diff --git a/gdb/h8300-tdep.c b/gdb/h8300-tdep.c > index e91d664ffa3..5b4466ed316 100644 > --- a/gdb/h8300-tdep.c > +++ b/gdb/h8300-tdep.c > @@ -503,6 +503,7 @@ h8300_frame_prev_register (const frame_info_ptr &this_frame, void **this_cache, > static const struct frame_unwind h8300_frame_unwind = { > "h8300 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > h8300_frame_this_id, > h8300_frame_prev_register, > diff --git a/gdb/hppa-linux-tdep.c b/gdb/hppa-linux-tdep.c > index 8f73f8d2374..2619b60655a 100644 > --- a/gdb/hppa-linux-tdep.c > +++ b/gdb/hppa-linux-tdep.c > @@ -311,6 +311,7 @@ hppa_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind hppa_linux_sigtramp_frame_unwind = { > "hppa linux sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > hppa_linux_sigtramp_frame_this_id, > hppa_linux_sigtramp_frame_prev_register, > diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c > index ad93c2b2048..2447b87ebae 100644 > --- a/gdb/hppa-tdep.c > +++ b/gdb/hppa-tdep.c > @@ -2286,6 +2286,7 @@ static const struct frame_unwind hppa_frame_unwind = > { > "hppa unwind table", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > hppa_frame_this_id, > hppa_frame_prev_register, > @@ -2399,6 +2400,7 @@ static const struct frame_unwind hppa_fallback_frame_unwind = > { > "hppa prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > hppa_fallback_frame_this_id, > hppa_fallback_frame_prev_register, > @@ -2480,6 +2482,7 @@ hppa_stub_unwind_sniffer (const struct frame_unwind *self, > static const struct frame_unwind hppa_stub_frame_unwind = { > "hppa stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > hppa_stub_frame_this_id, > hppa_stub_frame_prev_register, > diff --git a/gdb/i386-obsd-tdep.c b/gdb/i386-obsd-tdep.c > index 3539c6599a0..1d2b1a09d16 100644 > --- a/gdb/i386-obsd-tdep.c > +++ b/gdb/i386-obsd-tdep.c > @@ -396,6 +396,7 @@ static const struct frame_unwind i386obsd_trapframe_unwind = { > frame, but SIGTRAMP_FRAME would print , > which really is not what we want here. */ > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > i386obsd_trapframe_this_id, > i386obsd_trapframe_prev_register, > diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c > index a552a2bee8f..6defd225bdb 100644 > --- a/gdb/i386-tdep.c > +++ b/gdb/i386-tdep.c > @@ -2143,6 +2143,7 @@ static const struct frame_unwind i386_frame_unwind = > { > "i386 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > i386_frame_unwind_stop_reason, > i386_frame_this_id, > i386_frame_prev_register, > @@ -2298,6 +2299,7 @@ static const struct frame_unwind i386_epilogue_override_frame_unwind = > { > "i386 epilogue override", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > i386_epilogue_frame_unwind_stop_reason, > i386_epilogue_frame_this_id, > i386_epilogue_frame_prev_register, > @@ -2309,6 +2311,7 @@ static const struct frame_unwind i386_epilogue_frame_unwind = > { > "i386 epilogue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > i386_epilogue_frame_unwind_stop_reason, > i386_epilogue_frame_this_id, > i386_epilogue_frame_prev_register, > @@ -2391,6 +2394,7 @@ static const struct frame_unwind i386_stack_tramp_frame_unwind = > { > "i386 stack tramp", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > i386_epilogue_frame_unwind_stop_reason, > i386_epilogue_frame_this_id, > i386_epilogue_frame_prev_register, > @@ -2540,6 +2544,7 @@ static const struct frame_unwind i386_sigtramp_frame_unwind = > { > "i386 sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > i386_sigtramp_frame_unwind_stop_reason, > i386_sigtramp_frame_this_id, > i386_sigtramp_frame_prev_register, > diff --git a/gdb/ia64-tdep.c b/gdb/ia64-tdep.c > index b0c1ad3d0ab..b10cc251bf1 100644 > --- a/gdb/ia64-tdep.c > +++ b/gdb/ia64-tdep.c > @@ -2166,6 +2166,7 @@ static const struct frame_unwind ia64_frame_unwind = > { > "ia64 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > &ia64_frame_this_id, > &ia64_frame_prev_register, > @@ -2355,6 +2356,7 @@ static const struct frame_unwind ia64_sigtramp_frame_unwind = > { > "ia64 sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ia64_sigtramp_frame_this_id, > ia64_sigtramp_frame_prev_register, > @@ -3015,6 +3017,7 @@ static const struct frame_unwind ia64_libunwind_frame_unwind = > { > "ia64 libunwind", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ia64_libunwind_frame_this_id, > ia64_libunwind_frame_prev_register, > @@ -3104,6 +3107,7 @@ static const struct frame_unwind ia64_libunwind_sigtramp_frame_unwind = > { > "ia64 libunwind sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ia64_libunwind_sigtramp_frame_this_id, > ia64_libunwind_sigtramp_frame_prev_register, > diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c > index 759c526a7c2..8b3057159dc 100644 > --- a/gdb/inline-frame.c > +++ b/gdb/inline-frame.c > @@ -272,6 +272,7 @@ inline_frame_sniffer (const struct frame_unwind *self, > const struct frame_unwind inline_frame_unwind = { > "inline", > INLINE_FRAME, > + FRAME_UNWIND_GDB, > default_frame_unwind_stop_reason, > inline_frame_this_id, > inline_frame_prev_register, > diff --git a/gdb/iq2000-tdep.c b/gdb/iq2000-tdep.c > index 5776c66f78a..e0db1b0de4e 100644 > --- a/gdb/iq2000-tdep.c > +++ b/gdb/iq2000-tdep.c > @@ -427,6 +427,7 @@ iq2000_frame_this_id (const frame_info_ptr &this_frame, void **this_cache, > static const struct frame_unwind iq2000_frame_unwind = { > "iq2000 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > iq2000_frame_this_id, > iq2000_frame_prev_register, > diff --git a/gdb/jit.c b/gdb/jit.c > index 77d41bf86ba..33a19d2ba4d 100644 > --- a/gdb/jit.c > +++ b/gdb/jit.c > @@ -1112,6 +1112,7 @@ static const struct frame_unwind jit_frame_unwind = > { > "jit", > NORMAL_FRAME, > + FRAME_UNWIND_EXTENSION, > default_frame_unwind_stop_reason, > jit_frame_this_id, > jit_frame_prev_register, > diff --git a/gdb/lm32-tdep.c b/gdb/lm32-tdep.c > index 98a07281051..4eb5f2ad426 100644 > --- a/gdb/lm32-tdep.c > +++ b/gdb/lm32-tdep.c > @@ -450,6 +450,7 @@ lm32_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind lm32_frame_unwind = { > "lm32 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > lm32_frame_this_id, > lm32_frame_prev_register, > diff --git a/gdb/loongarch-tdep.c b/gdb/loongarch-tdep.c > index e91a69b73b9..4f00deb677e 100644 > --- a/gdb/loongarch-tdep.c > +++ b/gdb/loongarch-tdep.c > @@ -457,6 +457,7 @@ loongarch_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind loongarch_frame_unwind = { > "loongarch prologue", > /*.type =*/NORMAL_FRAME, > + /*.unwinder_class=*/FRAME_UNWIND_ARCH, > /*.stop_reason =*/default_frame_unwind_stop_reason, > /*.this_id =*/loongarch_frame_this_id, > /*.prev_register =*/loongarch_frame_prev_register, > diff --git a/gdb/m32c-tdep.c b/gdb/m32c-tdep.c > index 28dfb2fb7c6..bce12c5fae7 100644 > --- a/gdb/m32c-tdep.c > +++ b/gdb/m32c-tdep.c > @@ -1958,6 +1958,7 @@ m32c_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind m32c_unwind = { > "m32c prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m32c_this_id, > m32c_prev_register, > diff --git a/gdb/m32r-linux-tdep.c b/gdb/m32r-linux-tdep.c > index 8eea6620df9..11a150a92b8 100644 > --- a/gdb/m32r-linux-tdep.c > +++ b/gdb/m32r-linux-tdep.c > @@ -304,6 +304,7 @@ m32r_linux_sigtramp_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind m32r_linux_sigtramp_frame_unwind = { > "m32r linux sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m32r_linux_sigtramp_frame_this_id, > m32r_linux_sigtramp_frame_prev_register, > diff --git a/gdb/m32r-tdep.c b/gdb/m32r-tdep.c > index c6428f6db6f..aadb8c00d86 100644 > --- a/gdb/m32r-tdep.c > +++ b/gdb/m32r-tdep.c > @@ -834,6 +834,7 @@ m32r_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind m32r_frame_unwind = { > "m32r prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m32r_frame_this_id, > m32r_frame_prev_register, > diff --git a/gdb/m68hc11-tdep.c b/gdb/m68hc11-tdep.c > index 12cd0efbbe7..e14ac622fda 100644 > --- a/gdb/m68hc11-tdep.c > +++ b/gdb/m68hc11-tdep.c > @@ -936,6 +936,7 @@ m68hc11_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind m68hc11_frame_unwind = { > "m68hc11 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m68hc11_frame_this_id, > m68hc11_frame_prev_register, > diff --git a/gdb/m68k-linux-tdep.c b/gdb/m68k-linux-tdep.c > index 7250ce09826..7cca4f86394 100644 > --- a/gdb/m68k-linux-tdep.c > +++ b/gdb/m68k-linux-tdep.c > @@ -318,6 +318,7 @@ static const struct frame_unwind m68k_linux_sigtramp_frame_unwind = > { > "m68k linux sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m68k_linux_sigtramp_frame_this_id, > m68k_linux_sigtramp_frame_prev_register, > diff --git a/gdb/m68k-tdep.c b/gdb/m68k-tdep.c > index 375d5e6e54c..2ff507e7816 100644 > --- a/gdb/m68k-tdep.c > +++ b/gdb/m68k-tdep.c > @@ -1011,6 +1011,7 @@ static const struct frame_unwind m68k_frame_unwind = > { > "m68k prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > m68k_frame_this_id, > m68k_frame_prev_register, > diff --git a/gdb/mep-tdep.c b/gdb/mep-tdep.c > index a4ef343f9dc..7dd6371f995 100644 > --- a/gdb/mep-tdep.c > +++ b/gdb/mep-tdep.c > @@ -2064,6 +2064,7 @@ mep_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind mep_frame_unwind = { > "mep prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mep_frame_this_id, > mep_frame_prev_register, > diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c > index 609c665f2af..7a56471a4dd 100644 > --- a/gdb/microblaze-tdep.c > +++ b/gdb/microblaze-tdep.c > @@ -482,6 +482,7 @@ static const struct frame_unwind microblaze_frame_unwind = > { > "microblaze prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > microblaze_frame_this_id, > microblaze_frame_prev_register, > diff --git a/gdb/mips-sde-tdep.c b/gdb/mips-sde-tdep.c > index 90988cdfdac..18cb9485639 100644 > --- a/gdb/mips-sde-tdep.c > +++ b/gdb/mips-sde-tdep.c > @@ -164,6 +164,7 @@ static const struct frame_unwind mips_sde_frame_unwind = > { > "mips sde sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mips_sde_frame_this_id, > mips_sde_frame_prev_register, > diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c > index c00efbd02ad..f5eb2093c8b 100644 > --- a/gdb/mips-tdep.c > +++ b/gdb/mips-tdep.c > @@ -2929,6 +2929,7 @@ static const struct frame_unwind mips_insn16_frame_unwind = > { > "mips insn16 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mips_insn16_frame_this_id, > mips_insn16_frame_prev_register, > @@ -3365,6 +3366,7 @@ static const struct frame_unwind mips_micro_frame_unwind = > { > "mips micro prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mips_micro_frame_this_id, > mips_micro_frame_prev_register, > @@ -3744,6 +3746,7 @@ static const struct frame_unwind mips_insn32_frame_unwind = > { > "mips insn32 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mips_insn32_frame_this_id, > mips_insn32_frame_prev_register, > @@ -3860,6 +3863,7 @@ static const struct frame_unwind mips_stub_frame_unwind = > { > "mips stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mips_stub_frame_this_id, > mips_stub_frame_prev_register, > diff --git a/gdb/mn10300-tdep.c b/gdb/mn10300-tdep.c > index d44eebfcb17..565300afd3c 100644 > --- a/gdb/mn10300-tdep.c > +++ b/gdb/mn10300-tdep.c > @@ -1130,6 +1130,7 @@ mn10300_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind mn10300_frame_unwind = { > "mn10300 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > mn10300_frame_this_id, > mn10300_frame_prev_register, > diff --git a/gdb/moxie-tdep.c b/gdb/moxie-tdep.c > index 29ad1f2bb2e..82d3478ed68 100644 > --- a/gdb/moxie-tdep.c > +++ b/gdb/moxie-tdep.c > @@ -588,6 +588,7 @@ moxie_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind moxie_frame_unwind = { > "moxie prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > moxie_frame_this_id, > moxie_frame_prev_register, > diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c > index 41a8f990a16..6d7fee230c1 100644 > --- a/gdb/msp430-tdep.c > +++ b/gdb/msp430-tdep.c > @@ -545,6 +545,7 @@ msp430_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind msp430_unwind = { > "msp430 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > msp430_this_id, > msp430_prev_register, > diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c > index 8ad51d0798b..910a6f7a1d0 100644 > --- a/gdb/nds32-tdep.c > +++ b/gdb/nds32-tdep.c > @@ -992,6 +992,7 @@ static const struct frame_unwind nds32_frame_unwind = > { > "nds32 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > nds32_frame_this_id, > nds32_frame_prev_register, > @@ -1376,6 +1377,7 @@ static const struct frame_unwind nds32_epilogue_frame_unwind = > { > "nds32 epilogue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > nds32_epilogue_frame_this_id, > nds32_epilogue_frame_prev_register, > diff --git a/gdb/or1k-tdep.c b/gdb/or1k-tdep.c > index 290f748cc56..6e0466c3408 100644 > --- a/gdb/or1k-tdep.c > +++ b/gdb/or1k-tdep.c > @@ -1128,6 +1128,7 @@ or1k_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind or1k_frame_unwind = { > "or1k prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > or1k_frame_this_id, > or1k_frame_prev_register, > diff --git a/gdb/ppc-fbsd-tdep.c b/gdb/ppc-fbsd-tdep.c > index 3f0f93f1ac0..12eb396a0e3 100644 > --- a/gdb/ppc-fbsd-tdep.c > +++ b/gdb/ppc-fbsd-tdep.c > @@ -265,6 +265,7 @@ ppcfbsd_sigtramp_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind ppcfbsd_sigtramp_frame_unwind = { > "ppc freebsd sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ppcfbsd_sigtramp_frame_this_id, > ppcfbsd_sigtramp_frame_prev_register, > diff --git a/gdb/ppc-obsd-tdep.c b/gdb/ppc-obsd-tdep.c > index 1bd79b3b3e1..ceb8b5d85db 100644 > --- a/gdb/ppc-obsd-tdep.c > +++ b/gdb/ppc-obsd-tdep.c > @@ -234,6 +234,7 @@ ppcobsd_sigtramp_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind ppcobsd_sigtramp_frame_unwind = { > "ppc openbsd sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > ppcobsd_sigtramp_frame_this_id, > ppcobsd_sigtramp_frame_prev_register, > diff --git a/gdb/python/py-unwind.c b/gdb/python/py-unwind.c > index 68deaf98d81..ab32f5057f9 100644 > --- a/gdb/python/py-unwind.c > +++ b/gdb/python/py-unwind.c > @@ -984,6 +984,7 @@ pyuw_on_new_gdbarch (gdbarch *newarch) > > unwinder->name = "python"; > unwinder->type = NORMAL_FRAME; > + unwinder->unwinder_class = FRAME_UNWIND_EXTENSION; > unwinder->stop_reason = default_frame_unwind_stop_reason; > unwinder->this_id = pyuw_this_id; > unwinder->prev_register = pyuw_prev_register; > diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c > index bf4a368f4fe..47f2a7f6510 100644 > --- a/gdb/record-btrace.c > +++ b/gdb/record-btrace.c > @@ -1944,6 +1944,7 @@ const struct frame_unwind record_btrace_frame_unwind = > { > "record-btrace", > NORMAL_FRAME, > + FRAME_UNWIND_GDB, > record_btrace_frame_unwind_stop_reason, > record_btrace_frame_this_id, > record_btrace_frame_prev_register, > @@ -1956,6 +1957,7 @@ const struct frame_unwind record_btrace_tailcall_frame_unwind = > { > "record-btrace tailcall", > TAILCALL_FRAME, > + FRAME_UNWIND_GDB, > record_btrace_frame_unwind_stop_reason, > record_btrace_frame_this_id, > record_btrace_frame_prev_register, > diff --git a/gdb/riscv-tdep.c b/gdb/riscv-tdep.c > index 932708ca4e9..2a292cc4ff8 100644 > --- a/gdb/riscv-tdep.c > +++ b/gdb/riscv-tdep.c > @@ -3904,6 +3904,7 @@ static const struct frame_unwind riscv_frame_unwind = > { > /*.name =*/ "riscv prologue", > /*.type =*/ NORMAL_FRAME, > + /*.unwinder_class=*/FRAME_UNWIND_ARCH, > /*.stop_reason =*/ default_frame_unwind_stop_reason, > /*.this_id =*/ riscv_frame_this_id, > /*.prev_register =*/ riscv_frame_prev_register, > diff --git a/gdb/rl78-tdep.c b/gdb/rl78-tdep.c > index 46a7ee9c3d4..0fcd5f9f1f3 100644 > --- a/gdb/rl78-tdep.c > +++ b/gdb/rl78-tdep.c > @@ -1187,6 +1187,7 @@ static const struct frame_unwind rl78_unwind = > { > "rl78 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > rl78_this_id, > rl78_prev_register, > diff --git a/gdb/rs6000-aix-tdep.c b/gdb/rs6000-aix-tdep.c > index 3cc0232a691..f1c31ae27ea 100644 > --- a/gdb/rs6000-aix-tdep.c > +++ b/gdb/rs6000-aix-tdep.c > @@ -331,6 +331,7 @@ aix_sighandle_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind aix_sighandle_frame_unwind = { > "rs6000 aix sighandle", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > aix_sighandle_frame_this_id, > aix_sighandle_frame_prev_register, > diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c > index a36c337c625..e3bffa8f33d 100644 > --- a/gdb/rs6000-tdep.c > +++ b/gdb/rs6000-tdep.c > @@ -3841,6 +3841,7 @@ static const struct frame_unwind rs6000_frame_unwind = > { > "rs6000 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > rs6000_frame_this_id, > rs6000_frame_prev_register, > @@ -3982,6 +3983,7 @@ static const struct frame_unwind rs6000_epilogue_frame_unwind = > { > "rs6000 epilogue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > rs6000_epilogue_frame_this_id, rs6000_epilogue_frame_prev_register, > NULL, > diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c > index 6b12fe0a314..6cb74c23a3c 100644 > --- a/gdb/rx-tdep.c > +++ b/gdb/rx-tdep.c > @@ -634,6 +634,7 @@ rx_exception_sniffer (const struct frame_unwind *self, > static const struct frame_unwind rx_frame_unwind = { > "rx prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > rx_frame_this_id, > rx_frame_prev_register, > @@ -648,6 +649,7 @@ static const struct frame_unwind rx_exception_unwind = { > "rx exception", > /* SIGTRAMP_FRAME could be used here, but backtraces are less informative. */ > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > rx_frame_this_id, > rx_frame_prev_register, > diff --git a/gdb/s12z-tdep.c b/gdb/s12z-tdep.c > index c24c75665ed..7fa73cf6b8c 100644 > --- a/gdb/s12z-tdep.c > +++ b/gdb/s12z-tdep.c > @@ -444,6 +444,7 @@ s12z_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind s12z_frame_unwind = { > "s12z prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > s12z_frame_this_id, > s12z_frame_prev_register, > diff --git a/gdb/s390-linux-tdep.c b/gdb/s390-linux-tdep.c > index bc1db550d2e..556fad64926 100644 > --- a/gdb/s390-linux-tdep.c > +++ b/gdb/s390-linux-tdep.c > @@ -544,6 +544,7 @@ s390_sigtramp_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind s390_sigtramp_frame_unwind = { > "s390 linux sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > s390_sigtramp_frame_this_id, > s390_sigtramp_frame_prev_register, > diff --git a/gdb/s390-tdep.c b/gdb/s390-tdep.c > index be176f07c6f..f0af9a8796d 100644 > --- a/gdb/s390-tdep.c > +++ b/gdb/s390-tdep.c > @@ -2649,6 +2649,7 @@ s390_frame_prev_register (const frame_info_ptr &this_frame, > static const struct frame_unwind s390_frame_unwind = { > "s390 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > s390_frame_this_id, > s390_frame_prev_register, > @@ -2743,6 +2744,7 @@ s390_stub_frame_sniffer (const struct frame_unwind *self, > static const struct frame_unwind s390_stub_frame_unwind = { > "s390 stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > s390_stub_frame_this_id, > s390_stub_frame_prev_register, > diff --git a/gdb/sentinel-frame.c b/gdb/sentinel-frame.c > index 4eaeae0d254..9fe4036dbbe 100644 > --- a/gdb/sentinel-frame.c > +++ b/gdb/sentinel-frame.c > @@ -82,6 +82,7 @@ const struct frame_unwind sentinel_frame_unwind = > { > "sentinel", > SENTINEL_FRAME, > + FRAME_UNWIND_GDB, > default_frame_unwind_stop_reason, > sentinel_frame_this_id, > sentinel_frame_prev_register, > diff --git a/gdb/sh-tdep.c b/gdb/sh-tdep.c > index d211265c15f..c8809e3018e 100644 > --- a/gdb/sh-tdep.c > +++ b/gdb/sh-tdep.c > @@ -1953,6 +1953,7 @@ sh_frame_this_id (const frame_info_ptr &this_frame, void **this_cache, > static const struct frame_unwind sh_frame_unwind = { > "sh prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sh_frame_this_id, > sh_frame_prev_register, > @@ -2020,6 +2021,7 @@ static const struct frame_unwind sh_stub_unwind = > { > "sh stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sh_stub_this_id, > sh_frame_prev_register, > diff --git a/gdb/sparc-netbsd-tdep.c b/gdb/sparc-netbsd-tdep.c > index fc22e66826f..5b3dd067375 100644 > --- a/gdb/sparc-netbsd-tdep.c > +++ b/gdb/sparc-netbsd-tdep.c > @@ -252,6 +252,7 @@ static const struct frame_unwind sparc32nbsd_sigcontext_frame_unwind = > { > "sparc32 netbsd sigcontext", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc32nbsd_sigcontext_frame_this_id, > sparc32nbsd_sigcontext_frame_prev_register, > diff --git a/gdb/sparc-obsd-tdep.c b/gdb/sparc-obsd-tdep.c > index 3182a7778d3..049c315fa14 100644 > --- a/gdb/sparc-obsd-tdep.c > +++ b/gdb/sparc-obsd-tdep.c > @@ -138,6 +138,7 @@ static const struct frame_unwind sparc32obsd_sigtramp_frame_unwind = > { > "sparc32 openbsd sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc32obsd_sigtramp_frame_this_id, > sparc32obsd_sigtramp_frame_prev_register, > diff --git a/gdb/sparc-sol2-tdep.c b/gdb/sparc-sol2-tdep.c > index aea3766d9b5..bb9c8a549b1 100644 > --- a/gdb/sparc-sol2-tdep.c > +++ b/gdb/sparc-sol2-tdep.c > @@ -183,6 +183,7 @@ static const struct frame_unwind sparc32_sol2_sigtramp_frame_unwind = > { > "sparc32 solaris sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc32_sol2_sigtramp_frame_this_id, > sparc32_sol2_sigtramp_frame_prev_register, > diff --git a/gdb/sparc-tdep.c b/gdb/sparc-tdep.c > index b48b130c0c5..d69ab87be09 100644 > --- a/gdb/sparc-tdep.c > +++ b/gdb/sparc-tdep.c > @@ -1350,6 +1350,7 @@ static const struct frame_unwind sparc32_frame_unwind = > { > "sparc32 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc32_frame_this_id, > sparc32_frame_prev_register, > diff --git a/gdb/sparc64-fbsd-tdep.c b/gdb/sparc64-fbsd-tdep.c > index a30c7c448e5..1d4c075a961 100644 > --- a/gdb/sparc64-fbsd-tdep.c > +++ b/gdb/sparc64-fbsd-tdep.c > @@ -200,6 +200,7 @@ static const struct frame_unwind sparc64fbsd_sigtramp_frame_unwind = > { > "sparc64 freebsd sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64fbsd_sigtramp_frame_this_id, > sparc64fbsd_sigtramp_frame_prev_register, > diff --git a/gdb/sparc64-netbsd-tdep.c b/gdb/sparc64-netbsd-tdep.c > index b101f4970d9..82eb99f57c1 100644 > --- a/gdb/sparc64-netbsd-tdep.c > +++ b/gdb/sparc64-netbsd-tdep.c > @@ -226,6 +226,7 @@ static const struct frame_unwind sparc64nbsd_sigcontext_frame_unwind = > { > "sparc64 netbsd sigcontext", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64nbsd_sigcontext_frame_this_id, > sparc64nbsd_sigcontext_frame_prev_register, > diff --git a/gdb/sparc64-obsd-tdep.c b/gdb/sparc64-obsd-tdep.c > index cef6efd3379..e81afa604e7 100644 > --- a/gdb/sparc64-obsd-tdep.c > +++ b/gdb/sparc64-obsd-tdep.c > @@ -224,6 +224,7 @@ static const struct frame_unwind sparc64obsd_frame_unwind = > { > "sparc64 openbsd sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64obsd_frame_this_id, > sparc64obsd_frame_prev_register, > @@ -308,6 +309,7 @@ static const struct frame_unwind sparc64obsd_trapframe_unwind = > { > "sparc64 openbsd trap", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64obsd_trapframe_this_id, > sparc64obsd_trapframe_prev_register, > diff --git a/gdb/sparc64-sol2-tdep.c b/gdb/sparc64-sol2-tdep.c > index b7ca4ca1f5b..e8d09e2516e 100644 > --- a/gdb/sparc64-sol2-tdep.c > +++ b/gdb/sparc64-sol2-tdep.c > @@ -186,6 +186,7 @@ static const struct frame_unwind sparc64_sol2_sigtramp_frame_unwind = > { > "sparc64 solaris sigtramp", > SIGTRAMP_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64_sol2_sigtramp_frame_this_id, > sparc64_sol2_sigtramp_frame_prev_register, > diff --git a/gdb/sparc64-tdep.c b/gdb/sparc64-tdep.c > index dc8032f2969..90b04fc0ff1 100644 > --- a/gdb/sparc64-tdep.c > +++ b/gdb/sparc64-tdep.c > @@ -1139,6 +1139,7 @@ static const struct frame_unwind sparc64_frame_unwind = > { > "sparc64 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > sparc64_frame_this_id, > sparc64_frame_prev_register, > diff --git a/gdb/tic6x-tdep.c b/gdb/tic6x-tdep.c > index 6732478eb09..bac8ba84ed0 100644 > --- a/gdb/tic6x-tdep.c > +++ b/gdb/tic6x-tdep.c > @@ -456,6 +456,7 @@ static const struct frame_unwind tic6x_frame_unwind = > { > "tic6x prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > tic6x_frame_this_id, > tic6x_frame_prev_register, > @@ -519,6 +520,7 @@ static const struct frame_unwind tic6x_stub_unwind = > { > "tic6x stub", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > tic6x_stub_this_id, > tic6x_frame_prev_register, > diff --git a/gdb/tilegx-tdep.c b/gdb/tilegx-tdep.c > index 92f2be0b208..16cd25f4635 100644 > --- a/gdb/tilegx-tdep.c > +++ b/gdb/tilegx-tdep.c > @@ -903,6 +903,7 @@ tilegx_frame_base_address (const frame_info_ptr &this_frame, void **this_cache) > static const struct frame_unwind tilegx_frame_unwind = { > "tilegx prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > tilegx_frame_this_id, > tilegx_frame_prev_register, > diff --git a/gdb/tramp-frame.c b/gdb/tramp-frame.c > index 4f7c62d11fa..6368f67a2e7 100644 > --- a/gdb/tramp-frame.c > +++ b/gdb/tramp-frame.c > @@ -166,6 +166,7 @@ tramp_frame_prepend_unwinder (struct gdbarch *gdbarch, > data->tramp_frame = tramp_frame; > unwinder->type = tramp_frame->frame_type; > unwinder->unwind_data = data; > + unwinder->unwinder_class = FRAME_UNWIND_GDB; > unwinder->sniffer = tramp_frame_sniffer; > unwinder->stop_reason = default_frame_unwind_stop_reason; > unwinder->this_id = tramp_frame_this_id; > diff --git a/gdb/v850-tdep.c b/gdb/v850-tdep.c > index de1cc6c47bd..d3f1af75417 100644 > --- a/gdb/v850-tdep.c > +++ b/gdb/v850-tdep.c > @@ -1323,6 +1323,7 @@ v850_frame_this_id (const frame_info_ptr &this_frame, void **this_cache, > static const struct frame_unwind v850_frame_unwind = { > "v850 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > v850_frame_this_id, > v850_frame_prev_register, > diff --git a/gdb/vax-tdep.c b/gdb/vax-tdep.c > index a42c872feff..25d07c59376 100644 > --- a/gdb/vax-tdep.c > +++ b/gdb/vax-tdep.c > @@ -390,6 +390,7 @@ static const struct frame_unwind vax_frame_unwind = > { > "vax prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > vax_frame_this_id, > vax_frame_prev_register, > diff --git a/gdb/xstormy16-tdep.c b/gdb/xstormy16-tdep.c > index 766d1d144be..e01da4ecab4 100644 > --- a/gdb/xstormy16-tdep.c > +++ b/gdb/xstormy16-tdep.c > @@ -731,6 +731,7 @@ xstormy16_frame_base_address (const frame_info_ptr &this_frame, void **this_cach > static const struct frame_unwind xstormy16_frame_unwind = { > "xstormy16 prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > xstormy16_frame_this_id, > xstormy16_frame_prev_register, > diff --git a/gdb/xtensa-tdep.c b/gdb/xtensa-tdep.c > index d7a56ccc33c..d12dfdc7347 100644 > --- a/gdb/xtensa-tdep.c > +++ b/gdb/xtensa-tdep.c > @@ -1501,6 +1501,7 @@ xtensa_unwind = > { > "xtensa prologue", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > xtensa_frame_this_id, > xtensa_frame_prev_register, > diff --git a/gdb/z80-tdep.c b/gdb/z80-tdep.c > index c442b60623b..66a12cd3be7 100644 > --- a/gdb/z80-tdep.c > +++ b/gdb/z80-tdep.c > @@ -1068,6 +1068,7 @@ z80_frame_unwind = > { > "z80", > NORMAL_FRAME, > + FRAME_UNWIND_ARCH, > default_frame_unwind_stop_reason, > z80_frame_this_id, > z80_frame_prev_register, > -- > 2.47.0