From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sonic307-54.consmr.mail.ir2.yahoo.com (sonic307-54.consmr.mail.ir2.yahoo.com [87.248.110.31]) by sourceware.org (Postfix) with ESMTPS id 3E35C3858C42 for ; Wed, 17 Jan 2024 16:05:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3E35C3858C42 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 3E35C3858C42 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=87.248.110.31 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705507546; cv=none; b=ml3k1PV6S8srZ0CLQOKUK34lrwyjOlAxGe2ZvERpHr2vxj7ol0CnQnZROE30TgT+bbP/PfAwTjtJBrrsSzp4UYavZefycTC5riGExOZWVmnB2lLcPjBXuH0FmEYla/NhgCj8UpJ5XS0HYbkGcuu/QIkzO4t8xgd639ehcJByy1I= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705507546; c=relaxed/simple; bh=vUV1tp62MkEL0KwNFi23bPhLqRmi3FrMICxcUbUMebQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:From:To; b=vMzyX0U+l/qZtBhc0v5FQ1oTbtb8gj46rfHQzYY8jkOI5M0J958fT/dbIl66gCdfpX8hfbZH7bkZjNjXTlyP1z4AOI/RIMsAkwPXMEoYTicu3wfx55yIwRzCAcSmV2mlbN1Dt+wF4q2kA31hH6LgSfUjiGjrHh7fUooLE72o4aI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.de; s=s2048; t=1705507543; bh=qCUcgdulkLUsJhc91qabdrcbEOMyiyHdRqdj6LIX1ag=; h=Date:Subject:From:To:References:In-Reply-To:From:Subject:Reply-To; b=UXotb1HO2SGqUxa9JxiTRTSb+AFHgBDEobSEOENeHtpnqJ6KrXp59oKKG+IEuZ7U1FUV2V8p9Jtdm3BW+SL7+fWHTJSadwijn3tX+v3ZFW3nO6oMzHHNXp7UcR9qz6ZAEWKyt41LIkSNKxGPxQUimFZ9rdk+qr1v4IAXPFRnkCCffYqEAnC14T5jv2dC0US7Io25ueleoUNaOKM+SwJCYS6buVKNanNCCF0+jPAhIf2rPcmZYaeO1wTHyD/0vGu1ItNhGJU0wocgFoZmdOFq7gDFbEoPeLRMVlp9CZGjPQL06v0V90PlpoGe0owBJp0uoelfAZQXs/IN7ItxporMew== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1705507543; bh=KRTnN0nhSt4Bj1foQetrhQARbFhJZ2Set1KQhvbbWqp=; h=X-Sonic-MF:Date:Subject:From:To:From:Subject; b=cCHaJU2GJlyEtcrJ11QcHWJQbdwTOBnAQ74sgmjwCnJTNwQtz0/kIxZI+xor32ylFgQyFX4uLPpFAo4G4aZi/4QhZJ3l/eUnQJE545S6hnXFUH8/oXtaTdUrryaoVUQgUBgQuo1zdQP1QpBGDKYAD/LxH4plkFdTexCZ30JNp1G+y2t9tHxjghWbMbCb2b4ONeUPibnX6T2iacFYoFAP8UVD/5CzwtnCjyMFr4LCrvmOGDKD/6RbNdDC2E1+iZUsdt8auZNxmY0zdag7V9/6SjGEDRpEwdHLxe2ZgMHmN4fjkz2115Q587G0xmEIrGvBofEIrEhoa17QVa9tcWextw== X-YMail-OSG: FnW.ly4VM1nebUF_7yIHDv.lw.HafC5XaEHansfahqVACO434ZDZh5hmS9vldny Pq4NR_sCn6Bc2NTpOHL8qtZE1zYQa17_4DG0K.PSQj8Co5qb09mzdEJ5K8mHKOVmT6iymkie7yLe XtmZffpJ0FxbPPI3EqQFprAJ6tGfC1GMZ1h7t7nPgjcIWx_sFuaanWFkmPYGJgNs05br0Wk_BZpf Vz6FV5v7_WnOU.4HTnW1ce0KnK8_RlYu9QU74jQEFm_lnon8.4feKABVLTLCMIHdzk.syLVpoqgI heUlRwUB3tBAZDS58yKk_7V.HVRC_tRSksWirPsIVjQ2I.x61crAjiYOQzHWkDy4WKfDwH11lhTf Kv0dqEULjPQDOqb5jmvSPUflVFWUL1Lg2_rZUyJVPtP8bvxenyVlMU7.jaWn_iBlwUzA99FEWbNO H9DdJAV_tJNrKBSiz5WxCeBLKGvtqQ2ejqjqyB2eo_bpdEfbPcO0UN9h9fEkUreYBIfjg4wKW.Gp cYkKx2.ZZfHI.AvCOkPqc90lUxHCWcdyKL8J4T_6xCKGnSccc1KZfwL3W5dSw8EVD7nn6USOLZu6 YOgifSQtj9sqI3djYXMZiE7GcZR9wm6p1t4zX0JkVZQl5KuOvJQPnS5zS03ytRcaI1S2FceXeRry KLMHwBusnYXryLs63GD6CCq3S4LuPSWVT3oJpzAxYVwGn.o648XZ6UW3.Ns.P13oW_2vc.uTBPZY y26vU5ujs4a9XwI_LoNe.edrgde3Zz9uOVf_rBSH4mbtUdxAgXG1AEZsFjMG.hBx2xgCzuVLDEi9 ZL0eWymC0.Awak9g9yiWDmGGKRA5.fV_DcwYvpaOnTdvP2zRAGN.a0xhbwk9xZhWv4o762YGl6wF W.LA9kBxAPm6sIGJmdE.40Jq1HRNqTFxhQAjAoiC9a_c0bD5Xx7iDx2RG8uwGN6cCkUmSY0DtybJ a5TmODlNoncaonN0aRMZWxJMskO3M9NtZrqrjvY734wqAEdQnuO6Q0H5rPrI1rSl5kyVfjKu.A8D E.ybrCmfL2wLGKTbGFp4NJLqXTypfgtL2A7EI2WT5i6wBJ3R4275mVZ0hsNp9AgVIMWI_12vRnLI hwJdtv5r_q3JTQv7Pgl4M3COnsLtLua2BV6GInaWiC3U9qhz4.XzwAp7uiDBPqep3UegADkmmFE1 UxH3p71KaVYLZMkth1g1RIl.I8YqZhRN9FRWC6105tThvQAWlv4yP7S_9UfkmaFDvm.fmvY6KV_Y TT.VHrJjziRYTbJSUFFyioB5NfFT27pUn9mdhDIKA7h4J_0Q_PmDmjaxpc_ZnNt9TDqRCQbmIMp. EZ0MZaXOjPZXPrxtrmVxMdqKbs5naivV4shzzBEYeBU7rRQI5WMrtkBywIbn3Dl1a4l1V8gjdNkf X3M._2CQRoR3ubWqtCW3Akre6SB1lN3diG82V027ZF3h20X31ToS2UqE5Lf9cGdHTpemtp2jPn8W D2P1GW71Soi9ua75TlT5Gx.SKuVxotyvUio.bZxjnHNSavoEbT9s_jGOnNlAYG71ys9wycVK4Dg8 uJiepL9zvIXCV9mnfy6lF8J.7G7MNaqlc.CzWXOyQKWL9GPUVL0pa7t603nnxlENTNWnhAWGLUBE 26b8FemZerb_VS3VbkhiBuIzWfvSoUnHtLL15MVs_z9DwX9Q5XG52lTsX7onp_e2eVjRmDs9mipv HsaRU6o03bmcGT1OBXmamgYPH9IKGHeDKICwipL01sAQaKh3jCXvNXA3XzrlTdHjTZl2fZs4rW18 FpTNnBEeaSyQ_vrZeERkKJa5vwLl4dT3.YIc.kmeY92t97RT4N75sMAMkytenNpfRD8RMaVYGtRt Sxu7vTVrJrWIkLs1AbyOTbHVC2vhAWkOK_ScFc3Fco9xx7ejYHi4iBjmntTcWApvhLQRtiof1sXt CkLN8lu.AwMojNb7R.U0kR56niiiqyP3tv8EFblERNT4zFOec_c_4U9SXFIAfr55ST.Eo2HnYUMb lob7XyOlXMt1eQuWLmj5TytpIeePHGSCcQp4P9FKjJ_VkcnZ2aL.aFe8jbSYyCfowSUTvytQSNvJ J.vTeZYassemgFpIqqfXk.IGSoMz4OwG4IbJDnU_2W.HhiihFyyr2ZZ4WpxSjHdkjvNt4kB4Ye0Z _Q3D_hnp0SXpfyBKYQ98jK4R.JBBtOhSlu6OXRypDYYQ6tdtyqrQQy9rSBgis3rxcETDr0eK4.vk TgTGB4snVxftwTL2eRtCI X-Sonic-MF: X-Sonic-ID: bcd8d332-060d-4fcb-badb-ed25692ddfb2 Received: from sonic.gate.mail.ne1.yahoo.com by sonic307.consmr.mail.ir2.yahoo.com with HTTP; Wed, 17 Jan 2024 16:05:43 +0000 Received: by hermes--production-ir2-7cc8d8ff75-6xrwx (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 4b97e34d4095166a733e1bdb92efa9f8; Wed, 17 Jan 2024 16:05:42 +0000 (UTC) Message-ID: <09ebd05c-af75-bc36-a83d-981bf06a1975@yahoo.de> Date: Wed, 17 Jan 2024 17:05:36 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: [PING] [PATCH] Fix backtrace limit stopping on inline frame Content-Language: en-US From: Hannes Domani To: gdb-patches@sourceware.org References: <20240106141735.2330-1-ssbssa.ref@yahoo.de> <20240106141735.2330-1-ssbssa@yahoo.de> In-Reply-To: <20240106141735.2330-1-ssbssa@yahoo.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Antivirus: Avast (VPS 240117-0, 01/17/2024), Outbound message X-Antivirus-Status: Clean X-Mailer: WebService/1.1.22010 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo X-Spam-Status: No, score=-10.2 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 List-Id: Ping. On 06.01.2024 15:17, Hannes Domani wrote: > If you have set up a backtrace limit, and the backtrace stops > because of this in an inline frame with arguments, you get an > assertion failure: > ``` > (gdb) bt > #0 normal_frame (i=0) at gdb-29865.c:4 > #1 0x000000013fe3162a in inline_frame (i=0) at gdb-29865.c:9 > #2 main () at gdb-29865.c:14 > (gdb) set backtrace limit 2 > (gdb) bt > #0 normal_frame (i=0) at gdb-29865.c:4 > #1 0x000000013fe3162a in inline_frame ( > C:/src/repos/binutils-gdb.git/gdb/frame.c:3346: internal-error: reinflate: Assertion `m_cached_level >= -1' failed. > ``` > > And if this one if fixed, there is another one as well: > ``` > (gdb) bt > #0 normal_frame (i=0) at gdb-29865.c:4 > #1 0x000000013fdf162a in inline_frame ( > C:/src/repos/binutils-gdb.git/gdb/dwarf2/loc.c:1160: internal-error: dwarf_expr_reg_to_entry_parameter: Assertion `frame != NULL' failed. > ``` > > The reason for both of them is this kind of loop: > ``` > while (get_frame_type (frame) == INLINE_FRAME) > frame = get_prev_frame (frame); > ``` > Since get_prev_frame respects the backtrace limit, it will return > NULL, and from there on you can't continue. > This changes these loops to use get_prev_frame_always instead, so > you always get a non-inline frame in the end. > > With this backtrace works: > ``` > (gdb) bt > #0 normal_frame (i=0) at gdb-29865.c:4 > #1 0x000000013fd4162a in inline_frame (i=0) at gdb-29865.c:9 > (gdb) > ``` > > Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29865 > --- > gdb/dwarf2/frame.c | 2 +- > gdb/dwarf2/loc.c | 2 +- > gdb/testsuite/gdb.opt/inline-bt.c | 8 ++++---- > gdb/testsuite/gdb.opt/inline-bt.exp | 1 + > 4 files changed, 7 insertions(+), 6 deletions(-) > > diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c > index d3d1ecdf1f5..143b934e5ef 100644 > --- a/gdb/dwarf2/frame.c > +++ b/gdb/dwarf2/frame.c > @@ -1423,7 +1423,7 @@ dwarf2_frame_cfa (frame_info_ptr this_frame) > _("cfa not available for record btrace target")); > > while (get_frame_type (this_frame) == INLINE_FRAME) > - this_frame = get_prev_frame (this_frame); > + this_frame = get_prev_frame_always (this_frame); > if (get_frame_unwind_stop_reason (this_frame) == UNWIND_UNAVAILABLE) > throw_error (NOT_AVAILABLE_ERROR, > _("can't compute CFA for this frame: " > diff --git a/gdb/dwarf2/loc.c b/gdb/dwarf2/loc.c > index c15221eb7a2..b1f188bf9c5 100644 > --- a/gdb/dwarf2/loc.c > +++ b/gdb/dwarf2/loc.c > @@ -1156,7 +1156,7 @@ dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame, > > while (get_frame_type (frame) == INLINE_FRAME) > { > - frame = get_prev_frame (frame); > + frame = get_prev_frame_always (frame); > gdb_assert (frame != NULL); > } > > diff --git a/gdb/testsuite/gdb.opt/inline-bt.c b/gdb/testsuite/gdb.opt/inline-bt.c > index 8dac8d30300..0dad0f47e6e 100644 > --- a/gdb/testsuite/gdb.opt/inline-bt.c > +++ b/gdb/testsuite/gdb.opt/inline-bt.c > @@ -28,15 +28,15 @@ volatile int result; > > void bar(void); > > -inline ATTR int func1(void) > +inline ATTR int func1(int s) > { > bar (); > - return x * y; > + return x * y + s; > } > > inline ATTR int func2(void) > { > - return x * func1 (); > + return x * func1 (1); > } > > int main (void) > @@ -47,7 +47,7 @@ int main (void) > y = 8; > bar (); > > - val = func1 (); > + val = func1 (2); > result = val; > > val = func2 (); > diff --git a/gdb/testsuite/gdb.opt/inline-bt.exp b/gdb/testsuite/gdb.opt/inline-bt.exp > index 501b24109e3..b0e5f61a5c7 100644 > --- a/gdb/testsuite/gdb.opt/inline-bt.exp > +++ b/gdb/testsuite/gdb.opt/inline-bt.exp > @@ -65,3 +65,4 @@ gdb_test "up" "#1 .*func1.*" "up from bar (4)" > gdb_test "info frame" ".*in func1.*" "info frame still works" > # Verify the user visible limit works as expected. > gdb_test "up" "Initial frame selected; you cannot go up." "up hits limit" > +gdb_test "backtrace" "#0 bar.*#1 .*func1.*" "backtrace hits limit"