From patchwork Sat Dec 16 12:56:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Hannes Domani X-Patchwork-Id: 82295 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 4140E3858C5F for ; Sat, 16 Dec 2023 12:56:41 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from sonic302-20.consmr.mail.ir2.yahoo.com (sonic302-20.consmr.mail.ir2.yahoo.com [87.248.110.83]) by sourceware.org (Postfix) with ESMTPS id 099043858D28 for ; Sat, 16 Dec 2023 12:56:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 099043858D28 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=yahoo.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=yahoo.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 099043858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=87.248.110.83 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702731387; cv=none; b=I/TCiGAcSARtU6iF2LXazE1vXKK9dCo7j68wQzp0ojmJYOY6O42r4LmUa6WLD1XpzHvYgJ6N1atVh+wC5m0z8i/07p/XLzbKweAqUtwdSsQ/5RH7m+PgP/zSYMfJtVdvl8Uwdt0j/Wb0eHvfVfz04BGXGkVvv4CZrSWZ0TC42w4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702731387; c=relaxed/simple; bh=c0T8hPRjlUHAwAG4Pa5HFFtzrGyQNVHnmoy4C/bYxps=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=l0dOWi3w5kGtOWvS/9jWSNtJ7NRkr7oDazSOQ+cuQkeevPmKEsmoXpuuFD5GbERSFrNDw+/wvtdWvhblMRtiLZU9Dlt845TtjLkkkj/COVB2MoWiQDgn49PamiM73B8wXGNiwrIYJ/Mxa1Mkvb74co29tDPhrk8rM+eLhrgLVvU= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1702731384; bh=lRASBv5x1mr4eW3cIBAEg+ApVYAU1vYhepYDWvs7ytM=; h=From:To:Subject:Date:References:From:Subject:Reply-To; b=CDDWbEvAnZOz4T6ReILi9cMc0WyxCxOgVWs6Otzcpsav5/xCXkM6aPsFJwVQeXhu9XvIIK8enLpHqj/NB+kxmVsNGCO2/74BVvwtLa+Bk+1Qkv7sDVkNrwMZ5acRZQ7xmyE0NzmgppPhgpmhAcvEKmUJgWwdmKOtZ+sd4MbU+O1TCpWnNb5HBf/Xc2ofd2MOofvUFao8twsdL7T/vpZH9oPNfpzlwqu/v8sDzByFrv5knIwwu2sYdSesQHpFV7h8Xh8tRTrilAbVUdXzyX1ruT1ZbDSt7jk0BY0N/6IPjjxInr1NIOu2T2c5syv02ucTtWdpOeFXlQKlJ6vUctZihw== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1702731384; bh=gkCPeyG80Dfk2PJo602vGu8i+H+4Ef7ECmRsKhSJiL9=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=OWafjSKdZTXn+Qx6OReLzgwH56OJ8+eYWAicfip1vqg4IAdK2hfPYUBN5v4qjWg5THH3BvBPF71s/ArE6Ks9n2Gdz+AhdLGLIwhCYpbsZwdSjGLMQq9YMoOlyIBY7yPBtkDijDfzLn6qCkCxQ0QB3lc7PmRe0J4mSLt8GAfTkwgNuxlIJq8iQh45FgbXeKVvhu6mA/xZhpbGGDyrJy29amY0MqDzV3fC2dA5sl681pAxsB6Y21Tx2as/kH5fhbAPibpujds9cusS+T7YcjYQj/2CeKh8xCvOzMxPZhbx/Oyp9aZ/iHvS3NiHnKxdqBHsusLh623/urXfzsn54Mj2QA== X-YMail-OSG: IKxwtpIVM1n7vYU4BhwX1sNbwUZlKzK3yE6_JKaK78hZ2aE4Z8ZsPQ1oZhVFCk3 v1f8AIKRAR_sXimUxDxSN9O0Kb2qhHr0wp8iWCwZgI1y2LSkY1j9k_DAES4b3kl8YpUv7fS.pjCi DTK_bv34q8wESRG6CLWEEuYQylfuLngudxhLa0LzwmGyPHJxsDNlel0sNUvmBMlB77rFgB7r.5CE lwaYQ_P5impx544ZxXL.ugUP8C85xadWoYp1mntZs37T1IbYCTQrX.tYQm.SqLBYxfvHBNOyfmN8 E72jBAePgXNbmvUSkhMLMdwlVife60BUdEisfGk1zZ.UokwqOcG2UA6cdxchLwvvpb69fnmEGZ3d pUI4hCu6hfuRLWNo.FYCi8jejWMG493y5qyZ8YthE1kvxfCJt7jlAHJvH27jaRwJqWbIF98hOMez TMZk6BI28Hdy40rZt88rRJzzAI7xez6N_jyggtsCdndGRhQsRLVfPeQdVO91bbp6lX3vNx78tuAi NCOLxtOa_d5jeEbS5Z6FyhrY1dLmkYPc3TQ95qDeeUkpVZpR.0n6EJWWhSS4xZsuNhvUa0_rETa3 v6NbTOha88CPFypESieTS9uqT0avm3nn5vtMeH_ROKKW0lorydUwXklsnyjQvQJYc6YH8VXyb.kZ x0FdjlLRobjbJP0vsKEoRwmhJqPXGx4H6o.HhgGXuxQsnT8W0QI.ggCspKQgIdh4L4Im7.x2V3h4 hKeGTQgD1yhgAnur7gcWIXFGlj9ExVYqm_FOaKIv4IYxg6rIfIRYiEkE0O4amnpSnY5vilPp4T5d PJnxJ0K0f06h7MIzMxKCrZJH3u9WvOdWMd0ag82SnhG.gtXZ2G4d3ZGyA3Asurbaf7H8IduDfGOW 0qdqajroJnqbyuti7dke.nk6I5RGwqOIGFmZyRJN80c973GOjPqz.rV5BXbHYxgwELH9mRftEoXN PMS5uiaRXv4Fi5lV7P9ghsN2LZjhd1KBDR0ZD27WFJaK2Ew6ZD8Ivh28D6aeBojqB1fIb57NVNBr ACLbbmkEXxjKZCazA_ByCGpFrydE_A0ygGxsJuXLrdrCCkUcmEzVpuREq6TBfPy_O4m50_YGkMuF s6VaI0obkUwSja.XnxTXE8umRPfjORPVG2GO4kgAq.e9f4TItN7q8xEHO3yEIlje9AxXWyxkX06. NZfWC81r_WjZI0Wh81wf2d4Up13Lda57k8FPqMVI4txFvGI07i8Ywb.xNns1EaGHAEIAZh3Qw1zB E3QLwYfDaFo_j0oRfE6zJG32kovcN5N30q8C45fTUL7N173t0sAU5gkGIpMPqeM2HcZzlGWheZuN 7hIrp2l68Mzg7qZLWHWp.NiKNNQ7qIepY3vLNYxc2RSb2a2RdBlbYwESeFf3DiEV2P8qT36EZ8C2 esP4MWZ0drE2PtqQx5szX8qjflf29SJDxv_rn1eWXfS4R0iGRm_c_UOzO_.RWfqQ2n1apDcb6BTe OFAVm28pKcewsG3T2kTOz4ffmxdxckvdbvjyL7qocENCxzR7GnYynvv3XOIENBNMcROfFYNQl3TE sjqdqKuIskD_C4adhC2ZjFKJLU_FmTr_oijm1McuiT.MG5eQlfoIGIFdQSYN0P9tKhRoMyT50hsc sy2iQL.z8MidT_txzp9rl71nULh5oRv3ap_JG_cJTfSn6UD90_mS4hGtGtWEDTqOQLXkP.Ng7TYO opUS1Ru6sOJn5RrHrcKrGiVqKIOVgz0xZu37jQqrzUUvXwFfezzm0v8fJf9MwI3AErsGhwSYM.gS .GEGGn7ra93NeAUHqnYxid6BmIguF0VItFyhbMsSaOUoDiAt2.m6ipxjgyXQrDd323WgS6INypYl a.21o0G739tUBwBE4TV7IcvHEaC8QsZccJ9JFAbrZSxAqbiB9bIci0Dw_aW1SXAzunIjkrjcmzLW 1b4fUqyiFVX5LtnzIV_YsUe73ZuJBnXf61JYhpmd_RYKh3MqIQS92E1BiOD_89mUj0h7wFLlMd51 GZ71K1.QoL1awWMyWj_75z6jliCmO73nWtduEIRDOICBvBQDlobREn5BFFyojIoPnYEIw78DH.fZ Q1.F0eE3_d5zy3SvO9tjz00COZkXoiYhERjBConDtuu3MIe9NaYeBn8CMY8TohEIf3sgfQ6xRRNa gzUON.rDximQj5r_EJ2q3fB7aMCB1E5yptrx6EttlgCZt27awaBx5IsrsXCl0bE_QtGA1KMhkLPf RBU2ba.htcs8bQhpY0h76qFA5FNCqYX80WEe1 X-Sonic-MF: X-Sonic-ID: fe44b690-db4e-4de0-bd24-1ac9fc836770 Received: from sonic.gate.mail.ne1.yahoo.com by sonic302.consmr.mail.ir2.yahoo.com with HTTP; Sat, 16 Dec 2023 12:56:24 +0000 Received: by hermes--production-ir2-6488884f6f-lt45x (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 7b0430b4f7207b7e3d357c137bd681b2; Sat, 16 Dec 2023 12:56:24 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH] Throw error if ambiguous name is used in gdb.parameter Date: Sat, 16 Dec 2023 13:56:00 +0100 Message-Id: <20231216125600.3592-1-ssbssa@yahoo.de> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 X-Antivirus: Avast (VPS 231215-8, 12/15/2023), Outbound message X-Antivirus-Status: Clean References: <20231216125600.3592-1-ssbssa.ref@yahoo.de> X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE 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 Currently gdb.parameter doesn't throw an error if an ambiguous name is used, it instead returns the value of the last partly matching parameter: ``` (gdb) show print sym Ambiguous show print command "sym": symbol, symbol-filename, symbol-loading. (gdb) show print symbol-loading Printing of symbol loading messages is "full". (gdb) py print(gdb.parameter("print sym")) full ``` It's because lookup_cmd_composition_1 tries to detect ambigous names by checking the return value of find_cmd for CMD_LIST_AMBIGUOUS, which never happens, since only lookup_cmd_1 returns CMD_LIST_AMBIGUOUS. Instead the nfound argument contains the number of found matches. By using it instead, it's working/failing as expected: ``` (gdb) py print(gdb.parameter("print sym")) Traceback (most recent call last): File "", line 1, in RuntimeError: Could not find parameter `print sym'. Error while executing Python code. (gdb) py print(gdb.parameter("print symbol")) True (gdb) py print(gdb.parameter("print symbol-")) Traceback (most recent call last): File "", line 1, in RuntimeError: Could not find parameter `print symbol-'. Error while executing Python code. (gdb) py print(gdb.parameter("print symbol-load")) full ``` Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=14639 --- gdb/cli/cli-decode.c | 2 +- gdb/testsuite/gdb.python/py-parameter.exp | 32 +++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c index 940cd6a2c8e..12aa152d0c4 100644 --- a/gdb/cli/cli-decode.c +++ b/gdb/cli/cli-decode.c @@ -2589,7 +2589,7 @@ lookup_cmd_composition_1 (const char *text, *cmd = find_cmd (command.c_str (), len, cur_list, 1, &nfound); /* We only handle the case where a single command was found. */ - if (*cmd == CMD_LIST_AMBIGUOUS || *cmd == nullptr) + if (nfound > 1 || *cmd == nullptr) return 0; else { diff --git a/gdb/testsuite/gdb.python/py-parameter.exp b/gdb/testsuite/gdb.python/py-parameter.exp index c1f8a80c6b7..df1b93028ad 100644 --- a/gdb/testsuite/gdb.python/py-parameter.exp +++ b/gdb/testsuite/gdb.python/py-parameter.exp @@ -588,6 +588,37 @@ proc_with_prefix test_language {} { gdb_test_no_output "set lang auto" } +proc_with_prefix test_ambiguous_parameter {} { + gdb_test_multiline "create parameter" \ + "python" "" \ + "class TestAmbiguousParam (gdb.Parameter):" "" \ + " def __init__ (self, name, value):" "" \ + " super (TestAmbiguousParam, self).__init__ (name, gdb.COMMAND_DATA, gdb.PARAM_INTEGER)" "" \ + " self.value = value" "" \ + "end" + + # Create parameters. + gdb_test "python TestAmbiguousParam('test-ambiguous-value-1', 1)" "" + gdb_test "python TestAmbiguousParam('test-ambiguous-value-2-extra', 2)" "" + gdb_test "python TestAmbiguousParam('test-ambiguous', 3)" "" + + # Test unambiguous matches. + gdb_test "python print(gdb.parameter('test-ambiguous-value-1'))" "1" + gdb_test "python print(gdb.parameter('test-ambiguous-value-2-extra'))" "2" + gdb_test "python print(gdb.parameter('test-ambiguous-value-2'))" "2" + gdb_test "python print(gdb.parameter('test-ambiguous'))" "3" + + # Test ambiguous names. + gdb_test "python print(gdb.parameter('test-ambiguou'))" \ + "Could not find parameter.*Error while executing Python code." + gdb_test "python print(gdb.parameter('test-ambiguous-'))" \ + "Could not find parameter.*Error while executing Python code." + gdb_test "python print(gdb.parameter('test-ambiguous-v'))" \ + "Could not find parameter.*Error while executing Python code." + gdb_test "python print(gdb.parameter('test-ambiguous-value-1a'))" \ + "Could not find parameter.*Error while executing Python code." +} + test_directories test_data_directory test_boolean_parameter @@ -600,5 +631,6 @@ test_gdb_parameter test_integer_parameter test_throwing_parameter test_language +test_ambiguous_parameter rename py_param_test_maybe_no_output ""