From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11083 invoked by alias); 26 Aug 2009 02:59:06 -0000 Received: (qmail 11073 invoked by uid 22791); 26 Aug 2009 02:59:05 -0000 X-SWARE-Spam-Status: No, hits=-1.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_22,J_CHICKENPOX_25,SARE_MSGID_LONG40,SPF_PASS X-Spam-Check-By: sourceware.org Received: from mail-px0-f194.google.com (HELO mail-px0-f194.google.com) (209.85.216.194) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 26 Aug 2009 02:59:00 +0000 Received: by pxi32 with SMTP id 32so5747968pxi.25 for ; Tue, 25 Aug 2009 19:58:59 -0700 (PDT) MIME-Version: 1.0 Received: by 10.143.138.5 with SMTP id q5mr710057wfn.286.1251255539066; Tue, 25 Aug 2009 19:58:59 -0700 (PDT) In-Reply-To: <8363cbenvt.fsf@gnu.org> References: <4A7BA1DE.6010103@vmware.com> <4A90C08A.8000107@vmware.com> <837hwufkxr.fsf@gnu.org> <83eir1dnqw.fsf@gnu.org> <8363cbenvt.fsf@gnu.org> From: Hui Zhu Date: Wed, 26 Aug 2009 03:19:00 -0000 Message-ID: Subject: Re: Bug in i386_process_record? To: Eli Zaretskii Cc: msnyder@vmware.com, gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=000e0cd51d62edea0c047202a198 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-08/txt/msg00435.txt.bz2 --000e0cd51d62edea0c047202a198 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5358 On Wed, Aug 26, 2009 at 02:42, Eli Zaretskii wrote: >> From: Hui Zhu >> Date: Tue, 25 Aug 2009 13:02:44 +0800 >> Cc: msnyder@vmware.com, gdb-patches@sourceware.org >> >> It seems that the segment (It is not the section) =A0registers in x86 >> protect mode is just help MMU to get the physical address. =A0It's >> transparent for the user level program. > > It's transparent if $es and $ds have the same value (which they > usually do, AFAIK). > >> What do you think about remove this warning from this patch? > > I would indeed do that, if we find that $es and $ds have the same > values. =A0Assuming that someone who knows Linux better than I do > confirms that these two registers hold the same selector when a normal > application is running in user mode. > Thanks for remind me. We cannot get the value of each segment register, but we can get each segment register point to. So if the value of segment registers, it's means that the value of them is same. I add some code about it: regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_ES_REGNUM], &es); regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_DS_REGNUM], &ds); if (ir.aflag && (es !=3D ds)) { After that, we will not get the warning because the es is same with ds in user level. What do you think about it? Thanks, Hui 2009-08-26 Hui Zhu * i386-tdep.c (i386_process_record): Fix the error of string ops instructions's handler. --- i386-tdep.c | 69 ++++++++++++++++++++++++++++---------------------------= ----- 1 file changed, 33 insertions(+), 36 deletions(-) --- a/i386-tdep.c +++ b/i386-tdep.c @@ -4441,50 +4441,47 @@ reswitch: /* insS */ case 0x6c: case 0x6d: - if ((opcode & 1) =3D=3D 0) - ir.ot =3D OT_BYTE; - else - ir.ot =3D ir.dflag + OT_WORD; regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_REDI_REGNUM], + ir.regmap[X86_RECORD_RECX_REGNUM], &tmpulongest); - if (!ir.aflag) - { - tmpulongest &=3D 0xffff; - /* addr +=3D ((uint32_t) read_register (I386_ES_REGNUM)) << 4; */ - if (record_debug) - printf_unfiltered (_("Process record ignores the memory change= " - "of instruction at address 0x%s because " - "it can't get the value of the segment " - "register.\n"), - paddress (gdbarch, ir.addr)); - } - if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) + if (tmpulongest) { - ULONGEST count, eflags; + ULONGEST es, ds; + + if ((opcode & 1) =3D=3D 0) + ir.ot =3D OT_BYTE; + else + ir.ot =3D ir.dflag + OT_WORD; regcache_raw_read_unsigned (ir.regcache, ir.regmap[X86_RECORD_REDI_REGNUM], - &count); - if (!ir.aflag) - count &=3D 0xffff; + &tmpulongest); + regcache_raw_read_unsigned (ir.regcache, - ir.regmap[X86_RECORD_EFLAGS_REGNUM], - &eflags); - if ((eflags >> 10) & 0x1) - tmpulongest -=3D (count - 1) * (1 << ir.ot); - if (record_arch_list_add_mem (tmpulongest, count * (1 << ir.ot))) - return -1; - I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); - } - else - { + ir.regmap[X86_RECORD_ES_REGNUM], + &es); + regcache_raw_read_unsigned (ir.regcache, + ir.regmap[X86_RECORD_DS_REGNUM], + &ds); + if (ir.aflag && (es !=3D ds)) + { + /* addr +=3D ((uint32_t) read_register (I386_ES_REGNUM)) << = 4; */ + if (record_debug) + printf_unfiltered (_("Process record ignores the memory " + "change of instruction at address 0x%s " + "because it can't get the value of the " + "ES segment register.\n"), + paddress (gdbarch, ir.addr)); + } + + if (prefixes & (PREFIX_REPZ | PREFIX_REPNZ)) + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RECX_REGNUM); if (record_arch_list_add_mem (tmpulongest, 1 << ir.ot)) return -1; - } - if (opcode =3D=3D 0xa4 || opcode =3D=3D 0xa5) - I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); - I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); - I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + if (opcode =3D=3D 0xa4 || opcode =3D=3D 0xa5) + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_RESI_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_REDI_REGNUM); + I386_RECORD_ARCH_LIST_ADD_REG (X86_RECORD_EFLAGS_REGNUM); + } break; /* cmpsS */ --000e0cd51d62edea0c047202a198 Content-Type: text/plain; charset=US-ASCII; name="prec-fix-x86-strinsn.txt" Content-Disposition: attachment; filename="prec-fix-x86-strinsn.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fythd4pu0 Content-length: 4925 LS0tCiBpMzg2LXRkZXAuYyB8ICAgNjkgKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMzMgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0p CgotLS0gYS9pMzg2LXRkZXAuYworKysgYi9pMzg2LXRkZXAuYwpAQCAtNDQ0 MSw1MCArNDQ0MSw0NyBAQCByZXN3aXRjaDoKICAgICAgIC8qIGluc1MgKi8K ICAgICBjYXNlIDB4NmM6CiAgICAgY2FzZSAweDZkOgotICAgICAgaWYgKChv cGNvZGUgJiAxKSA9PSAwKQotCWlyLm90ID0gT1RfQllURTsKLSAgICAgIGVs c2UKLQlpci5vdCA9IGlyLmRmbGFnICsgT1RfV09SRDsKICAgICAgIHJlZ2Nh Y2hlX3Jhd19yZWFkX3Vuc2lnbmVkIChpci5yZWdjYWNoZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpci5yZWdtYXBbWDg2X1JFQ09S RF9SRURJX1JFR05VTV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXIucmVnbWFwW1g4Nl9SRUNPUkRfUkVDWF9SRUdOVU1dLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXB1bG9uZ2VzdCk7 Ci0gICAgICBpZiAoIWlyLmFmbGFnKQotICAgICAgICB7Ci0gICAgICAgICAg dG1wdWxvbmdlc3QgJj0gMHhmZmZmOwotICAgICAgICAgIC8qIGFkZHIgKz0g KCh1aW50MzJfdCkgcmVhZF9yZWdpc3RlciAoSTM4Nl9FU19SRUdOVU0pKSA8 PCA0OyAqLwotICAgICAgICAgIGlmIChyZWNvcmRfZGVidWcpCi0gICAgICAg ICAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiUHJvY2VzcyByZWNvcmQgaWdu b3JlcyB0aGUgbWVtb3J5IGNoYW5nZSAiCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAib2YgaW5zdHJ1Y3Rpb24gYXQgYWRkcmVzcyAweCVz IGJlY2F1c2UgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Iml0IGNhbid0IGdldCB0aGUgdmFsdWUgb2YgdGhlIHNlZ21lbnQgIgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyLlxuIiks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdk YmFyY2gsIGlyLmFkZHIpKTsKLSAgICAgICAgfQotICAgICAgaWYgKHByZWZp eGVzICYgKFBSRUZJWF9SRVBaIHwgUFJFRklYX1JFUE5aKSkKKyAgICAgIGlm ICh0bXB1bG9uZ2VzdCkKICAgICAgICAgewotICAgICAgICAgIFVMT05HRVNU IGNvdW50LCBlZmxhZ3M7CisgICAgICAgICAgVUxPTkdFU1QgZXMsIGRzOwor CisgICAgICAgICAgaWYgKChvcGNvZGUgJiAxKSA9PSAwKQorCSAgICBpci5v dCA9IE9UX0JZVEU7CisgICAgICAgICAgZWxzZQorCSAgICBpci5vdCA9IGly LmRmbGFnICsgT1RfV09SRDsKICAgICAgICAgICByZWdjYWNoZV9yYXdfcmVh ZF91bnNpZ25lZCAoaXIucmVnY2FjaGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGlyLnJlZ21hcFtYODZfUkVDT1JEX1JFRElf UkVHTlVNXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJmNvdW50KTsKLSAgICAgICAgICBpZiAoIWlyLmFmbGFnKQotICAgICAg ICAgICAgY291bnQgJj0gMHhmZmZmOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmdG1wdWxvbmdlc3QpOworCiAgICAgICAgICAg cmVnY2FjaGVfcmF3X3JlYWRfdW5zaWduZWQgKGlyLnJlZ2NhY2hlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpci5yZWdtYXBb WDg2X1JFQ09SRF9FRkxBR1NfUkVHTlVNXSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmVmbGFncyk7Ci0gICAgICAgICAgaWYg KChlZmxhZ3MgPj4gMTApICYgMHgxKQotICAgICAgICAgICAgdG1wdWxvbmdl c3QgLT0gKGNvdW50IC0gMSkgKiAoMSA8PCBpci5vdCk7Ci0gICAgICAgICAg aWYgKHJlY29yZF9hcmNoX2xpc3RfYWRkX21lbSAodG1wdWxvbmdlc3QsIGNv dW50ICogKDEgPDwgaXIub3QpKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsK LSAgICAgICAgICBJMzg2X1JFQ09SRF9BUkNIX0xJU1RfQUREX1JFRyAoWDg2 X1JFQ09SRF9SRUNYX1JFR05VTSk7Ci0gICAgICAgIH0KLSAgICAgIGVsc2UK LSAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpci5yZWdtYXBbWDg2X1JFQ09SRF9FU19SRUdOVU1dLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXMpOworICAgICAg ICAgIHJlZ2NhY2hlX3Jhd19yZWFkX3Vuc2lnbmVkIChpci5yZWdjYWNoZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXIucmVn bWFwW1g4Nl9SRUNPUkRfRFNfUkVHTlVNXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJmRzKTsKKyAgICAgICAgICBpZiAoaXIu YWZsYWcgJiYgKGVzICE9IGRzKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgLyogYWRkciArPSAoKHVpbnQzMl90KSByZWFkX3JlZ2lzdGVyIChJ Mzg2X0VTX1JFR05VTSkpIDw8IDQ7ICovCisgICAgICAgICAgICAgIGlmIChy ZWNvcmRfZGVidWcpCisgICAgICAgICAgICAgICAgcHJpbnRmX3VuZmlsdGVy ZWQgKF8oIlByb2Nlc3MgcmVjb3JkIGlnbm9yZXMgdGhlIG1lbW9yeSAiCisJ CQkJICAgICAiY2hhbmdlIG9mIGluc3RydWN0aW9uIGF0IGFkZHJlc3MgMHgl cyAiCisJCQkJICAgICAiYmVjYXVzZSBpdCBjYW4ndCBnZXQgdGhlIHZhbHVl IG9mIHRoZSAiCisJCQkJICAgICAiRVMgc2VnbWVudCByZWdpc3Rlci5cbiIp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcmVz cyAoZ2RiYXJjaCwgaXIuYWRkcikpOworICAgICAgICAgICAgfQorCisgICAg ICAgICAgaWYgKHByZWZpeGVzICYgKFBSRUZJWF9SRVBaIHwgUFJFRklYX1JF UE5aKSkKKyAgICAgICAgICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERf UkVHIChYODZfUkVDT1JEX1JFQ1hfUkVHTlVNKTsKICAgICAgICAgICBpZiAo cmVjb3JkX2FyY2hfbGlzdF9hZGRfbWVtICh0bXB1bG9uZ2VzdCwgMSA8PCBp ci5vdCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAg ICAgIGlmIChvcGNvZGUgPT0gMHhhNCB8fCBvcGNvZGUgPT0gMHhhNSkKLSAg ICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNP UkRfUkVTSV9SRUdOVU0pOwotICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9MSVNU X0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVESV9SRUdOVU0pOwotICAgICAgSTM4 Nl9SRUNPUkRfQVJDSF9MSVNUX0FERF9SRUcgKFg4Nl9SRUNPUkRfRUZMQUdT X1JFR05VTSk7CisgICAgICAgICAgaWYgKG9wY29kZSA9PSAweGE0IHx8IG9w Y29kZSA9PSAweGE1KQorICAgICAgICAgICAgSTM4Nl9SRUNPUkRfQVJDSF9M SVNUX0FERF9SRUcgKFg4Nl9SRUNPUkRfUkVTSV9SRUdOVU0pOworICAgICAg ICAgIEkzODZfUkVDT1JEX0FSQ0hfTElTVF9BRERfUkVHIChYODZfUkVDT1JE X1JFRElfUkVHTlVNKTsKKyAgICAgICAgICBJMzg2X1JFQ09SRF9BUkNIX0xJ U1RfQUREX1JFRyAoWDg2X1JFQ09SRF9FRkxBR1NfUkVHTlVNKTsKKwl9CiAg ICAgICBicmVhazsKIAogICAgICAgLyogY21wc1MgKi8K --000e0cd51d62edea0c047202a198--