From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 9eFcHYSgS2pOwSkAWB0awg (envelope-from ) for ; Mon, 06 Jul 2026 08:33:08 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Mlzlf+sB; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 599D91E0A6; Mon, 06 Jul 2026 08:33:08 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) 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.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (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 EABB41E070 for ; Mon, 06 Jul 2026 08:33:06 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8D1C94BA2E2F for ; Mon, 6 Jul 2026 12:33:06 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8D1C94BA2E2F Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Mlzlf+sB Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17]) by sourceware.org (Postfix) with ESMTPS id 011234BA2E38 for ; Mon, 6 Jul 2026 12:31:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 011234BA2E38 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 011234BA2E38 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=198.175.65.17 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783341120; cv=none; b=NnWt40UwfJJXKP6C5uYHErJS7NzkLOn1/ZRaAE3WVOqEnvoPjrki0lUXssN+YrE+wbuJ94tg7mC7B1TmuUD3wj2t/SsiYNUUSnaaZDEPjHIE/34bNgMy2HjMgkBeMyT79e7/GMS9ouq9L/vJLQa8UKmshyEBIHUDLQVaF5kzCMI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783341120; c=relaxed/simple; bh=KkKmmNvzVCoX9eTVr5e/fXybJv4UqwvIsG8fJjhEjK8=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=IuWpf4tQ8eONTZzz98CT6JK1nUC2RHCBkeL1PBHg5UXVKTVb+yA00RWGGkCVJMaxVkoh3Wa9ivHc3y1/JGLczyEnGIBSF49oKkb6SNCpBNMx4ftvo3exvclTF4i6EjR6c/VfG7RQzhJJiQiKvLoyH47PyEatAKf0uERwh3fFNJI= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=Mlzlf+sB DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 011234BA2E38 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783341120; x=1814877120; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KkKmmNvzVCoX9eTVr5e/fXybJv4UqwvIsG8fJjhEjK8=; b=Mlzlf+sBImGzZ356hhgV7z7kTISdpQsHuzN5AKwm9VjS+FRI5KFz8+68 LawxUy7Dmz5+fSgkkwQtmLRKlWXW67y4JpmnOlKrE1udokcprsIUriMiN DeW+Stg1rJ/xSTqohFREKl9SSIdRX98ODZ7AzEcMsXHjuk9RixoDTt0Y4 N17wOmrbzcuNJ3ZoCRiSyVDDzsUfS7CmKIq+2edk7x2nSgo3Y3DC4AGX0 nkjbbuZBgy+wTHOs++Ocis7hGPBsiWK1yBPQ9PZREH2tOUrEmJQNfiuNw fkoo363BETQCn4fd/viwg755t33QMwcgREEZG3eScZ15jJai1Mw7Zb9lC w==; X-CSE-ConnectionGUID: 8qfD4Z1PTH2Qbc2nz4YmZA== X-CSE-MsgGUID: 1mGP5+D2Q4uq0YYs26U8jw== X-IronPort-AV: E=McAfee;i="6800,10657,11838"; a="84001654" X-IronPort-AV: E=Sophos;i="6.25,149,1779174000"; d="scan'208";a="84001654" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2026 05:31:59 -0700 X-CSE-ConnectionGUID: XnEBdLauQ+KGrR18arMmmA== X-CSE-MsgGUID: eahokBq0TGGzLDxVhXRqYw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,149,1779174000"; d="scan'208";a="257285196" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2026 05:31:58 -0700 From: Christina Schimpe To: gdb-patches@sourceware.org Cc: tom@tromey.com, thiago.bauermann@linaro.org Subject: [PATCH v3 03/12] gdb: Add get_main_func_start_pc to refactor frame.c:inside_main_func. Date: Mon, 6 Jul 2026 12:31:24 +0000 Message-Id: <20260706123133.1990441-4-christina.schimpe@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260706123133.1990441-1-christina.schimpe@intel.com> References: <20260706123133.1990441-1-christina.schimpe@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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 Refactor frame.c:inside_main_func to use the new function get_main_func_start_pc, which will be called in a following commmit. --- gdb/frame.c | 37 +++++++++++++++++++++++++------------ gdb/frame.h | 6 ++++++ 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/gdb/frame.c b/gdb/frame.c index cefdde5ed1e..a9f2675ce3a 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -2641,27 +2641,26 @@ frame_debug_got_null_frame (const frame_info_ptr &this_frame, } } -/* Is this (non-sentinel) frame in the "main"() function? */ +/* See frame.h. */ -static bool -inside_main_func (const frame_info_ptr &this_frame) +std::optional +get_main_func_start_pc (gdbarch* gdbarch, const language lang) { if (current_program_space->symfile_object_file == nullptr) - return false; + return {}; - CORE_ADDR sym_addr = 0; const char *name = main_name (); bound_minimal_symbol msymbol = lookup_minimal_symbol (current_program_space, name, current_program_space->symfile_object_file); + CORE_ADDR sym_addr = 0; if (msymbol.minsym != nullptr) sym_addr = msymbol.value_address (); /* Favor a full symbol in Fortran, for the case where the Fortran main is also called "main". */ - if (msymbol.minsym == nullptr - || get_frame_language (this_frame) == language_fortran) + if (msymbol.minsym == nullptr || lang == language_fortran) { /* In some language (for example Fortran) there will be no minimal symbol with the name of the main function. In this case we should @@ -2677,16 +2676,30 @@ inside_main_func (const frame_info_ptr &this_frame) sym_addr = block->start (); } else if (msymbol.minsym == nullptr) - return false; + return {}; } /* Convert any function descriptor addresses into the actual function code address. */ - sym_addr = (gdbarch_convert_from_func_ptr_addr - (get_frame_arch (this_frame), sym_addr, - current_inferior ()->top_target ())); + return {gdbarch_convert_from_func_ptr_addr + (gdbarch, + sym_addr, + current_inferior ()->top_target ())}; +} + +/* Is this (non-sentinel) frame in the "main"() function? */ + +static bool +inside_main_func (const frame_info_ptr &this_frame) +{ + std::optional sym_addr + = get_main_func_start_pc (get_frame_arch (this_frame), + get_frame_language (this_frame)); + + if (!sym_addr.has_value ()) + return false; - return sym_addr == get_frame_func (this_frame); + return get_frame_func (this_frame) == *sym_addr; } /* Test whether THIS_FRAME is inside the process entry point function. */ diff --git a/gdb/frame.h b/gdb/frame.h index f6553fb7b6d..58732bceab4 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -887,6 +887,12 @@ extern struct symbol *get_frame_function (const frame_info_ptr &); extern CORE_ADDR get_pc_function_start (CORE_ADDR); +/* If possible, get the start pc of the main function of the current program + space for the language LANG. */ + +extern std::optional get_main_func_start_pc (gdbarch *gdbarch, + const language lang); + extern frame_info_ptr find_relative_frame (frame_info_ptr, int *); /* Wrapper over print_stack_frame modifying current_uiout with UIOUT for -- 2.34.1 Intel Deutschland GmbH Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany Tel: +49 89 991 430, www.intel.de Managing Directors: Harry Demas, Jeffrey Schneiderman, Yin Chong Sorrell Chairperson of the Supervisory Board: Nicole Lau Registered Seat: Munich Commercial Register: Amtsgericht Muenchen HRB 186928