From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic313-20.consmr.mail.ir2.yahoo.com (sonic313-20.consmr.mail.ir2.yahoo.com [77.238.179.187]) by sourceware.org (Postfix) with ESMTPS id E714B3858CD1 for ; Sun, 10 Dec 2023 12:13:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E714B3858CD1 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 E714B3858CD1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=77.238.179.187 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702210394; cv=none; b=gclwaWFEcGtojH/y3FWvG4jWGoyeCBETLABoXixaVX0vU5YtYTETTsaUoneFl+NsSh+InXeLSIAGhbUUwe71czXJyUf4EIpss6Qj7t41yr5SkwlDHdpozpoN6TVTRfEBjtnzxGXqw4IS1eE90SbWgThp1Vk03LryBWUSDGpDQG4= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702210394; c=relaxed/simple; bh=oAgkt9zcOWSvAKfLX3up330VBPCkWtKvXoW8UYj8hOE=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=mLBkEfg8bnRluslhmeaRMCs3OmIHESIlrzgbjtjqv9eSRjjna84VRLi8aVwljB4Oubt7jTANbQ7K90VuYppUM3ZmMPtcOgeMb5E58arMf5YoqYLFKLs9woADcfKtQLTj9c3S9K33rTBqd0EPx3PnmbXVx5QJYHSDvEYpf+Zhyrg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1702210390; bh=aIYMQExbjLMjfvcbWtzqbGsUAXyKMy018gnZ7D4tCYQ=; h=From:To:Subject:Date:References:From:Subject:Reply-To; b=NxXiS+YH8s0XKDWq3hOLoiFjdvdBRr8UIXYmKYFVxU3Np3nqKGNpA1le/UmJpaG7rqKB+RmUNTPU7Tq+QquzvxzhVf3hEcBdLuSpRu5PsuEmP//q3/TEAPyUROD4h/9qUiLt0phVTTYEg7erewqJBfuICMH+abEHTWhrmWXSvU2vOU43EWSK4ETOEc65chMImT7OThUn1JcMDVe2X4Dz0MZmmCo0o6Cxn4ncuY45P3tZCpYblo516PrMY6i2AQEPRaGombExfcQPGEL8vMWz+7Yd9o9rl+eLMCiSogs3hPwmti85lZd59vL0ptKYn309dlciOnnY0nMJJiTEqmmGtQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1702210390; bh=85Lot/MFx+2C7+9er/q3Fo69eRt4w1cK8crX/MunW6B=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=BMw1AtqDDI3cxb1WCOcmLXc/aify4dUIpNLFi/HpupmPU5xMvRsbvLsKmA8h3QJopc7B0pywiAW2ULvtBZDBJzFEFwHdoCbxyXUUAf+9Vw/UprR3YR/L3YCVH/nUXcBYHh5EMMxpuAT/kIt71DBbeJFkptcuGthVVV+WQmWPBFCPOxtmshbjGQfOVGW+hEFzsmsWXmosYgEukNTqA+28c9e0MB5MZ2p7mWtbq1LQNEdSZk2C2ooseTMgwztNFofKCi7tMzGCL3JFF7KWodbNWGiGaoIjJKnURlnMRG/8h3loqaw035sZmpvdeP5WBSyxfyBnywK24w3SaYS7YwOHjA== X-YMail-OSG: ypbR.EsVM1kzRCnCIR8KRo7X2lTpaf5tHrmiv4X4.10jkJsdAYXNrAffWtgM7ft cITyJOuMRShKbJveQKiV.vn9vSqBmJh7ShAYMfU6MASjYvi9539t5LJGH9WMoCI_3yBCZ4WCPszP AeSOqINDiEo7O_5ovdo5JKYneagi9.pU7vWP85TzN9PMXb5gco8n7brwHwcksZ3XZbEzhK_brGRw _bWvGc0titNrH7rcnZq03xpjfcSjpamBvteRxK296wUAx_dDt_rTlc3vuglrwB187e1ZyHmikgIf 4Io4JfdWvITrv5LCbRMMVg5qp5XZwTs4zSmdfTSMrekyiJb6Q1JUHgzHM9qScvzWQ_LrXjiivHuv sJ45_Bal55edIR5RsCx9I0ZTDXk1QJn_i.hRvBKlzAV.E23z6lA5Hwc_xYnkoibyIYjrbVDK6dYJ DWeqxel1odmc1o6J.6HlZl81kXow5Ht63hNHdWStpje7qDT5Vz5T4x4MRQk_9WWyV95strwUpono uuxXDX7shQGRbznt4xX4_86g_JZRiTQuVl_NKlUOcMx7iF9bqfXnhx_Qb.1aQ2MMcRa1uvVEDzLa lcE5nUEYr7FoCkWWHLv.aTY0EHJnfL9oWvVZ1OKTljC4y8Z2zfsjoh__AQYYTndrkWj4VDCZAPvm U7n3LFjMvDa2OaB6.YLHfvK3PWam0V9pmDDuUaLB8cGvsUnfuCEc57QiQhgNo0AIOV33Le7JMaPE T.DhneivaSoFwSNJVAUaTtQ7xEDX6dByJ_Rv7.wVNAJ8IAPH90NrBDbpWaRNyqXghnK0rHuh9QiV lA6hlgn43kPf3oceHY9.e1PcMAcOK2apxEK0zwiXZxCXmAC9fdXEg5Lqy.O5vBMUnPlObW0SWFDK d5oXTjPEZOkCdxwhHq2v8TiVhTXay1Rfdt5crwNGkwXFowK3cCCCHVBqR7G76o1zzGP4mV3ZipAx sX29ILTiRHo4Z1gjZONTI_cOUH8CJoUflEBH6U1SaqSi6Ujh6AuNo.ZmnJvjRGk5V_d7gmmtZWQR _gx.FROEYlfKDyFrQNhrpWjjsdk6QIpx2aBr2UnYMtInoedI8bjqg3FJxfz2E8FMxHaYrY_jVzLj ewt6Rt9UL1TXsrOrgc_pmg.FtLNFNt1TEMejEqeLJ1RHKp8j4vfGRgj4spZzVGTu5ISrgM.khIT4 8OHKMjQd2b91cGny3FsHcpdEM4fxcWwxOAbOpmK2IktOBoKdSW9yyqvcXHws1zSl4LrKuCS7rc26 6S.J8IupV.WuRtBTdoWkfCGR09IECEf32fE3h4EJRErELIv3T6F1JbHmFIWJpD1Xi0H.BzYRetc6 PJSp77b2M._.xsU6RDTHCtuKIJTYpRm_O3c_HJ8HGVj1E0Umi6PB95ZuQIZLAvFbT64SBA_BOLF0 EWmlLdyidWGxvMGmcwHE2GXZ0X3QXbT08SriPJ656EQPCcRMWYai80vfCUdRmGtKcGy0RKol8u2h 0KOUlt0jn9OnFr4cscQ2N.bo5c6Ku0JSRWNgAz_cs5Hn1talWOPX56YoznmixbxCHSOXtjqpREmR dSssARDVuO8rx1ac9EMBi22jYyfOEO1g8YfYP8VhWMztrMVZkbweJ21rguiK_ln3_Wi_xNtmswCE t4B.JUVD2TvMbUKgJ4vCEvl5L_lXAHadHnBmk1R5aCDGnZ.OMQ0t1zxnjd.SoIuJ41WUdzWNJG4h niNuvTVqBHLH76TT9Vw3r3zyetSvc4gUrcStpsxHVDexbxafpD6ZM53z7qbChzVFTSoFED3h1LEN 35.yZvTWfABZp2AAJ8Y101ls1IDq3rT78miGWiFut.DxGK3lryG4uuxISISovx5NwxmUCyCtgQxF UYZgIP0PEblZ9QqkhZVGJMbITCC8j55YfNPECyM8HfbXLhaH..jSTFcGXEZ76OXs82edFd1Xdeow 26XkvcV_cWMvgiUmISM30ljIPZewe_QMFEbGDFa6Rm7BMTgC7AvQgqRizjvc..sWl7O8jPPVH6q2 .HPyexizirl.IuliaOKvKuCew_Z8z.q27PlZmuFzJk6Ycrc9qKAMBngSDdqztUk_oJYr4DlQtsl3 r91_TJkG6.VzFvRZnFBeTzBF4Hrc3nhP_gxbjDpjA1hhM3P6cjp2QgWq0pexeCn.1RrQrHVzAibU HT3B8KWc4U0USylQcEcyAXq4rHwOgn4QUHbyFQOHovxxvFI4jtg8FCQjIhYNzV4dWCUAqriQFaNR EcpEb2sPn.zA5phjhsRvDT5QovGTdvtJcmA-- X-Sonic-MF: X-Sonic-ID: ef4ee730-c403-4a13-8820-1b709be5802a Received: from sonic.gate.mail.ne1.yahoo.com by sonic313.consmr.mail.ir2.yahoo.com with HTTP; Sun, 10 Dec 2023 12:13:10 +0000 Received: by hermes--production-ir2-95776f84c-ksczb (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 2c817c0d8083256eac0313383ea5da09; Sun, 10 Dec 2023 12:13:06 +0000 (UTC) From: Hannes Domani To: gdb-patches@sourceware.org Subject: [PATCH] Support dynamically computed convenience variables in get_internalvar_integer Date: Sun, 10 Dec 2023 13:12:55 +0100 Message-Id: <20231210121255.1711-1-ssbssa@yahoo.de> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Antivirus: Avast (VPS 231209-0, 12/09/2023), Outbound message X-Antivirus-Status: Clean References: <20231210121255.1711-1-ssbssa.ref@yahoo.de> X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,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 List-Id: When using $_thread in info threads to showonly the current thread, you get this error: ``` (gdb) info thread $_thread Convenience variable must have integer value. Args must be numbers or '$' variables. ``` It's because $_thread is a dynamically computed convenience variable, which isn't supported yet by get_internalvar_integer. Now the output looks like this: ``` (gdb) info threads $_thread Id Target Id Frame * 1 Thread 10640.0x2680 main () at C:/src/repos/binutils-gdb.git/gdb/testsuite/gdb.base/gdbvars.c:21 ``` Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=17600 --- gdb/testsuite/gdb.base/gdbvars.exp | 5 +++++ gdb/thread.c | 8 ++++++++ gdb/value.c | 15 +++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/gdb/testsuite/gdb.base/gdbvars.exp b/gdb/testsuite/gdb.base/gdbvars.exp index cb6656c176f..d4b2860de7f 100644 --- a/gdb/testsuite/gdb.base/gdbvars.exp +++ b/gdb/testsuite/gdb.base/gdbvars.exp @@ -158,6 +158,11 @@ proc test_with_program {} { "Set a new convenience variable to a program variable" gdb_test "print /x \$prog_var" " = $hex" \ "Print contents of new convenience variable of program variable" + + # Test $_thread/$_inferior convenience variables in various commands. + gdb_test "info threads \$_thread" "\\* 1 .* main.*" + gdb_test "info inferiors \$_inferior" "\\* 1 .* process.*" + gdb_test "break foo_int thread \$_thread" "Breakpoint \[0-9\]*.*" } gdb_test_no_output "set print sevenbit-strings" diff --git a/gdb/thread.c b/gdb/thread.c index c0ed64e5f8b..85bdbaa6cd8 100644 --- a/gdb/thread.c +++ b/gdb/thread.c @@ -1129,6 +1129,10 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, for (thread_info *tp : all_threads ()) { + /* In case REQUESTED_THREADS contains $_thread. */ + if (current_thread != nullptr) + switch_to_thread (current_thread); + if (!should_print_thread (requested_threads, default_inf_num, global_ids, pid, tp)) continue; @@ -1176,6 +1180,10 @@ print_thread_info_1 (struct ui_out *uiout, const char *requested_threads, if (tp == current_thread && tp->state == THREAD_EXITED) current_exited = true; + /* In case REQUESTED_THREADS contains $_thread. */ + if (current_thread != nullptr) + switch_to_thread (current_thread); + if (!should_print_thread (requested_threads, default_inf_num, global_ids, pid, tp)) continue; diff --git a/gdb/value.c b/gdb/value.c index 1a3985582ba..e9308b04f93 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -2119,6 +2119,21 @@ get_internalvar_integer (struct internalvar *var, LONGEST *result) } } + if (var->kind == INTERNALVAR_MAKE_VALUE) + { + struct gdbarch *gdbarch = get_current_arch (); + struct value *val + = (*var->u.make_value.functions->make_value) (gdbarch, var, + var->u.make_value.data); + struct type *type = check_typedef (val->type ()); + + if (type->code () == TYPE_CODE_INT) + { + *result = value_as_long (val); + return 1; + } + } + return 0; } -- 2.35.1