From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id AJObIgaEa2p2IDUAWB0awg (envelope-from ) for ; Thu, 30 Jul 2026 13:04:06 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=ZncMVjqO; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 7B4581E099; Thu, 30 Jul 2026 13:04:06 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-5.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, 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 055221E099 for ; Thu, 30 Jul 2026 13:04:06 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 894264BBC0E9 for ; Thu, 30 Jul 2026 17:04:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 894264BBC0E9 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=ZncMVjqO Received: from mail-oi1-x235.google.com (mail-oi1-x235.google.com [IPv6:2607:f8b0:4864:20::235]) by sourceware.org (Postfix) with ESMTPS id 36CC94BA2E3F for ; Thu, 30 Jul 2026 17:03:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 36CC94BA2E3F Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=adacore.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=adacore.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 36CC94BA2E3F Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::235 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785431021; cv=none; b=tVzR4mmECCgaxxHC/1nApTN8xBfuKpMMtOKOkEj7Skn6F+qPVSC2Wba3jeNjlKqeJmK4X7DjJMMeFjN2QnxN1Z6keRJfMXKQBw0wvmSkHLpAXTzEOiuQ4L0KVrYkwfuSs5IgyV4em3Bp+MNONBxM15lKPM571n3b0Yf803qnJ9k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1785431021; c=relaxed/simple; bh=Rq9DdMYPW+A8SqyodM5vzB7qquQr0osuWgqYVh2IZkk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=DhQz/Uhn66XJ+wE/sLKJyuOupLWqPK02YXraxSAqXPxQRC0rhCEsSEso1cwV8z71AWq9j4nzustQOZqJkUX1wiMvDjNj2fRohhrzM7f1JONFPCnT7Aw+Co8+GGk1wJd+0qEfm/oovojnn42matdw63IKBYy5HhAkkZ0iBw9/5xM= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, secure) header.d=adacore.com header.i=@adacore.com header.a=rsa-sha256 header.s=google header.b=ZncMVjqO DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 36CC94BA2E3F Received: by mail-oi1-x235.google.com with SMTP id 5614622812f47-49c38a4f110so65666b6e.1 for ; Thu, 30 Jul 2026 10:03:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=adacore.com; s=google; t=1785431020; x=1786035820; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=9mRK4JSTd/BJYxxcyR265AT6NDDj7XvALdEeZmsRg2g=; b=ZncMVjqOidbZHAZ2dQB1G16L0ckogJXIZ89ub55fNA/Ey6JHnmnznEi2oWzigEAbQf +M6uBOi7fWBjD62L409sd+MQafY0qjWPmeSRZX3FQqiDLYZ1aYvrgPUQH0+DNGE41h2V FeRymcNqjpn0wqiDHzQcFzM4FNAWsz9NV7hcc7zzzrirTEtugukUMC+dgFhghVv0xDxb RtH4uj+C4rOdR768RCzrJGe+f7NmUPkB7zuPNYM1C5RAiwRN/YWr+TDQIUNl9fFFEyFA JHhoJsYmEk+t27C3euY19oWN3458I44nQiefNG1wen23PZ/GwhjHdaZe5ZXmw1z7BkNX Ov0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785431020; x=1786035820; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9mRK4JSTd/BJYxxcyR265AT6NDDj7XvALdEeZmsRg2g=; b=nAYYLrCRP3HgkgcgW3hB8W40DBgoGedgLHF0H/Z+7O51IRAYswU3b5e7G4h0cQL8s/ RQpvCdg345cGhk9chVvu4UTlOOG+jV4mWDcbjS7MMFWbnZW9MA2ikM3LPsQt4XJsMTqG zSWScbKHVQwyyn/WCjkaJ94bJd6pwQfIOUTcVVFRBatzYc3WxHNUNt0fcHDGLw3CN+oo 5aEFcP89Opbb8r6EyvcoQ2yvF9gpL/qfClzdcxzxJ1ZIWlldsrueIaE0zIyWEfRBgC4K eF5VQYxzpgMqJZAqDJowlXbFWP+fZk1/rtKav9kgk6sRo7fa3rvbMeIy2FDvoICNNKnC OWTg== X-Gm-Message-State: AOJu0YwKYE4pVgHwwudTrpmPU+YgthTFSKm2AF1/8SmdiQKVR4ZYSug4 GqN0YFPt5g8vWWjP5unNU7L01KFn3RFtXEaeETdK8fR5d/NSUvQb4O21rPUSevmw+MBZeazljNY Y+Is= X-Gm-Gg: AR+sD13tevtsinpPpbsrQl5szvzDhoXT7jtrxmw0vp6BE/zsGnuKyYz0sL8xowPzn0T BOWjB6FdOQ18I8PbN97HafRRL2q2V9p3d+AKV8ZI/pIIZVMKRhNUr2etpWZtCIuRGxXOvM7DpLd rprd209nc3M+7IgkdAxu9dOXtW6BxWfcZRllJyZFf+uF+PnnTOA9CW2Dum2LELnszAZklPRuDd1 YFazw1rkVNwZYiVTWVP7f4WnTZpURkxZ4saomqMo6tsbl1tXz7F/De2usf53X08KDDLyOQgGy4L 2U7ARyMDyHoOGGMtTtDrWz2mZC2uaAFRQQOGOPOoCodkUHqpAAH7GiuRuxSTFNB/ifOC858ZIpg GNngaenMioVDSUzMWNgm3mKFS3MghsDROubID6tkL68XHi3lmahm1cU7Y+WhVam6kHlWb7xTEdq Yf6snWTD1zWxw/E5iVP997AtypWrPpCoKRL9jxedc3xnBlbuyfkLrU6U5R2L2qkfcUCmBlfNsVu pl/h5RV X-Received: by 2002:a05:6808:170c:b0:4a4:c09:6a4 with SMTP id 5614622812f47-4ad8776deadmr2554700b6e.10.1785431020095; Thu, 30 Jul 2026 10:03:40 -0700 (PDT) Received: from bapiya (75-166-225-82.hlrn.qwest.net. [75.166.225.82]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4ad6efc6ffcsm4637168b6e.15.2026.07.30.10.03.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Jul 2026 10:03:39 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Always fetch Ada "main" name from the executable Date: Thu, 30 Jul 2026 11:03:36 -0600 Message-ID: <20260730170336.2547536-1-tromey@adacore.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 The gdb.ada/file-then-restart.exp test was failing with gnat-llvm. I tracked this down to the "main" name not being stored in a readonly section, meaning that the code in ada_main_name using trust_readonly did not work. However, it seems to me that gdb should always prefer the data from the executable in this particular case. So, rather than relying on trust_readonly, this patch changes gdb to do this directly. --- gdb/ada-lang.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 3c6c9af488f..906c5cd3465 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -775,8 +775,6 @@ ada_get_decoded_type (struct type *type) const char * ada_main_name () { - static gdb::unique_xmalloc_ptr main_program_name; - /* For Ada, the name of the main procedure is stored in a specific string constant, generated by the binder. Look for that symbol, extract its address, and then read that string. If we didn't find @@ -786,21 +784,31 @@ ada_main_name () = lookup_minimal_symbol (current_program_space, ADA_MAIN_PROGRAM_SYMBOL_NAME); - if (msym.minsym != NULL) + if (msym.minsym != nullptr) { + static gdb_byte main_program_name[1024]; + CORE_ADDR main_program_name_addr = msym.value_address (); if (main_program_name_addr == 0) error (_("Invalid address for Ada main program name.")); - /* Force trust_readonly, because we always want to fetch this - string from the executable, not from inferior memory. If the - user changes the exec-file and invokes "start", we want to - pick the "main" from the new executable, not one that may - come from the still-live inferior. */ - scoped_restore save_trust_readonly - = make_scoped_restore (&trust_readonly, true); - main_program_name = target_read_string (main_program_name_addr, 1024); - return main_program_name.get (); + /* We always want to fetch this string from the executable, not + from inferior memory. If the user changes the exec-file and + invokes "start", we want to pick the "main" from the new + executable, not one that may come from the still-live + inferior. */ + ULONGEST xferred = 0; + const auto §ions = current_program_space->target_sections (); + if ((section_table_xfer_memory_partial (main_program_name, nullptr, + main_program_name_addr, + sizeof (main_program_name), + &xferred, + sections) + == TARGET_XFER_OK) + && xferred > 0 + && (strnlen ((char *) main_program_name, sizeof (main_program_name)) + < sizeof (main_program_name))) + return (char *) main_program_name; } /* The main procedure doesn't seem to be in Ada. */ base-commit: 6d1be0b90e837e4c82eaaf6f9e8c7da7227902e1 -- 2.55.0