From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nx204.node02.secure-mailgate.com (nx204.node02.secure-mailgate.com [192.162.87.204]) by sourceware.org (Postfix) with ESMTPS id 571E23857C5E for ; Sat, 31 Oct 2020 23:11:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 571E23857C5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=trande.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=zied.guermazi@trande.de Received: from host202.checkdomain.de ([185.137.168.148]) by node02.secure-mailgate.com with esmtps (TLSv1.2:AES128-GCM-SHA256:128) (Exim 4.92) (envelope-from ) id 1kZ01Q-0001kW-As; Sun, 01 Nov 2020 00:10:57 +0100 X-SecureMailgate-Identity: zied.guermazi@trande.de;host202.checkdomain.de Received: from [192.168.178.21] (x4dbe9953.dyn.telefonica.de [77.190.153.83]) (Authenticated sender: zied.guermazi@trande.de) by host202.checkdomain.de (Postfix) with ESMTPSA id 28A882E591B; Sun, 1 Nov 2020 00:10:54 +0100 (CET) To: coresight@lists.linaro.org, toolchain@lists.linaro.org, gdb@sourceware.org From: Zied Guermazi Subject: GDB: etm traces decoding and breakpoints for arm targets Message-ID: <8288e8d1-f5e7-5b69-5bac-370a37177097@trande.de> Date: Sun, 1 Nov 2020 00:10:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------8711997A2FA173AF418C497C" Content-Language: en-US X-PPP-Message-ID: <20201031231054.1342804.3445@host202.checkdomain.de> X-PPP-Vhost: trande.de X-Originating-IP: 185.137.168.148 X-SecureMailgate-Domain: host202.checkdomain.de X-SecureMailgate-Username: 185.137.168.148 Authentication-Results: secure-mailgate.com; auth=pass smtp.auth=185.137.168.148@host202.checkdomain.de X-SecureMailgate-Outgoing-Class: ham X-SecureMailgate-Outgoing-Evidence: Combined (0.15) X-Recommended-Action: accept X-Filter-ID: Mvzo4OR0dZXEDF/gcnlw0QBfAh7lyK8tB8mq1asnDr6pSDasLI4SayDByyq9LIhVUZbR67CQ7/vm /hHDJU4RXkTNWdUk1Ol2OGx3IfrIJKyP9eGNFz9TW9u+Jt8z2T3KSZKa7laaLmORdqRXKwwQP3sU GJ2ooE6KXTxYpps8XkF4/qtTV5Y2YqW9ur9NLxL54oH49Gj9tOVL4qKgVtx0JvzHa2kIUM+1nwe6 3T6AMVTzeZwd2NesjoW0uCCjQZ0MkcQcUkQQzCutPlfh5gO0z8Pt0ycV6+foDDTny/OKzqGjvMUl xf/BgL1pL4nHzkpokFOYOCBh7Dq8iQFxeNn+DFprjQPFk8m4tSTfORUp3ymkEyH7KrT9+ZKm5OH0 yXBVzzeBXoP8uh6PNcohiqw4Pi+NXHf1wJ8aDMrOovAI+WOZsgrZSjX1PuVQfcs70xlCBmlKh0/8 H/IlQ5Qq6JhfNawrCtnIrc4R7NDcMP3bHNOzOVXCPWfYkC8dRIZCBp73si+5m7mmEWZZyR13gEsl HyBqflY7HU0pbqzl3Wk1+b4GKVgdnfwe+vGE4PP0FF7BHYABKkfV3C9wPvmzeuJis1AqOT2SbC3G ORZjYafiQ8ZWkg0KuubIe2ON/QIcWInFSIkgCDFaiyz/Oz68SywZHs85OlQCYIVlOrZWsAWvlzT1 wdh+tKXcyRvQ8ZRUiB0JoV9skJ5C+N2t2Br3nJnI4CVlmJdB1GjejOMpRdWdxgELMK9HC+pUQBAy R03+Yzd80gzm1oVuqH/gNrbca8/V1sSXgZP6LOY/GmzmLdUgMBU4lhWEpYX3V6C9qwWgVqgrrSOI Ppeqwlm2NDGXIJ2x7NaO4oz0XO1u9tpFWBc9lQytfIopdbaoD+0oc56yw4NYCvpB9AkL6Jek/bhU VeRO0k4sMfyBlqWLn7Y0Vqf40wYruHMQaDrHfWzM5rxyUAvcltHIAE8suZC2dW8QcPTiK0IscsPw zUACJ0dbTyQp6gWZRTiqekhsLIBPcSqDTZjPaOSEvy800iyl0Ka9bepxueZnkH7yT3F76WEs6kE4 7XiLg9WIBqN15ezSm0jjlnUlKlMXevn46JVRTJxJYoCS8hAJI9wPgMn/dJVwBNSi+suDMzVXXDKI sJF3L+jYJzIt3soFXPxT/tERazRCOzDDgWvJfOI+MmJ4cnbgLVfroSeXTO3/8a6duGZ1OJ479SPg WWe6j1YpwwQHv7D1BjCVPco2wia7daN/BwihMITBGAB5qgkvma9fRNkjuX1716YFE65PcMKupx+8 /294AsiwN2Hj51ROG3pN7m8D6WMWugI= X-Report-Abuse-To: spam@node04.secure-mailgate.com X-Spam-Status: No, score=3.4 required=5.0 tests=BAYES_00, JMQ_SPF_NEUTRAL, KAM_ASCII_DIVIDERS, KAM_DMARC_STATUS, KAM_SHORT, RCVD_IN_BARRACUDACENTRAL, SCC_5_SHORT_WORD_LINES, SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Level: *** X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Oct 2020 23:11:04 -0000 This is a multi-part message in MIME format. --------------8711997A2FA173AF418C497C Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit hi, while testing the implementation in gdb of branch tracing on arm processors using etm, I faced the the situation where a breakpoint was set, was hit and then the execution of the program was continued.  While decoding generated traces,  I got the address of the breakpoint (0x400552) executed twice, and then the following address (0x400554) also executed twice. the instruction at (0x400554) is a BL ( a function call) and the second execution corrupts the function history. here is a dump of generated trace elements --------------------------------- trace_chan_id: 18 isa: CS_ETM_ISA_T32 start addr = 0x400552 end addr   = 0x400554 instructions count = 1 last_i_type: OCSD_INSTR_OTHER last_i_subtype: OCSD_S_INSTR_NONE last instruction was executed last instruction size: 2 --------------------------------- trace_chan_id: 18 isa: CS_ETM_ISA_T32 start addr = 0x400552 end addr   = 0x400554 instructions count = 1 last_i_type: OCSD_INSTR_OTHER last_i_subtype: OCSD_S_INSTR_NONE last instruction was executed last instruction size: 2 --------------------------------- trace_chan_id: 18 isa: CS_ETM_ISA_T32 start addr = 0x400554 end addr   = 0x400558 instructions count = 1 last_i_type: OCSD_INSTR_BR last_i_subtype: OCSD_S_INSTR_BR_LINK last instruction was executed last instruction size: 4 --------------------------------- trace_chan_id: 18 isa: CS_ETM_ISA_T32 start addr = 0x400554 end addr   = 0x400558 instructions count = 1 last_i_type: OCSD_INSTR_BR last_i_subtype: OCSD_S_INSTR_BR_LINK last instruction was executed last instruction size: 4 the explanation I have for this behavior is that : -when setting the software breakpoint, the memory content of the instruction (at 0x400552) was altered to the instruction BKPT, -when the breakpoint was hit, the original opcode was set at (0x400552) and a BKPT was set to the next instruction address (0x400554), then the execution was continued -when the second breakpoint (0x400554) was hit, the a BKPT opcode was set at (0x400552) and the original opcode was set at (0x400554) then the execution was continued I am using the function "int target_read_code (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)" to give program memory content to the decoder. so the collected etm traces are correct, but, as memory was altered in between, the decoder is "cheated". I need to identify the re-execution of code due to breakpoint handling, and roll back its impact on etm decoding. is there a mean to get the actual content of program memory including patched addresses? is there a means of getting the history of patched addresses during the debugging of a program? what is the type and subtype of a BKPT instruction in a decoded trace elements? do you have any other idea for handling this situation? I am attaching the source code of the program as well as the disassembled binary. the code was compiled as an application running on linux on an ARMv7 A (STM32MP157 SoC). the breakpoint was set at line 43 in the source code (line 238 in the disassembled code) Kind Regards Zied Guermazi --------------8711997A2FA173AF418C497C Content-Type: text/plain; charset=UTF-8; name="function_call_history.s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="function_call_history.s" CmZ1bmN0aW9uX2NhbGxfaGlzdG9yeTogICAgIGZpbGUgZm9ybWF0IGVsZjMyLWxpdHRsZWFy bQoKCkRpc2Fzc2VtYmx5IG9mIHNlY3Rpb24gLmluaXQ6CgowMDAwMDM4MCA8X2luaXQ+Ogog MzgwOgllOTJkNDAwOCAJcHVzaAl7cjMsIGxyfQogMzg0OgllYjAwMDAyMyAJYmwJNDE4IDxj YWxsX3dlYWtfZm4+CiAzODg6CWU4YmQ4MDA4IAlwb3AJe3IzLCBwY30KCkRpc2Fzc2VtYmx5 IG9mIHNlY3Rpb24gLnBsdDoKCjAwMDAwMzhjIDwucGx0PjoKIDM4YzoJZTUyZGUwMDQgCXB1 c2gJe2xyfQkJOyAoc3RyIGxyLCBbc3AsICMtNF0hKQogMzkwOgllNTlmZTAwNCAJbGRyCWxy LCBbcGMsICM0XQk7IDM5YyA8LnBsdCsweDEwPgogMzk0OgllMDhmZTAwZSAJYWRkCWxyLCBw YywgbHIKIDM5ODoJZTViZWYwMDggCWxkcglwYywgW2xyLCAjOF0hCiAzOWM6CTAwMDEwYzJj IAkud29yZAkweDAwMDEwYzJjCgowMDAwMDNhMCA8X19jeGFfZmluYWxpemVAcGx0PjoKIDNh MDoJZTI4ZmM2MDAgCWFkZAlpcCwgcGMsICMwLCAxMgogM2E0OgllMjhjY2ExMCAJYWRkCWlw LCBpcCwgIzE2LCAyMAk7IDB4MTAwMDAKIDNhODoJZTViY2ZjMmMgCWxkcglwYywgW2lwLCAj MzExNl0hCTsgMHhjMmMKCjAwMDAwM2FjIDxfX2xpYmNfc3RhcnRfbWFpbkBwbHQ+OgogM2Fj OgllMjhmYzYwMCAJYWRkCWlwLCBwYywgIzAsIDEyCiAzYjA6CWUyOGNjYTEwIAlhZGQJaXAs IGlwLCAjMTYsIDIwCTsgMHgxMDAwMAogM2I0OgllNWJjZmMyNCAJbGRyCXBjLCBbaXAsICMz MTA4XSEJOyAweGMyNAoKMDAwMDAzYjggPF9fZ21vbl9zdGFydF9fQHBsdD46CiAzYjg6CWUy OGZjNjAwIAlhZGQJaXAsIHBjLCAjMCwgMTIKIDNiYzoJZTI4Y2NhMTAgCWFkZAlpcCwgaXAs ICMxNiwgMjAJOyAweDEwMDAwCiAzYzA6CWU1YmNmYzFjIAlsZHIJcGMsIFtpcCwgIzMxMDBd IQk7IDB4YzFjCgowMDAwMDNjNCA8YWJvcnRAcGx0PjoKIDNjNDoJZTI4ZmM2MDAgCWFkZAlp cCwgcGMsICMwLCAxMgogM2M4OgllMjhjY2ExMCAJYWRkCWlwLCBpcCwgIzE2LCAyMAk7IDB4 MTAwMDAKIDNjYzoJZTViY2ZjMTQgCWxkcglwYywgW2lwLCAjMzA5Ml0hCTsgMHhjMTQKCkRp c2Fzc2VtYmx5IG9mIHNlY3Rpb24gLnRleHQ6CgowMDAwMDNkMCA8X3N0YXJ0PjoKIDNkMDoJ ZjA0ZiAwYjAwIAltb3YudwlmcCwgIzAKIDNkNDoJZjA0ZiAwZTAwIAltb3YudwlsciwgIzAK IDNkODoJYmMwMiAgICAgIAlwb3AJe3IxfQogM2RhOgk0NjZhICAgICAgCW1vdglyMiwgc3AK IDNkYzoJYjQwNCAgICAgIAlwdXNoCXtyMn0KIDNkZToJYjQwMSAgICAgIAlwdXNoCXtyMH0K IDNlMDoJZjhkZiBhMDI0IAlsZHIudwlzbCwgW3BjLCAjMzZdCTsgNDA4IDxfc3RhcnQrMHgz OD4KIDNlNDoJYTMwOCAgICAgIAlhZGQJcjMsIHBjLCAjMzIJOyAoYWRyIHIzLCA0MDggPF9z dGFydCsweDM4PikKIDNlNjoJNDQ5YSAgICAgIAlhZGQJc2wsIHIzCiAzZTg6CWY4ZGYgYzAy MCAJbGRyLncJaXAsIFtwYywgIzMyXQk7IDQwYyA8X3N0YXJ0KzB4M2M+CiAzZWM6CWY4NWEg YzAwYyAJbGRyLncJaXAsIFtzbCwgaXBdCiAzZjA6CWY4NGQgY2QwNCAJc3RyLncJaXAsIFtz cCwgIy00XSEKIDNmNDoJNGIwNiAgICAgIAlsZHIJcjMsIFtwYywgIzI0XQk7ICg0MTAgPF9z dGFydCsweDQwPikKIDNmNjoJZjg1YSAzMDAzIAlsZHIudwlyMywgW3NsLCByM10KIDNmYToJ NDgwNiAgICAgIAlsZHIJcjAsIFtwYywgIzI0XQk7ICg0MTQgPF9zdGFydCsweDQ0PikKIDNm YzoJZjg1YSAwMDAwIAlsZHIudwlyMCwgW3NsLCByMF0KIDQwMDoJZjdmZiBlZmQ0IAlibHgJ M2FjIDxfX2xpYmNfc3RhcnRfbWFpbkBwbHQ+CiA0MDQ6CWY3ZmYgZWZkZSAJYmx4CTNjNCA8 YWJvcnRAcGx0PgogNDA4OgkwMDAxMGJjMCAJLndvcmQJMHgwMDAxMGJjMAogNDBjOgkwMDAw MDAxYyAJLndvcmQJMHgwMDAwMDAxYwogNDEwOgkwMDAwMDAyYyAJLndvcmQJMHgwMDAwMDAy YwogNDE0OgkwMDAwMDAzMCAJLndvcmQJMHgwMDAwMDAzMAoKMDAwMDA0MTggPGNhbGxfd2Vh a19mbj46CiA0MTg6CWU1OWYzMDE0IAlsZHIJcjMsIFtwYywgIzIwXQk7IDQzNCA8Y2FsbF93 ZWFrX2ZuKzB4MWM+CiA0MWM6CWU1OWYyMDE0IAlsZHIJcjIsIFtwYywgIzIwXQk7IDQzOCA8 Y2FsbF93ZWFrX2ZuKzB4MjA+CiA0MjA6CWUwOGYzMDAzIAlhZGQJcjMsIHBjLCByMwogNDI0 OgllNzkzMjAwMiAJbGRyCXIyLCBbcjMsIHIyXQogNDI4OgllMzUyMDAwMCAJY21wCXIyLCAj MAogNDJjOgkwMTJmZmYxZSAJYnhlcQlscgogNDMwOgllYWZmZmZlMCAJYgkzYjggPF9fZ21v bl9zdGFydF9fQHBsdD4KIDQzNDoJMDAwMTBiYTAgCS53b3JkCTB4MDAwMTBiYTAKIDQzODoJ MDAwMDAwMjggCS53b3JkCTB4MDAwMDAwMjgKCjAwMDAwNDNjIDxkZXJlZ2lzdGVyX3RtX2Ns b25lcz46CiA0M2M6CTQ4MDYgICAgICAJbGRyCXIwLCBbcGMsICMyNF0JOyAoNDU4IDxkZXJl Z2lzdGVyX3RtX2Nsb25lcysweDFjPikKIDQzZToJNGIwNyAgICAgIAlsZHIJcjMsIFtwYywg IzI4XQk7ICg0NWMgPGRlcmVnaXN0ZXJfdG1fY2xvbmVzKzB4MjA+KQogNDQwOgk0NDc4ICAg ICAgCWFkZAlyMCwgcGMKIDQ0MjoJNGEwNyAgICAgIAlsZHIJcjIsIFtwYywgIzI4XQk7ICg0 NjAgPGRlcmVnaXN0ZXJfdG1fY2xvbmVzKzB4MjQ+KQogNDQ0Ogk0NDdiICAgICAgCWFkZAly MywgcGMKIDQ0NjoJNDI4MyAgICAgIAljbXAJcjMsIHIwCiA0NDg6CTQ0N2EgICAgICAJYWRk CXIyLCBwYwogNDRhOglkMDAzICAgICAgCWJlcS5uCTQ1NCA8ZGVyZWdpc3Rlcl90bV9jbG9u ZXMrMHgxOD4KIDQ0YzoJNGIwNSAgICAgIAlsZHIJcjMsIFtwYywgIzIwXQk7ICg0NjQgPGRl cmVnaXN0ZXJfdG1fY2xvbmVzKzB4Mjg+KQogNDRlOgk1OGQzICAgICAgCWxkcglyMywgW3Iy LCByM10KIDQ1MDoJYjEwMyAgICAgIAljYnoJcjMsIDQ1NCA8ZGVyZWdpc3Rlcl90bV9jbG9u ZXMrMHgxOD4KIDQ1MjoJNDcxOCAgICAgIAlieAlyMwogNDU0Ogk0NzcwICAgICAgCWJ4CWxy CiA0NTY6CWJmMDAgICAgICAJbm9wCiA0NTg6CTAwMDEwYmM0IAkud29yZAkweDAwMDEwYmM0 CiA0NWM6CTAwMDEwYmMwIAkud29yZAkweDAwMDEwYmMwCiA0NjA6CTAwMDEwYjdjIAkud29y ZAkweDAwMDEwYjdjCiA0NjQ6CTAwMDAwMDI0IAkud29yZAkweDAwMDAwMDI0CgowMDAwMDQ2 OCA8cmVnaXN0ZXJfdG1fY2xvbmVzPjoKIDQ2ODoJNDgwOCAgICAgIAlsZHIJcjAsIFtwYywg IzMyXQk7ICg0OGMgPHJlZ2lzdGVyX3RtX2Nsb25lcysweDI0PikKIDQ2YToJNGIwOSAgICAg IAlsZHIJcjMsIFtwYywgIzM2XQk7ICg0OTAgPHJlZ2lzdGVyX3RtX2Nsb25lcysweDI4PikK IDQ2YzoJNDQ3OCAgICAgIAlhZGQJcjAsIHBjCiA0NmU6CTRhMDkgICAgICAJbGRyCXIyLCBb cGMsICMzNl0JOyAoNDk0IDxyZWdpc3Rlcl90bV9jbG9uZXMrMHgyYz4pCiA0NzA6CTQ0N2Ig ICAgICAJYWRkCXIzLCBwYwogNDcyOgkxYTE5ICAgICAgCXN1YnMJcjEsIHIzLCByMAogNDc0 Ogk0NDdhICAgICAgCWFkZAlyMiwgcGMKIDQ3NjoJMTA4OSAgICAgIAlhc3JzCXIxLCByMSwg IzIKIDQ3ODoJZWIwMSA3MWQxIAlhZGQudwlyMSwgcjEsIHIxLCBsc3IgIzMxCiA0N2M6CTEw NDkgICAgICAJYXNycwlyMSwgcjEsICMxCiA0N2U6CWQwMDMgICAgICAJYmVxLm4JNDg4IDxy ZWdpc3Rlcl90bV9jbG9uZXMrMHgyMD4KIDQ4MDoJNGIwNSAgICAgIAlsZHIJcjMsIFtwYywg IzIwXQk7ICg0OTggPHJlZ2lzdGVyX3RtX2Nsb25lcysweDMwPikKIDQ4MjoJNThkMyAgICAg IAlsZHIJcjMsIFtyMiwgcjNdCiA0ODQ6CWIxMDMgICAgICAJY2J6CXIzLCA0ODggPHJlZ2lz dGVyX3RtX2Nsb25lcysweDIwPgogNDg2Ogk0NzE4ICAgICAgCWJ4CXIzCiA0ODg6CTQ3NzAg ICAgICAJYngJbHIKIDQ4YToJYmYwMCAgICAgIAlub3AKIDQ4YzoJMDAwMTBiOTggCS53b3Jk CTB4MDAwMTBiOTgKIDQ5MDoJMDAwMTBiOTQgCS53b3JkCTB4MDAwMTBiOTQKIDQ5NDoJMDAw MTBiNTAgCS53b3JkCTB4MDAwMTBiNTAKIDQ5ODoJMDAwMDAwMzQgCS53b3JkCTB4MDAwMDAw MzQKCjAwMDAwNDljIDxfX2RvX2dsb2JhbF9kdG9yc19hdXg+OgogNDljOgliNTA4ICAgICAg CXB1c2gJe3IzLCBscn0KIDQ5ZToJNGIwYSAgICAgIAlsZHIJcjMsIFtwYywgIzQwXQk7ICg0 YzggPF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCsweDJjPikKIDRhMDoJNGEwYSAgICAgIAlsZHIJ cjIsIFtwYywgIzQwXQk7ICg0Y2MgPF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCsweDMwPikKIDRh MjoJNDQ3YiAgICAgIAlhZGQJcjMsIHBjCiA0YTQ6CTQ0N2EgICAgICAJYWRkCXIyLCBwYwog NGE2Ogk3ODFiICAgICAgCWxkcmIJcjMsIFtyMywgIzBdCiA0YTg6CWI5NmIgICAgICAJY2Ju eglyMywgNGM2IDxfX2RvX2dsb2JhbF9kdG9yc19hdXgrMHgyYT4KIDRhYToJNGIwOSAgICAg IAlsZHIJcjMsIFtwYywgIzM2XQk7ICg0ZDAgPF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCsweDM0 PikKIDRhYzoJNThkMyAgICAgIAlsZHIJcjMsIFtyMiwgcjNdCiA0YWU6CWIxMjMgICAgICAJ Y2J6CXIzLCA0YmEgPF9fZG9fZ2xvYmFsX2R0b3JzX2F1eCsweDFlPgogNGIwOgk0YjA4ICAg ICAgCWxkcglyMywgW3BjLCAjMzJdCTsgKDRkNCA8X19kb19nbG9iYWxfZHRvcnNfYXV4KzB4 Mzg+KQogNGIyOgk0NDdiICAgICAgCWFkZAlyMywgcGMKIDRiNDoJNjgxOCAgICAgIAlsZHIJ cjAsIFtyMywgIzBdCiA0YjY6CWY3ZmYgZWY3NCAJYmx4CTNhMCA8X19jeGFfZmluYWxpemVA cGx0PgogNGJhOglmN2ZmIGZmYmYgCWJsCTQzYyA8ZGVyZWdpc3Rlcl90bV9jbG9uZXM+CiA0 YmU6CTRiMDYgICAgICAJbGRyCXIzLCBbcGMsICMyNF0JOyAoNGQ4IDxfX2RvX2dsb2JhbF9k dG9yc19hdXgrMHgzYz4pCiA0YzA6CTIyMDEgICAgICAJbW92cwlyMiwgIzEKIDRjMjoJNDQ3 YiAgICAgIAlhZGQJcjMsIHBjCiA0YzQ6CTcwMWEgICAgICAJc3RyYglyMiwgW3IzLCAjMF0K IDRjNjoJYmQwOCAgICAgIAlwb3AJe3IzLCBwY30KIDRjODoJMDAwMTBiNjIgCS53b3JkCTB4 MDAwMTBiNjIKIDRjYzoJMDAwMTBiMjAgCS53b3JkCTB4MDAwMTBiMjAKIDRkMDoJMDAwMDAw MjAgCS53b3JkCTB4MDAwMDAwMjAKIDRkNDoJMDAwMTBiNGUgCS53b3JkCTB4MDAwMTBiNGUK IDRkODoJMDAwMTBiNDIgCS53b3JkCTB4MDAwMTBiNDIKCjAwMDAwNGRjIDxmcmFtZV9kdW1t eT46CiA0ZGM6CWU3YzQgICAgICAJYi5uCTQ2OCA8cmVnaXN0ZXJfdG1fY2xvbmVzPgogNGRl OgliZjAwICAgICAgCW5vcAoKMDAwMDA0ZTAgPGluYz46CiAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KCmludAppbmMgKGludCBpKQp7CiA0ZTA6CWI0ODAgICAgICAJ cHVzaAl7cjd9CiA0ZTI6CWIwODMgICAgICAJc3ViCXNwLCAjMTIKIDRlNDoJYWYwMCAgICAg IAlhZGQJcjcsIHNwLCAjMAogNGU2Ogk2MDc4ICAgICAgCXN0cglyMCwgW3I3LCAjNF0KICBy ZXR1cm4gaSsxOwogNGU4Ogk2ODdiICAgICAgCWxkcglyMywgW3I3LCAjNF0KIDRlYToJMzMw MSAgICAgIAlhZGRzCXIzLCAjMQp9CiA0ZWM6CTQ2MTggICAgICAJbW92CXIwLCByMwogNGVl OgkzNzBjICAgICAgCWFkZHMJcjcsICMxMgogNGYwOgk0NmJkICAgICAgCW1vdglzcCwgcjcK IDRmMjoJZjg1ZCA3YjA0IAlsZHIudwlyNywgW3NwXSwgIzQKIDRmNjoJNDc3MCAgICAgIAli eAlscgoKMDAwMDA0ZjggPGZpYj46CgppbnQKZmliIChpbnQgbikKewogNGY4OgliNTkwICAg ICAgCXB1c2gJe3I0LCByNywgbHJ9CiA0ZmE6CWIwODMgICAgICAJc3ViCXNwLCAjMTIKIDRm YzoJYWYwMCAgICAgIAlhZGQJcjcsIHNwLCAjMAogNGZlOgk2MDc4ICAgICAgCXN0cglyMCwg W3I3LCAjNF0KICBpZiAobiA8PSAxKQogNTAwOgk2ODdiICAgICAgCWxkcglyMywgW3I3LCAj NF0KIDUwMjoJMmIwMSAgICAgIAljbXAJcjMsICMxCiA1MDQ6CWRjMDEgICAgICAJYmd0Lm4J NTBhIDxmaWIrMHgxMj4KICAgIHJldHVybiBuOwogNTA2Ogk2ODdiICAgICAgCWxkcglyMywg W3I3LCAjNF0KIDUwODoJZTAwYyAgICAgIAliLm4JNTI0IDxmaWIrMHgyYz4KCiAgcmV0dXJu IGZpYihuLTIpICsgZmliKG4tMSk7CiA1MGE6CTY4N2IgICAgICAJbGRyCXIzLCBbcjcsICM0 XQogNTBjOgkzYjAyICAgICAgCXN1YnMJcjMsICMyCiA1MGU6CTQ2MTggICAgICAJbW92CXIw LCByMwogNTEwOglmN2ZmIGZmZjIgCWJsCTRmOCA8ZmliPgogNTE0Ogk0NjA0ICAgICAgCW1v dglyNCwgcjAKIDUxNjoJNjg3YiAgICAgIAlsZHIJcjMsIFtyNywgIzRdCiA1MTg6CTNiMDEg ICAgICAJc3VicwlyMywgIzEKIDUxYToJNDYxOCAgICAgIAltb3YJcjAsIHIzCiA1MWM6CWY3 ZmYgZmZlYyAJYmwJNGY4IDxmaWI+CiA1MjA6CTQ2MDMgICAgICAJbW92CXIzLCByMAogNTIy Ogk0NDIzICAgICAgCWFkZAlyMywgcjQKfQogNTI0Ogk0NjE4ICAgICAgCW1vdglyMCwgcjMK IDUyNjoJMzcwYyAgICAgIAlhZGRzCXI3LCAjMTIKIDUyODoJNDZiZCAgICAgIAltb3YJc3As IHI3CiA1MmE6CWJkOTAgICAgICAJcG9wCXtyNCwgcjcsIHBjfQoKMDAwMDA1MmMgPG1haW4+ OgoKaW50Cm1haW4gKHZvaWQpCnsKIDUyYzoJYjU4MCAgICAgIAlwdXNoCXtyNywgbHJ9CiA1 MmU6CWIwODIgICAgICAJc3ViCXNwLCAjOAogNTMwOglhZjAwICAgICAgCWFkZAlyNywgc3As ICMwCiAgaW50IGksIGo7CgogIGZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKQogNTMyOgkyMzAw ICAgICAgCW1vdnMJcjMsICMwCiA1MzQ6CTYwM2IgICAgICAJc3RyCXIzLCBbcjcsICMwXQog NTM2OgllMDA5ICAgICAgCWIubgk1NGMgPG1haW4rMHgyMD4KICAgIGogKz0gaW5jKGkpOwog NTM4Ogk2ODM4ICAgICAgCWxkcglyMCwgW3I3LCAjMF0KIDUzYToJZjdmZiBmZmQxIAlibAk0 ZTAgPGluYz4KIDUzZToJNDYwMiAgICAgIAltb3YJcjIsIHIwCiA1NDA6CTY4N2IgICAgICAJ bGRyCXIzLCBbcjcsICM0XQogNTQyOgk0NDEzICAgICAgCWFkZAlyMywgcjIKIDU0NDoJNjA3 YiAgICAgIAlzdHIJcjMsIFtyNywgIzRdCiAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspCiA1 NDY6CTY4M2IgICAgICAJbGRyCXIzLCBbcjcsICMwXQogNTQ4OgkzMzAxICAgICAgCWFkZHMJ cjMsICMxCiA1NGE6CTYwM2IgICAgICAJc3RyCXIzLCBbcjcsICMwXQogNTRjOgk2ODNiICAg ICAgCWxkcglyMywgW3I3LCAjMF0KIDU0ZToJMmIwOSAgICAgIAljbXAJcjMsICM5CiA1NTA6 CWRkZjIgICAgICAJYmxlLm4JNTM4IDxtYWluKzB4Yz4KCiAgaiArPSBmaWIoMyk7IC8qIGJw LjEgKi8KIDU1MjoJMjAwMyAgICAgIAltb3ZzCXIwLCAjMwogNTU0OglmN2ZmIGZmZDAgCWJs CTRmOCA8ZmliPgogNTU4Ogk0NjAyICAgICAgCW1vdglyMiwgcjAKIDU1YToJNjg3YiAgICAg IAlsZHIJcjMsIFtyNywgIzRdCiA1NWM6CTQ0MTMgICAgICAJYWRkCXIzLCByMgogNTVlOgk2 MDdiICAgICAgCXN0cglyMywgW3I3LCAjNF0KICByZXR1cm4gajsgLyogYnAuMiAqLwogNTYw Ogk2ODdiICAgICAgCWxkcglyMywgW3I3LCAjNF0KfQogNTYyOgk0NjE4ICAgICAgCW1vdgly MCwgcjMKIDU2NDoJMzcwOCAgICAgIAlhZGRzCXI3LCAjOAogNTY2Ogk0NmJkICAgICAgCW1v dglzcCwgcjcKIDU2ODoJYmQ4MCAgICAgIAlwb3AJe3I3LCBwY30KCS4uLgoKMDAwMDA1NmMg PF9fbGliY19jc3VfaW5pdD46CiA1NmM6CWU5MmQgNDNmOCAJc3RtZGIJc3AhLCB7cjMsIHI0 LCByNSwgcjYsIHI3LCByOCwgcjksIGxyfQogNTcwOgk0NjA3ICAgICAgCW1vdglyNywgcjAK IDU3MjoJNGUwYyAgICAgIAlsZHIJcjYsIFtwYywgIzQ4XQk7ICg1YTQgPF9fbGliY19jc3Vf aW5pdCsweDM4PikKIDU3NDoJNDY4OCAgICAgIAltb3YJcjgsIHIxCiA1NzY6CTRkMGMgICAg ICAJbGRyCXI1LCBbcGMsICM0OF0JOyAoNWE4IDxfX2xpYmNfY3N1X2luaXQrMHgzYz4pCiA1 Nzg6CTQ2OTEgICAgICAJbW92CXI5LCByMgogNTdhOgk0NDdlICAgICAgCWFkZAlyNiwgcGMK IDU3YzoJZjdmZiBlZjAwIAlibHgJMzgwIDxfaW5pdD4KIDU4MDoJNDQ3ZCAgICAgIAlhZGQJ cjUsIHBjCiA1ODI6CTFiNzYgICAgICAJc3VicwlyNiwgcjYsIHI1CiA1ODQ6CTEwYjYgICAg ICAJYXNycwlyNiwgcjYsICMyCiA1ODY6CWQwMGEgICAgICAJYmVxLm4JNTllIDxfX2xpYmNf Y3N1X2luaXQrMHgzMj4KIDU4ODoJM2QwNCAgICAgIAlzdWJzCXI1LCAjNAogNThhOgkyNDAw ICAgICAgCW1vdnMJcjQsICMwCiA1OGM6CTM0MDEgICAgICAJYWRkcwlyNCwgIzEKIDU4ZToJ Zjg1NSAzZjA0IAlsZHIudwlyMywgW3I1LCAjNF0hCiA1OTI6CTQ2NGEgICAgICAJbW92CXIy LCByOQogNTk0Ogk0NjQxICAgICAgCW1vdglyMSwgcjgKIDU5NjoJNDYzOCAgICAgIAltb3YJ cjAsIHI3CiA1OTg6CTQ3OTggICAgICAJYmx4CXIzCiA1OWE6CTQyYTYgICAgICAJY21wCXI2 LCByNAogNTljOglkMWY2ICAgICAgCWJuZS5uCTU4YyA8X19saWJjX2NzdV9pbml0KzB4MjA+ CiA1OWU6CWU4YmQgODNmOCAJbGRtaWEudwlzcCEsIHtyMywgcjQsIHI1LCByNiwgcjcsIHI4 LCByOSwgcGN9CiA1YTI6CWJmMDAgICAgICAJbm9wCiA1YTQ6CTAwMDEwOTRlIAkud29yZAkw eDAwMDEwOTRlCiA1YTg6CTAwMDEwOTQ0IAkud29yZAkweDAwMDEwOTQ0CgowMDAwMDVhYyA8 X19saWJjX2NzdV9maW5pPjoKIDVhYzoJNDc3MCAgICAgIAlieAlscgogNWFlOgliZjAwICAg ICAgCW5vcAoKRGlzYXNzZW1ibHkgb2Ygc2VjdGlvbiAuZmluaToKCjAwMDAwNWIwIDxfZmlu aT46CiA1YjA6CWU5MmQ0MDA4IAlwdXNoCXtyMywgbHJ9CiA1YjQ6CWU4YmQ4MDA4IAlwb3AJ e3IzLCBwY30K --------------8711997A2FA173AF418C497C Content-Type: text/x-csrc; charset=UTF-8; name="function_call_history.c" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="function_call_history.c" /* This testcase is part of GDB, the GNU debugger. Copyright 2013-2019 Free Software Foundation, Inc. Contributed by Intel Corp. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ int inc (int i) { return i+1; } int fib (int n) { if (n <= 1) return n; return fib(n-2) + fib(n-1); } int main (void) { int i, j; for (i = 0; i < 10; i++) j += inc(i); j += fib(3); /* bp.1 */ return j; /* bp.2 */ } --------------8711997A2FA173AF418C497C--