From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18165 invoked by alias); 24 Jan 2016 21:31:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18137 invoked by uid 89); 24 Jan 2016 21:31:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.7 required=5.0 tests=BAYES_20,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.2 spammy=UD:If, Format, !ret, padded X-HELO: nm33-vm1.bullet.mail.ne1.yahoo.com Received: from nm33-vm1.bullet.mail.ne1.yahoo.com (HELO nm33-vm1.bullet.mail.ne1.yahoo.com) (98.138.229.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Sun, 24 Jan 2016 21:31:40 +0000 Received: from [127.0.0.1] by nm33.bullet.mail.ne1.yahoo.com with NNFMP; 24 Jan 2016 21:31:38 -0000 Received: from [98.138.100.102] by nm33.bullet.mail.ne1.yahoo.com with NNFMP; 24 Jan 2016 21:28:55 -0000 Received: from [98.138.89.165] by tm101.bullet.mail.ne1.yahoo.com with NNFMP; 24 Jan 2016 21:28:55 -0000 Received: from [127.0.0.1] by omp1021.mail.ne1.yahoo.com with NNFMP; 24 Jan 2016 21:28:55 -0000 Received: by 98.138.105.225; Sun, 24 Jan 2016 21:28:55 +0000 Date: Sun, 24 Jan 2016 21:31:00 -0000 From: Toshihito Kikuchi Reply-To: Toshihito Kikuchi To: "gdb-patches@sourceware.org" Message-ID: <1827952218.466587.1453670934999.JavaMail.yahoo@mail.yahoo.com> Subject: [PATCH] Add a new format letter to dump instructions backward MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_466586_350119887.1453670934999" References: <1827952218.466587.1453670934999.JavaMail.yahoo.ref@mail.yahoo.com> X-SW-Source: 2016-01/txt/msg00609.txt.bz2 ------=_Part_466586_350119887.1453670934999 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-length: 2017 Hi all, With the attached patch, I'd like to add a new format letter "j" to the "x" command to dump instructions in backward direction. This feature is basically equal to "ub" command in Windows debugger. Below is the sample output: (gdb) disas main Dump of assembler code for function main(int, char**): 0x4040a7 <+0>: push %rbp 0x4040a8 <+1>: mov %rsp,%rbp 0x4040ab <+4>: sub $0x10,%rsp 0x4040af <+8>: mov %edi,-0x4(%rbp) 0x4040b2 <+11>: mov %rsi,-0x10(%rbp) => 0x4040b6 <+15>: lea 0x116(%rip),%rdi # 0x4041d3 0x4040bd <+22>: callq 0x400e30 0x4040c2 <+27>: mov $0x0,%eax 0x4040c7 <+32>: leaveq 0x4040c8 <+33>: retq End of assembler dump. (gdb) x/6j $rip 0x4040a6 : retq 0x4040a7 : push %rbp 0x4040a8 : mov %rsp,%rbp 0x4040ab : sub $0x10,%rsp 0x4040af : mov %edi,-0x4(%rbp) 0x4040b2 : mov %rsi,-0x10(%rbp) (gdb) x/2j 0x4040a2 : add %rdx,%rax 0x4040a5 : leaveq Unlike forward disassemble, theoretically it's impossible to solve a correct frame only using the code. In the example below, we cannot decide whether the instruction before "pop" is "nop" or "mov". 0x4045bb <+89>: eb b4 jmp 0x404571 0x4045bd <+91>: 90 nop 0x4045be <+92>: 5d pop %rbp 0x4045bf <+93>: c3 retq 0x4045bc <+90>: b4 90 mov $0x90,%ah 0x4045be <+92>: 5d pop %rbp 0x4045bf <+93>: c3 retq To solve this, the change takes the help of line number information. I introduced a new function "disassemble_backward" which goes backward by referring the start address of each line.If we go out of the symbol range, we cancel backtrack and dump the smallest address with the message. Tested on x86_64 GNU/Linux. Thanks, Toshihito ------=_Part_466586_350119887.1453670934999 Content-Type: application/octet-stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=ChangeLog Content-ID: Content-length: 391 Z2RiL0NoYW5nZUxvZzoKMjAxNi0wMS0yNCAgVG9zaGloaXRvIEtpa3VjaGkg IDxrLnRvc2hpaGl0b0B5YWhvby5kZT4KCiAgICAqIHByaW50Y21kLmMgKGRp c2Fzc2VtYmxlX2JhY2t3YXJkKTogTmV3IGZ1bmN0aW9uLgogICAgKG51bGxf ZnByaW50ZikgTmV3IGZ1bmN0aW9uLgogICAgKG51bGxfcHJpbnRfYWRkcmVz cykgTmV3IGZ1bmN0aW9uLgogICAgKGRvX2V4YW1pbmUpOiBVc2UgbmV3IGZ1 bmN0aW9uLgogICAgKF9pbml0aWFsaXplX3ByaW50Y21kKSBBZGp1c3QgbmV3 IGZvcm1hdCBsZXR0ZXIuCg== ------=_Part_466586_350119887.1453670934999 Content-Type: text/x-patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=gdb-ub.diff Content-ID: <2b4317f3-49ed-96ae-ecd5-e8a2e642a842@yahoo.com> Content-length: 7064 ZGlmZiAtLWdpdCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMK aW5kZXggZjVjNDIxMS4uYTZjZjE0MSAxMDA2NDQKLS0tIGEvZ2RiL3ByaW50 Y21kLmMKKysrIGIvZ2RiL3ByaW50Y21kLmMKQEAgLTQ3LDYgKzQ3LDcgQEAK ICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCiAjaW5jbHVkZSAiZm9ybWF0 LmgiCiAjaW5jbHVkZSAic291cmNlLmgiCisjaW5jbHVkZSAibGluZXNwZWMu aCIKIAogI2lmZGVmIFRVSQogI2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZv ciB0dWlfYWN0aXZlIGV0IGFsLiAgICovCkBAIC03ODUsNiArNzg2LDk3IEBA IHByaW50X2FkZHJlc3NfZGVtYW5nbGUgKGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICpvcHRzLAogfQogDAogCisvKiBUaGVzZSBlbXB0eSBm dW5jdGlvbnMgYXJlIHVzZWQgaW4gZGlzYXNzZW1ibGVfYmFja3dhcmQgdG8K KyAgIHN1cHByZXNzIHN0YW5kYXJkIG91dHB1dCBkdXJpbmcgdGhlIGNhbGwg dG8gZ2RiYXJjaF9wcmludF9pbnNuLiAqLworCitzdGF0aWMgaW50CitudWxs X2ZwcmludGYgKHZvaWQgKnN0cmVhbSwgY29uc3QgY2hhciAqZm9ybWF0IEFU VFJJQlVURV9VTlVTRUQsIC4uLikKK3sKKyAgcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyB2b2lkCitudWxsX3ByaW50X2FkZHJlc3MgKGJmZF92bWEgYWRkciwg c3RydWN0IGRpc2Fzc2VtYmxlX2luZm8gKmluZm8pCit7CisgIHJldHVybjsK K30KKworLyogUmV3aW5kIGFzc2VtYmx5IGZyb20gYWRkciBhbmQgcmV0dXJu IHRoZSBzdGFydCBhZGRyZXNzIGFmdGVyIHRoZSBnaXZlbgorICAgbnVtYmVy IG9mIGxpbmVzIGFyZSBkaXNhc3NlbWJsZWQuIFRvIGF2b2lkIGRpc2Fzc2Vt YmxpbmcgaW4gYSB3cm9uZyBmcmFtZSwKKyAgIHdlIGdldCBhZGRyZXNzZXMg aW4gYSBjb3JyZWN0IGZyYW1lIHVzaW5nIGxpbmUgaW5mb3JtYXRpb24uCisg ICBJZiB3ZSBnbyBvdXQgb2YgdGhlIHN5bWJvbCByYW5nZSBkdXJpbmcgZGlz YXNzZW1ibGluZywgd2UgcmV0dXJuCisgICB0aGUgc21hbGxlc3QgYWRkcmVz cyB3ZSd2ZSBnb3Qgc28gZmFyLiAqLworCitzdGF0aWMgQ09SRV9BRERSCitk aXNhc3NlbWJsZV9iYWNrd2FyZChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Q09SRV9BRERSIGFkZHIsCisgICAgICAgICAgICAgICAgICAgICBpbnQgY291 bnQsIGludCAqbGluZXNyZWFkKQoreworICBjaGFyIGFkZHJzdHJbNjRdOwor ICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FsczsKKyAgQ09SRV9BRERS IHN0YXJ0X3BjLCBlbmRfcGMsIHJldDsKKworICBzdGFydF9wYyA9IGVuZF9w YyA9IHJldCA9IDA7CisgICpsaW5lc3JlYWQgPSAwOworCisgIHNwcmludGYg KGFkZHJzdHIsICIqJXAiLCAodm9pZCAqKSAoYWRkciAtIDEpKTsKKyAgc2Fs cyA9IGRlY29kZV9saW5lX3dpdGhfbGFzdF9kaXNwbGF5ZWQgKGFkZHJzdHIs IERFQ09ERV9MSU5FX0ZVTkZJUlNUTElORSk7CisgIGlmIChzYWxzLm5lbHRz ID49IDEpCisgICAgeworICAgICAgaWYgKCghc2Fscy5zYWxzWzBdLmxpbmUp CisgICAgICAgICAgfHwgKCFmaW5kX2xpbmVfcGNfcmFuZ2UgKHNhbHMuc2Fs c1swXSwgJnN0YXJ0X3BjLCAmZW5kX3BjKSkpCisgICAgICAgIHsKKyAgICAg ICAgICBwcmludGZfZmlsdGVyZWQgKF8oIk5vIGxpbmUgbnVtYmVyIGluZm9y bWF0aW9uIGF2YWlsYWJsZSAiCisgICAgICAgICAgICAiZm9yIGFkZHJlc3Mg IikpOworICAgICAgICAgIHdyYXBfaGVyZSAoIiAgIik7CisgICAgICAgICAg cHJpbnRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkciAtIDEsIGdkYl9zdGRvdXQp OworICAgICAgICAgIHByaW50Zl9maWx0ZXJlZCAoIlxuIik7CisgICAgICAg ICAgc3RhcnRfcGMgPSBlbmRfcGMgPSAwOworICAgICAgICB9CisgICAgICB4 ZnJlZSAoc2Fscy5zYWxzKTsKKyAgICB9CisKKyAgaWYgKHN0YXJ0X3BjKQor ICAgIHsKKyAgICAgIFZFQyAoQ09SRV9BRERSKSAqcGNzID0gTlVMTDsKKyAg ICAgIHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvIGRpOworICAgICAgQ09SRV9B RERSIHA7CisgICAgICBpbnQgaTsKKworICAgICAgVkVDX3Jlc2VydmUgKENP UkVfQUREUiwgcGNzLCBjb3VudCk7CisKKyAgICAgIGRpID0gZ2RiX2Rpc2Fz c2VtYmxlX2luZm8gKGdkYmFyY2gsIE5VTEwpOworICAgICAgZGkuZnByaW50 Zl9mdW5jID0gbnVsbF9mcHJpbnRmOworICAgICAgZGkucHJpbnRfYWRkcmVz c19mdW5jID0gbnVsbF9wcmludF9hZGRyZXNzOworCisgICAgICBwID0gc3Rh cnRfcGM7CisgICAgICBmb3IgKGkgPSAwOyBwIDwgYWRkcjsgKytpKQorICAg ICAgICB7CisgICAgICAgICAgVkVDX3NhZmVfcHVzaCAoQ09SRV9BRERSLCBw Y3MsIHApOworICAgICAgICAgIHAgKz0gZ2RiYXJjaF9wcmludF9pbnNuIChn ZGJhcmNoLCAoQ09SRV9BRERSKXAsICZkaSk7CisgICAgICAgIH0KKworICAg ICAgaWYgKGkgPj0gY291bnQpCisgICAgICAgIHsKKyAgICAgICAgICByZXQg PSBWRUNfaW5kZXggKENPUkVfQUREUiwgcGNzLCBpIC0gY291bnQpOworICAg ICAgICAgICpsaW5lc3JlYWQgPSBjb3VudDsKKyAgICAgICAgfQorICAgICAg ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBpbnQgbGluZXNyZWFkX2lu dGVybmFsID0gMDsKKyAgICAgICAgICByZXQgPSBkaXNhc3NlbWJsZV9iYWNr d2FyZCAoZ2RiYXJjaCwgVkVDX2luZGV4IChDT1JFX0FERFIsIHBjcywgMCks CisgICAgICAgICAgICAgICBjb3VudCAtIGksICZsaW5lc3JlYWRfaW50ZXJu YWwpOworICAgICAgICAgICpsaW5lc3JlYWQgPSBpICsgbGluZXNyZWFkX2lu dGVybmFsOworCisgICAgICAgICAgLyogUmV0dXJuIHRoZSBzbWFsbGVzdCB2 YWxpZCBhZGRyZXNzIHdlJ3ZlIGdvdAorICAgICAgICAgICAgIGlmIHRoZSBy ZWN1cnNpdmUgY2FsbCBhYm92ZSBmYWlsZWQuICovCisgICAgICAgICAgaWYg KCFyZXQpCisgICAgICAgICAgICByZXQgPSBWRUNfaW5kZXggKENPUkVfQURE UiwgcGNzLCAwKTsKKyAgICAgICAgfQorICAgICAgVkVDX2ZyZWUgKENPUkVf QUREUiwgcGNzKTsKKyAgICB9CisgIHJldHVybiByZXQ7Cit9CisKIC8qIEV4 YW1pbmUgZGF0YSBhdCBhZGRyZXNzIEFERFIgaW4gZm9ybWF0IEZNVC4KICAg IEZldGNoIGl0IGZyb20gbWVtb3J5IGFuZCBwcmludCBvbiBnZGJfc3Rkb3V0 LiAgKi8KIApAQCAtNzk4LDYgKzg5MCw3IEBAIGRvX2V4YW1pbmUgKHN0cnVj dCBmb3JtYXRfZGF0YSBmbXQsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBD T1JFX0FERFIgYWRkcikKICAgaW50IGk7CiAgIGludCBtYXhlbHRzOwogICBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworICBDT1JFX0FERFIg YWRkcl9yZXdvdW5kID0gMDsKIAogICBmb3JtYXQgPSBmbXQuZm9ybWF0Owog ICBzaXplID0gZm10LnNpemU7CkBAIC04MDUsNiArODk4LDI0IEBAIGRvX2V4 YW1pbmUgKHN0cnVjdCBmb3JtYXRfZGF0YSBmbXQsIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgYWRkcikKICAgbmV4dF9nZGJhcmNoID0g Z2RiYXJjaDsKICAgbmV4dF9hZGRyZXNzID0gYWRkcjsKIAorICBpZiAoZm9y bWF0ID09ICdqJykKKyAgICB7CisgICAgICAvKiBJZiAnaicgaXMgZ2l2ZW4s IHdlIGdldCB0aGUgYWRkcmVzcyBhZnRlciBnb2luZyBiYWNrCisgICAgICAg ICBieSAnY291bnQnIGluc3RydWN0aW9ucyBmcm9tIGFkZHIgYW5kIGR1bXAg aW5zdHJ1Y3Rpb25zCisgICAgICAgICBmcm9tIGl0IGJ5IHNldHRpbmcgZm9y bWF0IHRvICdpJy4KKyAgICAgICAgIEF0IHRoZSBlbmQgb2YgdGhpcyBmdW5j dGlvbiwgd2UgYWRqdXN0IG5leHRfYWRkcmVzcworICAgICAgICAgZm9yIHN1 YnNlcXVlbnQgY29tbWFuZCBjYWxscy4gKi8KKyAgICAgIGludCBsaW5lc3Jl YWQgPSAwOworICAgICAgYWRkcl9yZXdvdW5kID0gbmV4dF9hZGRyZXNzID0g ZGlzYXNzZW1ibGVfYmFja3dhcmQgKGdkYmFyY2gsCisgICAgICAgICAgIGFk ZHIsIGNvdW50LCAmbGluZXNyZWFkKTsKKyAgICAgIGlmICghbmV4dF9hZGRy ZXNzKQorICAgICAgICB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9 CisgICAgICBjb3VudCA9IGxpbmVzcmVhZDsKKyAgICAgIGZvcm1hdCA9ICdp JzsKKyAgICB9CisKICAgLyogSW5zdHJ1Y3Rpb24gZm9ybWF0IGltcGxpZXMg ZmV0Y2ggc2luZ2xlIGJ5dGVzCiAgICAgIHJlZ2FyZGxlc3Mgb2YgdGhlIHNw ZWNpZmllZCBzaXplLgogICAgICBUaGUgY2FzZSBvZiBzdHJpbmdzIGlzIGhh bmRsZWQgaW4gZGVjb2RlX2Zvcm1hdCwgb25seSBleHBsaWNpdApAQCAtOTEz LDYgKzEwMjQsOSBAQCBkb19leGFtaW5lIChzdHJ1Y3QgZm9ybWF0X2RhdGEg Zm10LCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIGFkZHIp CiAgICAgICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwogICAgICAgZ2RiX2Zs dXNoIChnZGJfc3Rkb3V0KTsKICAgICB9CisKKyAgaWYgKGFkZHJfcmV3b3Vu ZCkKKyAgICBuZXh0X2FkZHJlc3MgPSBhZGRyX3Jld291bmQ7CiB9CiAMCiBz dGF0aWMgdm9pZApAQCAtMjUxOCw4ICsyNjMyLDggQEAgRXhhbWluZSBtZW1v cnk6IHgvRk1UIEFERFJFU1MuXG5cCiBBRERSRVNTIGlzIGFuIGV4cHJlc3Np b24gZm9yIHRoZSBtZW1vcnkgYWRkcmVzcyB0byBleGFtaW5lLlxuXAogRk1U IGlzIGEgcmVwZWF0IGNvdW50IGZvbGxvd2VkIGJ5IGEgZm9ybWF0IGxldHRl ciBhbmQgYSBzaXplIGxldHRlci5cblwKIEZvcm1hdCBsZXR0ZXJzIGFyZSBv KG9jdGFsKSwgeChoZXgpLCBkKGRlY2ltYWwpLCB1KHVuc2lnbmVkIGRlY2lt YWwpLFxuXAotICB0KGJpbmFyeSksIGYoZmxvYXQpLCBhKGFkZHJlc3MpLCBp KGluc3RydWN0aW9uKSwgYyhjaGFyKSwgcyhzdHJpbmcpXG5cCi0gIGFuZCB6 KGhleCwgemVybyBwYWRkZWQgb24gdGhlIGxlZnQpLlxuXAorICB0KGJpbmFy eSksIGYoZmxvYXQpLCBhKGFkZHJlc3MpLCBpKGluc3RydWN0aW9uKSwgaihp bnN0cnVjdGlvbiBiYWNrd2FyZCksXG5cCisgIGMoY2hhciksIHMoc3RyaW5n KSBhbmQgeihoZXgsIHplcm8gcGFkZGVkIG9uIHRoZSBsZWZ0KS5cblwKIFNp emUgbGV0dGVycyBhcmUgYihieXRlKSwgaChoYWxmd29yZCksIHcod29yZCks IGcoZ2lhbnQsIDggYnl0ZXMpLlxuXAogVGhlIHNwZWNpZmllZCBudW1iZXIg b2Ygb2JqZWN0cyBvZiB0aGUgc3BlY2lmaWVkIHNpemUgYXJlIHByaW50ZWRc blwKIGFjY29yZGluZyB0byB0aGUgZm9ybWF0LlxuXG5cCg== ------=_Part_466586_350119887.1453670934999--