From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28480 invoked by alias); 16 Oct 2009 23:07:20 -0000 Received: (qmail 28465 invoked by uid 22791); 16 Oct 2009 23:07:19 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,SARE_MSGID_LONG40,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (216.239.45.13) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Fri, 16 Oct 2009 23:07:13 +0000 Received: from wpaz37.hot.corp.google.com (wpaz37.hot.corp.google.com [172.24.198.101]) by smtp-out.google.com with ESMTP id n9GN7BbI030259 for ; Fri, 16 Oct 2009 16:07:11 -0700 Received: from ywh15 (ywh15.prod.google.com [10.192.8.15]) by wpaz37.hot.corp.google.com with ESMTP id n9GN78ZR030210 for ; Fri, 16 Oct 2009 16:07:08 -0700 Received: by ywh15 with SMTP id 15so2310033ywh.5 for ; Fri, 16 Oct 2009 16:07:08 -0700 (PDT) MIME-Version: 1.0 Received: by 10.101.186.17 with SMTP id n17mr95313anp.29.1255734428527; Fri, 16 Oct 2009 16:07:08 -0700 (PDT) In-Reply-To: <8ac60eac0910080952p46f15693x6ed339473db0139d@mail.gmail.com> References: <20091002004954.8966C76B2B@ppluzhnikov.mtv.corp.google.com> <8ac60eac0910080916i5a2eb49an5f21f3b5c7fb96ef@mail.gmail.com> <20091008162350.GA8625@caradoc.them.org> <8ac60eac0910080952p46f15693x6ed339473db0139d@mail.gmail.com> Date: Fri, 16 Oct 2009 23:07:00 -0000 Message-ID: <8ac60eac0910161607k55fee22cs379c5b7635d7b6a@mail.gmail.com> Subject: Re: [RFC][patch] Allow to disassemble line. From: Paul Pluzhnikov To: Paul Pluzhnikov , gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=0016368e2b7f8b6e020476157440 X-System-Of-Record: true X-IsSubscribed: yes 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 X-SW-Source: 2009-10/txt/msg00373.txt.bz2 --0016368e2b7f8b6e020476157440 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 5783 On Thu, Oct 8, 2009 at 9:52 AM, Paul Pluzhnikov wrote: > On Thu, Oct 8, 2009 at 9:23 AM, Daniel Jacobowitz wrote: > >> I'd mildly prefer changing the behavior of GDB - but only if we can >> get an additional enhancement that I don't think we have yet: "*" at >> the PC... > > That sounds good. I'll try to implement that. Here my attempt to implement that. I am guessing that it is flawed, as it possibly breaks something in MI (which I don't understand yet). It also breaks quite a few test cases -- I'll adjust expected patterns if it is decided to go ahead with this. I should say that from CLI perspective I like this very much. On x86, often you need to examine 10 or so instructions before the crash point. I usually do 'x/10i $pc-15' (as instruction size is not fixed), and then "hunt" for the current PC in the resulting output. This patch makes it so much easier: (top) x/10i $pc-15 0x54d212 : mov -0x10(%rbp),%edi 0x54d215 : mov $0x1,%esi 0x54d21a : callq 0x452c38 <__sigsetjmp@plt> 0x54d21f : jmp 0x54d237 * 0x54d221 : mov -0x30(%rbp),%rdi 0x54d225 : mov -0x28(%rbp),%rax 0x54d229 : callq *%rax 0x54d22b : mov %eax,-0x4(%rbp) 0x54d22e : callq 0x54c9c0 0x54d233 : test %eax,%eax I also like how 'disassemble-next-line on' works: (top) set disassemble-next-line on (top) ni 0x000000000054d225 510 val = func (func_args); 0x000000000054d221 : 48 8b 7d d0 mov -0x30(%rbp),%rdi * 0x000000000054d225 : 48 8b 45 d8 mov -0x28(%rbp),%rax 0x000000000054d229 : ff d0 callq *%rax 0x000000000054d22b : 89 45 fc mov %eax,-0x4(%rbp) (top) ni 0x000000000054d229 510 val = func (func_args); 0x000000000054d221 : 48 8b 7d d0 mov -0x30(%rbp),%rdi 0x000000000054d225 : 48 8b 45 d8 mov -0x28(%rbp),%rax * 0x000000000054d229 : ff d0 callq *%rax 0x000000000054d22b : 89 45 fc mov %eax,-0x4(%rbp) As well as how 'disas' works: (top) disas Dump of assembler code for function catch_errors: 0x000000000054d1dc : push %rbp 0x000000000054d1dd : mov %rsp,%rbp 0x000000000054d1e0 : sub $0x40,%rsp 0x000000000054d1e4 : mov %rdi,-0x28(%rbp) 0x000000000054d1e8 : mov %rsi,-0x30(%rbp) 0x000000000054d1ec : mov %rdx,-0x38(%rbp) 0x000000000054d1f0 : mov %ecx,-0x3c(%rbp) 0x000000000054d1f3 : movl $0x0,-0x4(%rbp) 0x000000000054d1fa : mov 0x56e1bf(%rip),%rdi # 0xabb3c0 0x000000000054d201 : mov -0x3c(%rbp),%edx 0x000000000054d204 : lea -0x20(%rbp),%rsi 0x000000000054d208 : callq 0x54c678 0x000000000054d20d : mov %rax,-0x10(%rbp) 0x000000000054d211 : mov -0x10(%rbp),%rdi 0x000000000054d215 : mov $0x1,%esi 0x000000000054d21a : callq 0x452c38 <__sigsetjmp@plt> 0x000000000054d21f : jmp 0x54d237 0x000000000054d221 : mov -0x30(%rbp),%rdi 0x000000000054d225 : mov -0x28(%rbp),%rax * 0x000000000054d229 : callq *%rax 0x000000000054d22b : mov %eax,-0x4(%rbp) 0x000000000054d22e : callq 0x54c9c0 0x000000000054d233 : test %eax,%eax 0x000000000054d235 : jne 0x54d221 0x000000000054d237 : callq 0x54c9b0 0x000000000054d23c : test %eax,%eax 0x000000000054d23e : jne 0x54d22e 0x000000000054d240 : mov 0x593721(%rip),%rdi # 0xae0968 0x000000000054d247 : mov -0x20(%rbp),%rdx 0x000000000054d24b : mov -0x18(%rbp),%rcx 0x000000000054d24f : mov -0x38(%rbp),%rsi 0x000000000054d253 : callq 0x54cdea 0x000000000054d258 : mov -0x20(%rbp),%eax 0x000000000054d25b : test %eax,%eax 0x000000000054d25d : je 0x54d268 0x000000000054d25f : movl $0x0,-0x40(%rbp) 0x000000000054d266 : jmp 0x54d26e 0x000000000054d268 : mov -0x4(%rbp),%eax 0x000000000054d26b : mov %eax,-0x40(%rbp) 0x000000000054d26e : mov -0x40(%rbp),%eax 0x000000000054d271 : leaveq 0x000000000054d272 : retq End of assembler dump. Thanks, -- Paul Pluzhnikov 2009-10-16 Paul Pluzhnikov * defs.h (pc_prefix): New prototype. * disasm.c (dump_insns): Identify instruction address as such. * ui-out.c (ui_out_field_core_addr): Highlight current instruction. * printcmd.c (do_examine): Likewise. (pc_prefix, print_pc_prefix): New function. * stack.c (print_frame_info): Disassemble entire current line. --0016368e2b7f8b6e020476157440 Content-Type: text/plain; charset=US-ASCII; name="gdb-disas-20091016.txt" Content-Disposition: attachment; filename="gdb-disas-20091016.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g0vjpwfa0 Content-length: 4157 SW5kZXg6IGRlZnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvY3ZzL3NyYy9zcmMvZ2RiL2RlZnMuaCx2CnJldHJpZXZpbmcgcmV2aXNp b24gMS4yNTUKZGlmZiAtdSAtcCAtdSAtcjEuMjU1IGRlZnMuaAotLS0gZGVm cy5oCTIyIFNlcCAyMDA5IDIyOjM0OjE3IC0wMDAwCTEuMjU1CisrKyBkZWZz LmgJMTYgT2N0IDIwMDkgMjI6Mzc6MzYgLTAwMDAKQEAgLTYwOCw2ICs2MDgs NyBAQCBleHRlcm4gaW50IGJ1aWxkX2FkZHJlc3Nfc3ltYm9saWMgKENPUkVf CiAJCQkJICAgaW50ICp1bm1hcHBlZCk7CiAKIGV4dGVybiB2b2lkIHByaW50 X2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQUREUiwgc3RydWN0 IHVpX2ZpbGUgKik7CitleHRlcm4gY29uc3QgY2hhciAqcGNfcHJlZml4IChD T1JFX0FERFIpOwogCiAvKiBGcm9tIHNvdXJjZS5jICovCiAKSW5kZXg6IGRp c2FzbS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMv c3JjL3NyYy9nZGIvZGlzYXNtLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MzMKZGlmZiAtdSAtcCAtdSAtcjEuMzMgZGlzYXNtLmMKLS0tIGRpc2FzbS5j CTExIEp1bCAyMDA5IDE0OjA0OjIzIC0wMDAwCTEuMzMKKysrIGRpc2FzbS5j CTE2IE9jdCAyMDA5IDIyOjM3OjM2IC0wMDAwCkBAIC0xMTMsNyArMTEzLDcg QEAgZHVtcF9pbnNucyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cgog CSAgICBudW1fZGlzcGxheWVkKys7CiAJfQogICAgICAgdWlfb3V0X2NoYWlu ID0gbWFrZV9jbGVhbnVwX3VpX291dF90dXBsZV9iZWdpbl9lbmQgKHVpb3V0 LCBOVUxMKTsKLSAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0 LCAiYWRkcmVzcyIsIGdkYmFyY2gsIHBjKTsKKyAgICAgIHVpX291dF9maWVs ZF9jb3JlX2FkZHIgKHVpb3V0LCAicGNfYWRkciIsIGdkYmFyY2gsIHBjKTsK IAogICAgICAgaWYgKCFidWlsZF9hZGRyZXNzX3N5bWJvbGljIChwYywgMCwg Jm5hbWUsICZvZmZzZXQsICZmaWxlbmFtZSwKIAkJCQkgICAmbGluZSwgJnVu bWFwcGVkKSkKSW5kZXg6IHByaW50Y21kLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9wcmludGNtZC5jLHYK cmV0cmlldmluZyByZXZpc2lvbiAxLjE2NApkaWZmIC11IC1wIC11IC1yMS4x NjQgcHJpbnRjbWQuYwotLS0gcHJpbnRjbWQuYwkyIEp1bCAyMDA5IDE3OjI1 OjU4IC0wMDAwCTEuMTY0CisrKyBwcmludGNtZC5jCTE2IE9jdCAyMDA5IDIy OjM3OjM2IC0wMDAwCkBAIC03MTYsNiArNzE2LDMyIEBAIHByaW50X2FkZHJl c3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICBwcmludF9hZGRyZXNz X3N5bWJvbGljIChhZGRyLCBzdHJlYW0sIGFzbV9kZW1hbmdsZSwgIiAiKTsK IH0KIAorLyogUmV0dXJuIGEgcHJlZml4IGZvciBpbnN0cnVjdGlvbiBhZGRy ZXNzOgorICAgIiogIiBmb3IgY3VycmVudCBpbnN0cnVjdGlvbiwgZWxzZSAi ICAiLiAgKi8KKworY29uc3QgY2hhciAqCitwY19wcmVmaXggKENPUkVfQURE UiBhZGRyKQoreworICBpZiAoaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKyAgICB7 CisgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CisgICAgICBDT1JF X0FERFIgcGM7CisKKyAgICAgIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1l IChOVUxMKTsKKyAgICAgIHBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7CisK KyAgICAgIGlmIChwYyA9PSBhZGRyKQorCXJldHVybiAiKiAiOworICAgIH0K KyAgcmV0dXJuICIgICI7Cit9CisKK3N0YXRpYyB2b2lkCitwcmludF9wY19w cmVmaXggKENPUkVfQUREUiBhZGRyLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt KQoreworICBmcHV0c19maWx0ZXJlZCAocGNfcHJlZml4IChhZGRyKSwgc3Ry ZWFtKTsKK30KKwogLyogUHJpbnQgYWRkcmVzcyBBRERSIHN5bWJvbGljYWxs eSBvbiBTVFJFQU0uICBQYXJhbWV0ZXIgREVNQU5HTEUKICAgIGNvbnRyb2xz IHdoZXRoZXIgdG8gcHJpbnQgdGhlIHN5bWJvbGljIG5hbWUgInJhdyIgb3Ig ZGVtYW5nbGVkLgogICAgR2xvYmFsIHNldHRpbmcgImFkZHJlc3NwcmludCIg Y29udHJvbHMgd2hldGhlciB0byBwcmludCBoZXggYWRkcmVzcwpAQCAtODA4 LDYgKzgzNCw4IEBAIGRvX2V4YW1pbmUgKHN0cnVjdCBmb3JtYXRfZGF0YSBm bXQsIHN0cnUKICAgd2hpbGUgKGNvdW50ID4gMCkKICAgICB7CiAgICAgICBR VUlUOworICAgICAgaWYgKGZvcm1hdCA9PSAnaScpCisJcHJpbnRfcGNfcHJl Zml4IChuZXh0X2FkZHJlc3MsIGdkYl9zdGRvdXQpOwogICAgICAgcHJpbnRf YWRkcmVzcyAobmV4dF9nZGJhcmNoLCBuZXh0X2FkZHJlc3MsIGdkYl9zdGRv dXQpOwogICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiOiIpOwogICAgICAgZm9y IChpID0gbWF4ZWx0czsKSW5kZXg6IHVpLW91dC5jCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIvdWktb3V0LmMs dgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDMKZGlmZiAtdSAtcCAtdSAtcjEu NDMgdWktb3V0LmMKLS0tIHVpLW91dC5jCTIgSnVsIDIwMDkgMTc6MjE6MDcg LTAwMDAJMS40MworKysgdWktb3V0LmMJMTYgT2N0IDIwMDkgMjI6Mzc6MzYg LTAwMDAKQEAgLTUwNSw2ICs1MDUsOSBAQCB1aV9vdXRfZmllbGRfY29yZV9h ZGRyIChzdHJ1Y3QgdWlfb3V0ICp1CiAgIGVsc2UKICAgICBzdHJjcHkgKGFk ZHN0ciwgaGV4X3N0cmluZ19jdXN0b20gKGFkZHJlc3MsIDE2KSk7CiAKKyAg aWYgKHN0cmNtcCAoZmxkbmFtZSwgInBjX2FkZHIiKSA9PSAwKQorICAgIHVp X291dF90ZXh0ICh1aW91dCwgcGNfcHJlZml4IChhZGRyZXNzKSk7CisKICAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIGZsZG5hbWUsIGFkZHN0cik7 CiB9CiAK --0016368e2b7f8b6e020476157440--