From patchwork Mon Jan 13 21:27:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Farre X-Patchwork-Id: 104713 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 2177A385770E for ; Mon, 13 Jan 2025 21:28:20 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2177A385770E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=mBYukoe+ X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by sourceware.org (Postfix) with ESMTPS id 6DAD23858CDB for ; Mon, 13 Jan 2025 21:27:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6DAD23858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6DAD23858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::129 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736803656; cv=none; b=Sgg98Oxb+/DnquiHBWOoykUun0kwKA3jVFkXuDRICPUuGC90EXZf73+GGV1ANS7ywYrvcJtkIFiFZKJMN0OARu30O+/4y/CbFNKXlTKumMoOCRG1KNhXJHIW01xi4K2k0jr+oh5d+/MjD/UeiSxZKf6o7ozY4aW9bN7/O+vmyn0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1736803656; c=relaxed/simple; bh=y6ZY56u2We+4JejsTSSQGrR4526uSkf22ZBsXLP6sB0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=kgjDySXzn14guclOcM4Up9d1jucgqXKqZSBpeGaDzkD/x2S9mNeqScffto307CYW/kCaQVLIpmiokFBrF1k4GXcxNOGSPLv1WEeDOEqr6AjbpAZQjgvCI88MUoZk2Xi8zeLbZ5hjAjJfvgty0xwNO1sB5vyIvTX+0S9jj3P1a9k= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6DAD23858CDB Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-53e389d8dc7so4659626e87.0 for ; Mon, 13 Jan 2025 13:27:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736803654; x=1737408454; 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; bh=hsncPbUhy+nTeuIe7VvJxskpXTpmykyDQ6SRk9Y+AJU=; b=mBYukoe+vlm2mvWdVfit5AyAXbainFUZN/yfBhidZMcbmNDw7bQvcJUzKuzDZEUDqL onUcTzYzO3YMrTa9aGi1mleJft9tVSyReP6tbgAU7Li0tnYERng09vDiP+k/bDY7YiiQ bUesIwQn5vpsJHBKApgOgtrWa4eej0SUV1O1Frdr1IqInowgpvy43j7Qg0sOjj24ARpC OpXBj6GPOnIrtfQOySbb786bxkQkd1dGAHeJcXtZPeTSDr4Z2CF30J2EmWzQmPkmb71u RUnE3Iyeme8RHqrKzLejVN1MySxyLjYKbP3qoq7rDGKFgh3BieB3zqp194xE5Rbgfef0 yZzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736803654; x=1737408454; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hsncPbUhy+nTeuIe7VvJxskpXTpmykyDQ6SRk9Y+AJU=; b=UbkKjafMEJ7lHeKnyGt72RT0CACSu86PsWUVnDpbKPcWbH7lKsFOK0qoylDZP40aJz ajYWM397l+Hbn3riw9JIuxVSpSFpvXbtVne3j1PcNtez10pQHUNii74GzmadhIS/yqbJ wmuVTwTkpg9SgMBLlHVXU3uRvprKhB4fjWd+4rr8mvKCmahrHykPKa5QaSr4PyC3E+Ky P1LrnQdHA9aurPQTEYXRxk8JcmRPN1h4ZLVSTUGeUXnze4COCrYFzDS/8XJ6moVQ8JIY /FH29InVC8csVK/6t9jvrziqq2gLroXGMIsavCxbFJpyu0MVWZA6VWc976X6y6l45gkU 7yuQ== X-Gm-Message-State: AOJu0Yzev/vsvc94p2oJNgmqZXMu+uzJt8g1U2DAEpYHvySe213BDjS+ 1F1vlnf/UGhA0BXqXYZYaC0HbxE/EOnbah1B7zVdsLI1t8bwPV8eleWCrQ== X-Gm-Gg: ASbGncu+tCfY+NkthUSpoc69XNXlbitermUCLMQ0unOx81QAs/dHDhYu+heeVaHpPZ/ cahqz2gIbzqDiFTj4SlZ0VOH/l+ViunDVPBQ+JdVLnsIFZASu7VKJnnL+HrzyAE/tOstPU/hKt0 cSxzT7DqvJZLeqmTUq0c3GDhxtSxO4+/GqoB5TrtOuLfauo/ihxiqJlk/x92BTLVPZWFKoE2/8i KjJjLYlEyGxfudP7OvjCeF7AfAl8bQgUMaDHBtHw6gi5KX5RZhK3I+OAs67wDqLTL1Qzu48/3WV X-Google-Smtp-Source: AGHT+IFyrHMgEVUGORZ3JcqR4D5zmiNg+p/kL7jZ4ZQZNslpm1I3dYxwOFafeE4LbmxOU7vKQ5pghQ== X-Received: by 2002:a05:6512:3d09:b0:53e:349c:45b6 with SMTP id 2adb3069b0e04-542845bf46dmr7578457e87.17.1736803653864; Mon, 13 Jan 2025 13:27:33 -0800 (PST) Received: from localhost.localdomain ([2001:2044:3:d500:cb71:f6f7:588f:b1a0]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5428be54741sm1482592e87.84.2025.01.13.13.27.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jan 2025 13:27:32 -0800 (PST) From: Simon Farre To: gdb-patches@sourceware.org Cc: tom@tromey.com, Simon Farre Subject: [PATCH v2] [gdb/python] Bploc should try to return full path Date: Mon, 13 Jan 2025 22:27:23 +0100 Message-ID: <20250113212723.25234-1-simon.farre.cx@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, 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 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~patchwork=sourceware.org@sourceware.org v2. Use symtab_to_fullname instead of calling fullname (), because this will attempt to resolve the path if it hasn't already been resolved. v1. Compilers often emit relative paths in the line number program, relative to the build directory for that compilation unit (if it's DWARF>=4 I think). Therefore use symtab->fullname() when not null as this seemingly has attempted path normalization for the symtab and only fall back on symtab->filename which will never be null if that fails. This has a much better UX. Applications may choose to expose this name as a clickable link to some file, at which point a non-normalized and non-absolute path would lead nowhere. When I wrote this feature the first time, I don't think this relative-to-cu-scheme was as prevalent in the output of gcc/clang for DWARF. --- gdb/python/py-breakpoint.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gdb/python/py-breakpoint.c b/gdb/python/py-breakpoint.c index 75f50e1f423..f22df079f90 100644 --- a/gdb/python/py-breakpoint.c +++ b/gdb/python/py-breakpoint.c @@ -17,6 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +#include "source.h" #include "value.h" #include "python-internal.h" #include "python.h" @@ -1643,9 +1644,10 @@ bplocpy_get_source_location (PyObject *py_self, void *closure) gdbpy_ref<> tup (PyTuple_New (2)); if (tup == nullptr) return nullptr; - /* symtab->filename is never NULL. */ - gdbpy_ref<> filename - = host_string_to_python_string (self->bp_loc->symtab->filename); + const char *full = symtab_to_fullname (self->bp_loc->symtab); + gdbpy_ref<> filename = full != nullptr + ? host_string_to_python_string (full) + : host_string_to_python_string (self->bp_loc->symtab->filename); if (filename == nullptr) return nullptr; auto line = gdb_py_object_from_ulongest (self->bp_loc->line_number);