From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 79957 invoked by alias); 5 Apr 2017 15:51:45 -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 79918 invoked by uid 89); 5 Apr 2017 15:51:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.9 required=5.0 tests=AWL,BAYES_00,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=vanish X-HELO: EUR01-DB5-obe.outbound.protection.outlook.com Received: from mail-db5eur01on0054.outbound.protection.outlook.com (HELO EUR01-DB5-obe.outbound.protection.outlook.com) (104.47.2.54) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 05 Apr 2017 15:51:42 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com (10.160.211.19) by AM3PR08MB0104.eurprd08.prod.outlook.com (10.160.211.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1005.10; Wed, 5 Apr 2017 15:51:41 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::5931:f431:f97d:943d]) by AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::5931:f431:f97d:943d%16]) with mapi id 15.01.1005.018; Wed, 5 Apr 2017 15:51:41 +0000 From: Alan Hayward To: Pedro Alves CC: "gdb-patches@sourceware.org" , nd Subject: Re: [PATCH 7/11] Add BFIN_MAX_REGISTER_SIZE Date: Wed, 05 Apr 2017 15:51:00 -0000 Message-ID: References: <3239de71-1e7c-22dd-172d-56a3baad292b@redhat.com> In-Reply-To: <3239de71-1e7c-22dd-172d-56a3baad292b@redhat.com> authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-microsoft-exchange-diagnostics: 1;AM3PR08MB0104;7:pbZ/QDYJi0gZYUUXEQGcrBoLRGnpxrYgoo/K/oa1fg/5KZUDuZK4DMXvKqhmFxV2+IeORcJ2H5aUHNM1o7mDVO6FLZAzVg31fvL4LwXnoy8F07g5ctqBn4Zb04smXoyHTkTqYOoBBinuddPSDZKXMBtJrN2Vfj0b3ViQsRF7BbqhG3zOcE8nu+auvmyALhff7so6WVUvbG7dO3xF1inGU0pXkJGpJN9nOZEfM61o8hZ1m9BQfW2BNV442PlV9738aQWuY+Y7vwq3yUMdMcmb9p02Y8W/+S+0/8vDGT2H83lL3Rjamf2YPgOpInGQ2/7tgBAJL6zM1IN3gdKJyV2XUQ== x-ms-office365-filtering-correlation-id: aed252f6-80e7-4ce3-842a-08d47c3ba6fd x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254075)(48565401081)(201703131423075)(201703031133081)(201702281549075);SRVR:AM3PR08MB0104; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:; x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(6072148);SRVR:AM3PR08MB0104;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0104; x-forefront-prvs: 0268246AE7 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(39410400002)(39860400002)(39450400003)(39840400002)(39850400002)(39400400002)(377454003)(24454002)(3660700001)(82746002)(5250100002)(6506006)(83716003)(36756003)(6486002)(86362001)(8676002)(2906002)(6436002)(4326008)(3280700002)(305945005)(53546009)(6916009)(7736002)(229853002)(99286003)(25786009)(66066001)(38730400002)(6246003)(6512007)(54356999)(76176999)(50986999)(5660300001)(189998001)(54906002)(3846002)(53936002)(110136004)(2900100001)(6116002)(102836003)(81166006)(33656002)(8936002)(2950100002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR08MB0104;H:AM3PR08MB0101.eurprd08.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Apr 2017 15:51:40.9336 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR08MB0104 X-SW-Source: 2017-04/txt/msg00115.txt.bz2 DQo+IE9uIDUgQXByIDIwMTcsIGF0IDE2OjAzLCBQZWRybyBBbHZlcyA8cGFs dmVzQHJlZGhhdC5jb20+IHdyb3RlOg0KPiANCj4gT24gMDQvMDQvMjAxNyAx MToxNCBBTSwgQWxhbiBIYXl3YXJkIHdyb3RlOg0KPj4gTWF4IHNpemUgc2V0 IHRvIDMyYml0cywgd2hpY2ggSSBkZXRlcm1pbmVkIHVzaW5nIHJlZ2Zvcm1h dHMvcmVnLWJmaW4uZGF0DQo+IA0KPiBNYWtlcyBtZSB3b25kZXIgc3RoIChh bmQgaW4gZ2VuZXJhbCwgbm90IGZvciB0aGlzIHBhdGNoIGluIHBhcnRpY3Vs YXIpOg0KPiANCj4gSXMgaXQgcG9zc2libGUgdGhhdCBhbnkgb2YgdGhlc2Ug Y29kZSBwYXRocyB0aGF0IGhhcmRjb2RlIGFuIGFyY2ggc3BlY2lmaWMNCj4g bWF4IHJlZ2lzdGVyIHNpemUgZW5kIHVwIHNlZWluZyBhIGxhcmdlciByZWdp c3RlciBzaXplIGJlY2F1c2UgdGhlIHJlcG9ydGVkDQo+IHhtbCB0YXJnZXQg ZGVzY3JpcHRpb24gaW5jbHVkZXMgc3VjaCBhIGxhcmdlciByZWdpc3Rlcj8N Cj4gDQo+IEUuZy4sIHNheSBhcmNoIEEgbm9ybWFsbHkgb25seSBoYXMgMzIt Yml0IHJlZ2lzdGVycywgZm9yIGFzIG11Y2ggR0RCIGtub3dzLg0KPiBBbmQg dGhlbiBzb21lIHN0dWIgZm9yIHNvbWUgdmFyaWFudCBvZiBBIGluY2x1ZGVz IGEgcmVnaXN0ZXINCj4gaW4gdGhlIGRlc2NyaXB0aW9uIGxpa2U6DQo+IA0K PiAgPHJlZyBuYW1lPSJmb28iIGJpdHNpemU9IjY0IiB0eXBlPSJ1aW50NjQi Lz4NCj4gDQo+IEl0IGtpbmRzIG9mIHNvdW5kcyBsaWtlIHRoZSBtYXggcmVn aXN0ZXIgc2l6ZSBpcyBjYXBwZWQgYnkgd2hhdCB0YXJnZXQNCj4gZGVzY3Jp cHRpb25zIGNhbiBkZXNjcmliZSBmb3IgdGhhdCBhcmNoaXRlY3R1cmUsIG5v dCBleGFjdGx5IGJ5IHRoZSBzaXplDQo+IG9mIHRoZSByZWdpc3RlcnMgdGhh dCBHREIgY29uc2lkZXJzICJjb3JlIiByZWdpc3RlcnMuICBUaGF0IG1heQ0K PiBhbHJlYWR5IGhhdmUgYmVlbiB0YWtlbiBpbnRvIGFjY291bnQgYW5kIGl0 IG1heSB3ZWxsIGJlIHRoYXQgdGhlIHBhdGhzDQo+IHRoYXQgdXNlIHRoZSBG T09fTUFYX1JFR0lTVEVSX1NJWkUgbWFjcm9zIG9ubHkgZXZlciB3b3JrIHdp dGggcmVnaXN0ZXJzDQo+IHRoYXQgR0RCIGRvZXMga25vdyBhYm91dCAoaGF2 ZW4ndCBjaGVja2VkIGNhcmVmdWxseSksIHJlbmRlcmluZyB0aGUgY29uY2Vy bg0KPiBtb290LCBidXQgSSB3YW50ZWQgdG8gcHV0IHRoZSB0aG91Z2h0IG91 dCB0aGVyZSBhbnl3YXkuDQo+IA0KPiBUaGFua3MsDQo+IFBlZHJvIEFsdmVz DQo+IA0KDQpUaGVyZSBpcyBzb21lIGV4aXN0aW5nIGNvZGUgaW4gcmVnY2Fj aGUuYyB0aGF0IGNoZWNrcyB0aGF0IG5vIHJlZ2lzdGVyIGluIHRoZQ0KdGFy Z2V0IGRlc2NyaXB0b3IgaXMgZ3JlYXRlciB0aGFuIE1BWF9SRUdJU1RFUl9T SVpFLg0KT2J2aW91c2x5LCB0aGlzIGNvZGUgd2lsbCB2YW5pc2ggd2hlbiBN QVhfUkVHSVNURVJfU0laRSBkaXNhcHBlYXJzLg0KDQpJZiBwZW9wbGUgdGhp bmsgdGhhdCB0aGlzIGlzIGFuIGltcG9ydGFudCBjaGVjayB0byBoYXZlLCB0 aGVuIG1heWJlIHRoZXJlIG5lZWRzDQp0byBiZSBhbiBhZGRpdGlvbmFsIHBh dGNoIHNldC4gRm9yIGVhY2ggdGFyZ2V0IHdpdGggYSBGT09fTUFYX1JFR0lT VEVSX1NJWkUsDQppbiB0aGUgaW5pdCBjb2RlIGZvciB0aGF0IHRhcmdldCBh ZGQ6DQogIGdkYl9hc3NlcnQgKEZPT19NQVhfUkVHSVNURVJfU0laRSA+PSBt YXhfcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCkpOw0KPw0KDQooVG8ga2VlcCB0 aGlzIHNpbXBsZSBJ4oCZZCBkbyBpdCBhZnRlciBhZGRpbmcgdGhlc2UgcGF0 Y2hlcyB3aGljaCBhZGQNCiBGT09fTUFYX1JFR0lTVEVSX1NJWkUpLg0KDQoN CkFsYW4uDQoNCg== >From gdb-patches-return-138032-listarch-gdb-patches=sources.redhat.com@sourceware.org Wed Apr 05 16:01:06 2017 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 46544 invoked by alias); 5 Apr 2017 16:01:05 -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 Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 44799 invoked by uid 89); 5 Apr 2017 16:01:04 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.4 required=5.0 tests=BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS,UNSUBSCRIBE_BODY autolearn=ham version=3.3.2 spammy=secondly X-HELO: mail-wr0-f179.google.com Received: from mail-wr0-f179.google.com (HELO mail-wr0-f179.google.com) (209.85.128.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 05 Apr 2017 16:01:02 +0000 Received: by mail-wr0-f179.google.com with SMTP id w43so20169005wrb.0 for ; Wed, 05 Apr 2017 09:01:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=RrKmn2LQlcXuRcW5CkKkHGaPwqFE1EhjiwCdk6SVOlg=; b=V8mQj5oUWjd2G481ThxsMHZERRKEjWnt9N/FkIAmfSz2q1zzDHcxarSRCt34TSldCZ ynKoeZGzR95Vm7NmPHfMAplFltiIfNWsfeH5dj1d/p3cL4/l3hu2Zpz2NNRvfIoFBeJz pZFg+hlweU8l1h6iw/VTK8IW0MuN3N39aFJ4SDP/oA1Jh0qCUZbUEUgagi+4rugLhI8b VAe2hrPfHocm9/U4BiauyHNS0VqwTsNE3fMLSrNiG/Mj6eQN3VyxCX1xT1G72ASMCbHZ mLpAMFXVIBMIqvYTiCxC0lV0BT1eeXFQCY9EXYqi26qO/u+GscdBxNLrb9LhmyIivt0p 5Eog== X-Gm-Message-State: AFeK/H0YQSXE0K+KPpSUychQSm3zPkAwqqgufMEokmXuYs+bNtMAVK1Pppa0Fh5F/+89oQ== X-Received: by 10.223.139.142 with SMTP id o14mr26579789wra.9.1491408061170; Wed, 05 Apr 2017 09:01:01 -0700 (PDT) Received: from E107787-LIN ([194.214.185.158]) by smtp.gmail.com with ESMTPSA id t68sm26821125wrc.55.2017.04.05.09.00.59 (version=TLS1_2 cipher=AES128-SHA bits=128/128); Wed, 05 Apr 2017 09:01:00 -0700 (PDT) From: Yao Qi To: Alan Hayward Cc: "gdb-patches\@sourceware.org" , Subject: Re: [PATCH] Remove MAX_REGISTER_SIZE from regcache.c References: <562B2F6F-F3C6-4A76-9489-57539F396C94@arm.com> <868tnvukjh.fsf@gmail.com> <7359B5C0-BF61-42E2-9886-B322C1825865@arm.com> <0DADF920-69B9-4F96-A153-6965E56B5DA8@arm.com> Date: Wed, 05 Apr 2017 16:01:00 -0000 In-Reply-To: <0DADF920-69B9-4F96-A153-6965E56B5DA8@arm.com> (Alan Hayward's message of "Wed, 5 Apr 2017 14:53:47 +0000") Message-ID: <868tneq1xj.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2017-04/txt/msg00116.txt.bz2 Content-length: 5629 Alan Hayward writes: > diff --git a/gdb/msp430-tdep.c b/gdb/msp430-tdep.c > index 75329dfcc5ed94fff19639db4db21dd0874d0e96..d9eebf0cc2647a079db2f8221= 45d0fb74ea301e4 100644 > --- a/gdb/msp430-tdep.c > +++ b/gdb/msp430-tdep.c > @@ -221,10 +221,9 @@ msp430_pseudo_register_read (struct gdbarch *gdbarch, > struct regcache *regcache, > int regnum, gdb_byte *buffer) > { > - enum register_status status =3D REG_UNKNOWN; > - > if (MSP430_NUM_REGS <=3D regnum && regnum < MSP430_NUM_TOTAL_REGS) > { > + enum register_status status; > ULONGEST val; > enum bfd_endian byte_order =3D gdbarch_byte_order (gdbarch); > int regsize =3D register_size (gdbarch, regnum); > @@ -234,11 +233,10 @@ msp430_pseudo_register_read (struct gdbarch *gdbarc= h, > if (status =3D=3D REG_VALID) > store_unsigned_integer (buffer, regsize, byte_order, val); > > + return status; > } > else > gdb_assert_not_reached ("invalid pseudo register number"); > - > - return status; > } This looks reasonable to me, but could you put it into a separate patch so that people interested in msp430 may take a look? > > /* Implement the "pseudo_register_write" gdbarch method. */ > diff --git a/gdb/nds32-tdep.c b/gdb/nds32-tdep.c > index 05c48aa27d84bc0286712f0143a9447a79ae066b..e9955d60a8132d5bc3af234df= f0c86c8e59d4855 100644 > --- a/gdb/nds32-tdep.c > +++ b/gdb/nds32-tdep.c > @@ -445,11 +445,11 @@ nds32_pseudo_register_read (struct gdbarch *gdbarch, > struct gdbarch_tdep *tdep =3D gdbarch_tdep (gdbarch); > gdb_byte reg_buf[8]; > int offset, fdr_regnum; > - enum register_status status =3D REG_UNKNOWN; > + enum register_status status; > > /* Sanity check. */ > - if (tdep->fpu_freg =3D=3D -1 || tdep->use_pseudo_fsrs =3D=3D 0) > - return status; > + gdb_assert (tdep->fpu_freg !=3D -1); > + gdb_assert (tdep->use_pseudo_fsrs > 0); > The nds32 change can go to a separate patch as well, so that nds32 people can take a look too. Secondly, it is not easy to see your change is right or not, unless I read the code in nds32_gdbarch_init, if (fpu_freg =3D=3D -1) num_regs =3D NDS32_NUM_REGS; else if (use_pseudo_fsrs =3D=3D 1) { set_gdbarch_pseudo_register_read (gdbarch, nds32_pseudo_register_read= ); set_gdbarch_pseudo_register_write (gdbarch, nds32_pseudo_register_wri= te); so please add some comments in the assert like /* This function is only registered when fpu_regs !=3D -1 and use_pseudo_fsrs =3D=3D 1 in nds32_gdbarch_init. */ gdb_assert (tdep->fpu_freg !=3D -1); gdb_assert (tdep->use_pseudo_fsrs =3D=3D 1); > regnum -=3D gdbarch_num_regs (gdbarch); > > @@ -466,9 +466,11 @@ nds32_pseudo_register_read (struct gdbarch *gdbarch, > status =3D regcache_raw_read (regcache, fdr_regnum, reg_buf); > if (status =3D=3D REG_VALID) > memcpy (buf, reg_buf + offset, 4); > + > + return status; > } > > - return status; > + gdb_assert_not_reached ("invalid pseudo register number"); > } also, it would be nice to do the same change in nds32_pseudo_register_write too. > @@ -379,7 +388,7 @@ regcache_restore (struct regcache *dst, > void *cooked_read_context) > { > struct gdbarch *gdbarch =3D dst->descr->gdbarch; > - gdb_byte buf[MAX_REGISTER_SIZE]; > + std::vector buf (max_register_size (gdbarch)); > int regnum; > > /* The dst had better not be read-only. If it is, the `restore' > @@ -395,9 +404,9 @@ regcache_restore (struct regcache *dst, > { > enum register_status status; Can we move "buf" here? and initialize it with the register_size, std::vector buf (register_size (gdbarch, regnum)); then, we don't need max_register_size (). > @@ -1480,17 +1488,19 @@ regcache_dump (struct regcache *regcache, struct = ui_file *file, > fprintf_unfiltered (file, "Cooked value"); > else > { > - enum register_status status; > + struct value *value =3D regcache_cooked_read_value (regcache, > + regnum); > > - status =3D regcache_cooked_read (regcache, regnum, buf); > - if (status =3D=3D REG_UNKNOWN) > - fprintf_unfiltered (file, ""); > - else if (status =3D=3D REG_UNAVAILABLE) > + if (value_optimized_out (value) > + || !value_entirely_available (value)) > fprintf_unfiltered (file, ""); It is still not right to me. With your changes to msp430 and nds32, we won't get REG_UNKNOWN for pseudo registers, but we may still get REG_UNKNOWN from raw registers (from regcache->register_status[]). How is this? gdb_byte *buf =3D NULL; enum register_status status; struct value * value =3D NULL; if (regnum < regcache->descr->nr_raw_registers) { regcache_raw_update (regcache, regnum); status =3D regcache->register_status[regnum]; buf =3D register_buffer (regcache, regnum); } else { value =3D regcache_cooked_read_value (regcache, regnum); if (value_entirely_available (value)) { status =3D REG_VALID; buf =3D value_contents_all (value); } else status =3D REG_REG_UNAVAILABLE; } if (status =3D=3D REG_UNKNOWN) fprintf_unfiltered (file, ""); else if (status =3D=3D REG_UNAVAILABLE) fprintf_unfiltered (file, ""); else print_hex_chars (file, buf, regcache->descr->sizeof_register[regnum], gdbarch_byte_order (gdbarch)); if (value !=3D NULL) { release_value (value); value_free (value); } --=20 Yao (=E9=BD=90=E5=B0=A7)