From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id +UIrDdRgTmqwcCwAWB0awg (envelope-from ) for ; Wed, 08 Jul 2026 10:38:12 -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=fKvzleWU; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 32B301E024; Wed, 08 Jul 2026 10:38:12 -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 [IPv6:2620:52:6:3111::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 C0F5D1E024 for ; Wed, 08 Jul 2026 10:38:11 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 17D564BA23C5 for ; Wed, 8 Jul 2026 14:38:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 17D564BA23C5 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=fKvzleWU Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15]) by sourceware.org (Postfix) with ESMTPS id 3175C4BA2E11 for ; Wed, 8 Jul 2026 14:37:27 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3175C4BA2E11 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 3175C4BA2E11 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=198.175.65.15 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783521447; cv=none; b=K4HeFMSwox4BNShAApeVr2lAUESXLzsKVycbj1TAZEpFo780qfzt7PeLfwRPpwgQv0mEhKjjOxkJg3h7FbKzfooP1cv81yIiSRAMZYzduC5pn5J3slDBwZ3T6DKYOjfsMu9G7s8faiwHBI+UPo8g+Q/4y1l8I+xUPvE7V/2PwrE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783521447; c=relaxed/simple; bh=KkKmmNvzVCoX9eTVr5e/fXybJv4UqwvIsG8fJjhEjK8=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=WsN/xDhyzShX8jp7YqVpmGog+8xAFsuMFLqShDZnOo6SRQHZwg9ulb/RQD/gL6syCwlvt0VBz/RS9j/KBe/m4lElcBZJk2lm9mChqn5KUGei9ma0FL7x766D3Btmw9HJBWrI46zT4mfEVk2szhK74Kvglr0dcitzMqtWd4458/4= 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=fKvzleWU DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3175C4BA2E11 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783521447; x=1815057447; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KkKmmNvzVCoX9eTVr5e/fXybJv4UqwvIsG8fJjhEjK8=; b=fKvzleWUrFJRvfWka+uAYtq9cbvNYGQ5sFQwSw6Envi814SVgPwVR7N2 aq+NEZgzHgnKnyfvwmjgarwy9YrG4+zi8q0fINjxmnoL+7SSUmqofZnSr M1uF9f19jhNrVwh9XivtPmsNytHCu5vVOjPuugDfDTRUre1na314JYo0p 363QBHqruxw1er4qO3bfwmk+bm/a0Jg7+WY3wLxKi+siqj3QzZKZH5C/D +zV/ylb956wcnug5hBtzSQ1nsf3N386hJhkoRKinH/8LG1Wk1eWrPxrJm +e0G5DpbenVUgkrUHSeUVB0bznaMcO3p9YlhiQShLCchzVERWjycQIOsg Q==; X-CSE-ConnectionGUID: 1Njslv8zTU+uduBvlAL7mQ== X-CSE-MsgGUID: xuTVP2ZXTQmT5/FeOBUJfQ== X-IronPort-AV: E=McAfee;i="6800,10657,11841"; a="87867542" X-IronPort-AV: E=Sophos;i="6.25,153,1779174000"; d="scan'208";a="87867542" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2026 07:37:26 -0700 X-CSE-ConnectionGUID: VQrJsOGnQoye8unBerVFyQ== X-CSE-MsgGUID: xKLMET3HSpKCO8cmrsX5Bw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,153,1779174000"; d="scan'208";a="252560358" Received: from gkldtt-dev-004.igk.intel.com (HELO localhost) ([10.123.221.202]) by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jul 2026 07:37:25 -0700 From: Christina Schimpe To: gdb-patches@sourceware.org Cc: tom@tromey.com, thiago.bauermann@linaro.org Subject: [PATCH v4 03/13] gdb: Add get_main_func_start_pc to refactor frame.c:inside_main_func. Date: Wed, 8 Jul 2026 14:36:29 +0000 Message-Id: <20260708143639.2214689-4-christina.schimpe@intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260708143639.2214689-1-christina.schimpe@intel.com> References: <20260708143639.2214689-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