From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 101037 invoked by alias); 24 Mar 2017 15:23:07 -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 101021 invoked by uid 89); 24 Mar 2017 15:23:06 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.7 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LOTSOFHASH,MIME_BASE64_BLANKS,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy=Comments X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0076.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.76) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 24 Mar 2017 15:23:04 +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.991.14; Fri, 24 Mar 2017 15:22:59 +0000 Received: from AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::a542:8c73:7479:1ad3]) by AM3PR08MB0101.eurprd08.prod.outlook.com ([fe80::a542:8c73:7479:1ad3%15]) with mapi id 15.01.0991.017; Fri, 24 Mar 2017 15:22:59 +0000 From: Alan Hayward To: Yao Qi CC: "gdb-patches@sourceware.org" , nd Subject: Re: [PATCH] Remove MAX_REGISTER_SIZE from target.c Date: Fri, 24 Mar 2017 15:23:00 -0000 Message-ID: References: <868toorjwz.fsf@gmail.com> In-Reply-To: <868toorjwz.fsf@gmail.com> authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-microsoft-exchange-diagnostics: 1;AM3PR08MB0104;7:4D2vRGPenu4WB5mCGzhlNMbNC9uIQRsluqOy2wrpkzrO6Y0NDxb5KQSmCeJxoNIzNduJ8nXItrLAOKE3JDPEdw3SXF86WigO8kLNBUoBWDYrUgh+05cnhq9jdWRjMgCSUpi3/aBgCbOKmkpchGo4NZJgIt3/+iUodBYwzantCNLxT8NytnEzrHzNJMX4lfGQ4KLJ3GhBxrU+ARaULlQPBZh7+3mixMt3CJdYzIUVaS/2qpVTVVez/5Lr4OPNz+NZ2YaWpoK+CeHef6odngz6N9ioBABAgXcNwlRWG9ZeCsL0j4YuPfeksfdOSALOGqLiUFXTh+IRExJ6RfU7MipA+Q== x-ms-office365-filtering-correlation-id: fbe6dd5c-f799-4ad7-2136-08d472c9a7bb x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254075)(48565401081);SRVR:AM3PR08MB0104; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(20161123558025)(6072148);SRVR:AM3PR08MB0104;BCL:0;PCL:0;RULEID:;SRVR:AM3PR08MB0104; x-forefront-prvs: 0256C18696 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(39840400002)(39450400003)(39850400002)(39860400002)(39410400002)(377424004)(24454002)(6506006)(6486002)(86362001)(7736002)(189998001)(5660300001)(82746002)(6436002)(54356999)(33656002)(76176999)(50986999)(53546009)(66066001)(1411001)(25786009)(36756003)(6116002)(102836003)(2900100001)(8676002)(6246003)(3660700001)(4326008)(38730400002)(8936002)(3280700002)(5250100002)(81166006)(2906002)(39060400002)(110136004)(575784001)(2950100002)(6916009)(83716003)(229853002)(53936002)(305945005)(6512007)(99286003)(54906002)(6666003)(3846002);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR08MB0104;H:AM3PR08MB0101.eurprd08.prod.outlook.com;FPR:;SPF:None;MLV:ovrnspm;PTR:InfoNoRecords;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <9411F5153F00C3488BC3FA4CB30A9518@eurprd08.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Mar 2017 15:22:44.0464 (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-03/txt/msg00443.txt.bz2 DQo+IE9uIDEgTWFyIDIwMTcsIGF0IDE3OjIyLCBZYW8gUWkgPHFpeWFvbHRj QGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBBbGFuIEhheXdhcmQgPEFsYW4u SGF5d2FyZEBhcm0uY29tPiB3cml0ZXM6DQo+IA0KPj4gK2V4dGVybiB2b2lk IHJlZ2NhY2hlX2RlYnVnX3ByaW50X3JlZ2lzdGVyIChjb25zdCBjaGFyICpm dW5jLA0KPj4gKwkJCQkJICAgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwN Cj4+ICsJCQkJCSAgIGludCByZWdubyk7DQo+IA0KPiBDb21tZW50cyBhcmUg bmVlZGVkLg0KPiANCj4+ICsNCj4+ICNlbmRpZiAvKiBSRUdDQUNIRV9IICov DQo+PiBkaWZmIC0tZ2l0IGEvZ2RiL3JlZ2NhY2hlLmMgYi9nZGIvcmVnY2Fj aGUuYw0KPj4gaW5kZXggZjE5MGVkYTBlNDdjNWMwMzc0NGZjMjYyNjM1MDVk MWMzMGVhMWVlOC4uMzFhYTFiYWY3ZWY2OWMyN2MwMGU0NWUzYzhkNGViM2M0 MWRjNDIwMyAxMDA2NDQNCj4+IC0tLSBhL2dkYi9yZWdjYWNoZS5jDQo+PiAr KysgYi9nZGIvcmVnY2FjaGUuYw0KPj4gQEAgLTEyNTksNiArMTI1OSw0MiBA QCByZWdjYWNoZV93cml0ZV9wYyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNo ZSwgQ09SRV9BRERSIHBjKQ0KPj4gICByZWluaXRfZnJhbWVfY2FjaGUgKCk7 DQo+PiB9DQo+PiANCj4+ICt2b2lkDQo+PiArcmVnY2FjaGVfZGVidWdfcHJp bnRfcmVnaXN0ZXIgKGNvbnN0IGNoYXIgKmZ1bmMsIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGUsDQo+PiArCQkJICAgICAgIGludCByZWdubykNCj4+ICt7 DQo+PiArICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNo ZV9hcmNoIChyZWdjYWNoZSk7DQo+PiArDQo+PiArICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csICIlcyAiLCBmdW5jKTsNCj4+ICsgIGlmIChy ZWdubyA+PSAwICYmIHJlZ25vIDwgZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJj aCkNCj4+ICsgICAgICAmJiBnZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGdkYmFy Y2gsIHJlZ25vKSAhPSBOVUxMDQo+PiArICAgICAgJiYgZ2RiYXJjaF9yZWdp c3Rlcl9uYW1lIChnZGJhcmNoLCByZWdubylbMF0gIT0gJ1wwJykNCj4+ICsg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiKCVzKSIsDQo+ PiArCQkJZ2RiYXJjaF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCByZWdubykp Ow0KPj4gKyAgZWxzZQ0KPj4gKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csICIoJWQpIiwgcmVnbm8pOw0KPj4gKyAgaWYgKHJlZ25vID49 IDAgJiYgcmVnbm8gPCBnZGJhcmNoX251bV9yZWdzIChnZGJhcmNoKSkNCj4+ ICsgICAgew0KPj4gKyAgICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVy ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsNCj4+ICsgICAgICBp bnQgaSwgc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ25vKTsN Cj4+ICsgICAgICBnZGJfYnl0ZSAqYnVmID0gcmVnaXN0ZXJfYnVmZmVyIChy ZWdjYWNoZSwgcmVnbm8pOw0KPj4gKw0KPj4gKyAgICAgIHJlZ2NhY2hlX3Jh d19jb2xsZWN0IChyZWdjYWNoZSwgcmVnbm8sIGJ1Zik7DQo+IA0KPiBEb24n dCBuZWVkIHRvIGNhbGwgcmVnY2FjaGVfcmF3X2NvbGxlY3QsIG90aGVyd2lz ZSwgdGhlIHNyYyBhbmQgZHN0IG9mDQo+IGNvcHkgaXMgYXQgdGhlIHNhbWUg YWRkcmVzcyAocmVnaXN0ZXJfYnVmZmVyIChyZWdjYWNoZSwgcmVnbm8pKS4N Cj4gDQo+IC0tIA0KPiBZYW8gKOm9kOWwpykNCg0KDQpQYXRjaCB1cGRhdGVk IGZyb20gcmV2aWV3IGNvbW1lbnRzLg0KVGVzdGVkIHVzaW5nIG1ha2UgY2hl Y2sgd2l0aCBib2FyZCBmaWxlcyB1bml4IGFuZCBuYXRpdmUtZ2Ric2VydmVy Lg0KT2sgdG8gY29tbWl0Pw0KDQpBbGFuLg0KDQoyMDE3LTAzLTI0ICBBbGFu IEhheXdhcmQgIDxhbGFuLmhheXdhcmRAYXJtLmNvbT4NCg0KCSogcmVnY2Fj aGUuYyAocmVnY2FjaGVfZGVidWdfcHJpbnRfcmVnaXN0ZXIpOiBOZXcgZnVu Y3Rpb24uDQoJKiByZWdjYWNoZS5oIChyZWdjYWNoZV9kZWJ1Z19wcmludF9y ZWdpc3Rlcik6IE5ldyBkZWNsYXJhdGlvbi4NCgkqIHRhcmdldC5jIChkZWJ1 Z19wcmludF9yZWdpc3Rlcik6IFJlbW92ZS4NCgkodGFyZ2V0X2ZldGNoX3Jl Z2lzdGVycyk6IENhbGwgcmVnY2FjaGVfZGVidWdfcHJpbnRfcmVnaXN0ZXIu DQoJKHRhcmdldF9zdG9yZV9yZWdpc3RlcnMpOiBMaWtld2lzZS4NCg0KDQoN CmRpZmYgLS1naXQgYS9nZGIvcmVnY2FjaGUuaCBiL2dkYi9yZWdjYWNoZS5o DQppbmRleCA2M2ExYTk4MGViNzU3MTY3ZmUyNTMxNjQ3MzBhNTM0MzQ0NTQz OTQ4Li44YjdhMGEyYWZiNDE2ZGY5YzAzMjE2YTIwM2YwNWQxYTJjYTBhYzhk IDEwMDY0NA0KLS0tIGEvZ2RiL3JlZ2NhY2hlLmgNCisrKyBiL2dkYi9yZWdj YWNoZS5oDQpAQCAtMjM0LDQgKzIzNCwxMCBAQCBleHRlcm4gdm9pZCByZWdj YWNoZV9jcHkgKHN0cnVjdCByZWdjYWNoZSAqZGVzdCwgc3RydWN0IHJlZ2Nh Y2hlICpzcmMpOw0KIGV4dGVybiB2b2lkIHJlZ2lzdGVyc19jaGFuZ2VkICh2 b2lkKTsNCiBleHRlcm4gdm9pZCByZWdpc3RlcnNfY2hhbmdlZF9wdGlkIChw dGlkX3QpOw0KDQorLyogRHVtcCB0aGUgY29udGVudHMgb2YgYSByZWdpc3Rl ciBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSB0byB0aGUgdGFyZ2V0DQorICAg ZGVidWcuICAqLw0KK2V4dGVybiB2b2lkIHJlZ2NhY2hlX2RlYnVnX3ByaW50 X3JlZ2lzdGVyIChjb25zdCBjaGFyICpmdW5jLA0KKwkJCQkJICAgc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwNCisJCQkJCSAgIGludCByZWdubyk7DQor DQogI2VuZGlmIC8qIFJFR0NBQ0hFX0ggKi8NCmRpZmYgLS1naXQgYS9nZGIv cmVnY2FjaGUuYyBiL2dkYi9yZWdjYWNoZS5jDQppbmRleCA1OWVlNWJlMTQ4 MTdkNjFlYzExODBjYWUyYzE5NzE5OTQ5YWYwYTAzLi5lYjZkMDlmNmNiNTBm ZjkzNDc5OTFiN2IwNjFmNDMxNGM0OTdlMDE4IDEwMDY0NA0KLS0tIGEvZ2Ri L3JlZ2NhY2hlLmMNCisrKyBiL2dkYi9yZWdjYWNoZS5jDQpAQCAtMTI2OCw2 ICsxMjY4LDQxIEBAIHJlZ2NhY2hlX3dyaXRlX3BjIChzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLCBDT1JFX0FERFIgcGMpDQogICByZWluaXRfZnJhbWVf Y2FjaGUgKCk7DQogfQ0KDQordm9pZA0KK3JlZ2NhY2hlX2RlYnVnX3ByaW50 X3JlZ2lzdGVyIChjb25zdCBjaGFyICpmdW5jLCBzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLA0KKwkJCSAgICAgICBpbnQgcmVnbm8pDQorew0KKyAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVn Y2FjaGUpOw0KKw0KKyAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiJXMgIiwgZnVuYyk7DQorICBpZiAocmVnbm8gPj0gMCAmJiByZWdubyA8 IGdkYmFyY2hfbnVtX3JlZ3MgKGdkYmFyY2gpDQorICAgICAgJiYgZ2RiYXJj aF9yZWdpc3Rlcl9uYW1lIChnZGJhcmNoLCByZWdubykgIT0gTlVMTA0KKyAg ICAgICYmIGdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgcmVnbm8p WzBdICE9ICdcMCcpDQorICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgIiglcykiLA0KKwkJCWdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2Ri YXJjaCwgcmVnbm8pKTsNCisgIGVsc2UNCisgICAgZnByaW50Zl91bmZpbHRl cmVkIChnZGJfc3RkbG9nLCAiKCVkKSIsIHJlZ25vKTsNCisgIGlmIChyZWdu byA+PSAwICYmIHJlZ25vIDwgZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkp DQorICAgIHsNCisgICAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9 IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7DQorICAgICAgaW50IGks IHNpemUgPSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdubyk7DQorICAg ICAgZ2RiX2J5dGUgKmJ1ZiA9IHJlZ2lzdGVyX2J1ZmZlciAocmVnY2FjaGUs IHJlZ25vKTsNCisNCisgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICIgPSAiKTsNCisgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsg aSsrKQ0KKwl7DQorCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiJTAyeCIsIGJ1ZltpXSk7DQorCX0NCisgICAgICBpZiAoc2l6ZSA8PSBz aXplb2YgKExPTkdFU1QpKQ0KKwl7DQorCSAgVUxPTkdFU1QgdmFsID0gZXh0 cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHNpemUsIGJ5dGVfb3JkZXIp Ow0KKw0KKwkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIiAl cyAlcyIsDQorCQkJICAgICAgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAodmFs KSwgcGxvbmdlc3QgKHZhbCkpOw0KKwl9DQorICAgIH0NCisgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlxuIik7DQorfQ0KDQogc3RhdGlj IHZvaWQNCiByZWdfZmx1c2hfY29tbWFuZCAoY2hhciAqY29tbWFuZCwgaW50 IGZyb21fdHR5KQ0KZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dkYi90 YXJnZXQuYw0KaW5kZXggMGZmODUxNWQzYjczMWZmNTkyOWU1YzljNjhhMjBk MTI0YzFlY2Q2Ny4uN2MyODZhYjZiZjgyMWNlZDQyYTBjMWFjOTQ1MzQzYjc2 MWEzNzE1NyAxMDA2NDQNCi0tLSBhL2dkYi90YXJnZXQuYw0KKysrIGIvZ2Ri L3RhcmdldC5jDQpAQCAtMzU0Nyw0OSArMzU0NywxMiBAQCB0YXJnZXRfb3B0 aW9uc190b19zdHJpbmcgKGludCB0YXJnZXRfb3B0aW9ucykNCiAgIHJldHVy biByZXQ7DQogfQ0KDQotc3RhdGljIHZvaWQNCi1kZWJ1Z19wcmludF9yZWdp c3RlciAoY29uc3QgY2hhciAqIGZ1bmMsDQotCQkgICAgICBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pDQotew0KLSAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUp Ow0KLQ0KLSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiJXMg IiwgZnVuYyk7DQotICBpZiAocmVnbm8gPj0gMCAmJiByZWdubyA8IGdkYmFy Y2hfbnVtX3JlZ3MgKGdkYmFyY2gpDQotICAgICAgJiYgZ2RiYXJjaF9yZWdp c3Rlcl9uYW1lIChnZGJhcmNoLCByZWdubykgIT0gTlVMTA0KLSAgICAgICYm IGdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwgcmVnbm8pWzBdICE9 ICdcMCcpDQotICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywg IiglcykiLA0KLQkJCWdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoZ2RiYXJjaCwg cmVnbm8pKTsNCi0gIGVsc2UNCi0gICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAiKCVkKSIsIHJlZ25vKTsNCi0gIGlmIChyZWdubyA+PSAw ICYmIHJlZ25vIDwgZ2RiYXJjaF9udW1fcmVncyAoZ2RiYXJjaCkpDQotICAg IHsNCi0gICAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFy Y2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7DQotICAgICAgaW50IGksIHNpemUg PSByZWdpc3Rlcl9zaXplIChnZGJhcmNoLCByZWdubyk7DQotICAgICAgZ2Ri X2J5dGUgYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsNCi0NCi0gICAgICByZWdj YWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIHJlZ25vLCBidWYpOw0KLSAg ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIiA9ICIpOw0K LSAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspDQotCXsNCi0JICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICIlMDJ4IiwgYnVmW2ld KTsNCi0JfQ0KLSAgICAgIGlmIChzaXplIDw9IHNpemVvZiAoTE9OR0VTVCkp DQotCXsNCi0JICBVTE9OR0VTVCB2YWwgPSBleHRyYWN0X3Vuc2lnbmVkX2lu dGVnZXIgKGJ1Ziwgc2l6ZSwgYnl0ZV9vcmRlcik7DQotDQotCSAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiICVzICVzIiwNCi0JCQkgICAg ICBjb3JlX2FkZHJfdG9fc3RyaW5nX256ICh2YWwpLCBwbG9uZ2VzdCAodmFs KSk7DQotCX0NCi0gICAgfQ0KLSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLCAiXG4iKTsNCi19DQotDQogdm9pZA0KIHRhcmdldF9mZXRjaF9y ZWdpc3RlcnMgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdu bykNCiB7DQogICBjdXJyZW50X3RhcmdldC50b19mZXRjaF9yZWdpc3RlcnMg KCZjdXJyZW50X3RhcmdldCwgcmVnY2FjaGUsIHJlZ25vKTsNCiAgIGlmICh0 YXJnZXRkZWJ1ZykNCi0gICAgZGVidWdfcHJpbnRfcmVnaXN0ZXIgKCJ0YXJn ZXRfZmV0Y2hfcmVnaXN0ZXJzIiwgcmVnY2FjaGUsIHJlZ25vKTsNCisgICAg cmVnY2FjaGVfZGVidWdfcHJpbnRfcmVnaXN0ZXIgKCJ0YXJnZXRfZmV0Y2hf cmVnaXN0ZXJzIiwgcmVnY2FjaGUsIHJlZ25vKTsNCiB9DQoNCiB2b2lkDQpA QCAtMzYwMSw3ICszNTY0LDggQEAgdGFyZ2V0X3N0b3JlX3JlZ2lzdGVycyAo c3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ25vKQ0KICAgY3Vy cmVudF90YXJnZXQudG9fc3RvcmVfcmVnaXN0ZXJzICgmY3VycmVudF90YXJn ZXQsIHJlZ2NhY2hlLCByZWdubyk7DQogICBpZiAodGFyZ2V0ZGVidWcpDQog ICAgIHsNCi0gICAgICBkZWJ1Z19wcmludF9yZWdpc3RlciAoInRhcmdldF9z dG9yZV9yZWdpc3RlcnMiLCByZWdjYWNoZSwgcmVnbm8pOw0KKyAgICAgIHJl Z2NhY2hlX2RlYnVnX3ByaW50X3JlZ2lzdGVyICgidGFyZ2V0X3N0b3JlX3Jl Z2lzdGVycyIsIHJlZ2NhY2hlLA0KKwkJCQkgICAgIHJlZ25vKTsNCiAgICAg fQ0KIH0NCg0KDQo= >From gdb-patches-return-137800-listarch-gdb-patches=sources.redhat.com@sourceware.org Fri Mar 24 15:24:32 2017 Return-Path: Delivered-To: listarch-gdb-patches@sources.redhat.com Received: (qmail 103218 invoked by alias); 24 Mar 2017 15:24:32 -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 103205 invoked by uid 89); 24 Mar 2017 15:24:31 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 24 Mar 2017 15:24:29 +0000 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 6017A80515 for ; Fri, 24 Mar 2017 15:24:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 6017A80515 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 6017A80515 Received: from cascais.lan (ovpn04.gateway.prod.ext.phx2.redhat.com [10.5.9.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 80E6B82FAB for ; Fri, 24 Mar 2017 15:24:29 +0000 (UTC) From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH] dwarf2read.c: Clean up out of bounds handling Date: Fri, 24 Mar 2017 15:24:00 -0000 Message-Id: <1490369067-11867-1-git-send-email-palves@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SW-Source: 2017-03/txt/msg00444.txt.bz2 Content-length: 9901 From: Pádraig Brady Multiple places in dwarf2read.c open code 1-based to 0-based index conversion and check for out of bounds accesses to lh->include_dirs and lh->file_names. This commit factors those out to a couple methods and uses them throughout. gdb/ChangeLog: * dwarf2read.c (file_entry) : Add comment. (file_entry::include_dir): New method. (line_header::include_dir_at, line_header::file_name_at): New methods. (setup_type_unit_groups, setup_type_unit_groups) (psymtab_include_file_name): Simplify using the new methods. (lnp_state_machine) : New field. : Add comment. (lnp_state_machine::current_file): New method. (init_lnp_state_machine): Initialize the "the_line_header" field. (dwarf_decode_lines_1, dwarf_decode_lines, file_file_name): Simplify using the new methods. --- gdb/dwarf2read.c | 129 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 74 insertions(+), 55 deletions(-) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 519550b..362d33e 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -1055,6 +1055,7 @@ typedef void (die_reader_func_ftype) (const struct die_reader_specs *reader, struct file_entry { const char *name; + /* The directory index (1-based). */ unsigned int dir_index; unsigned int mod_time; unsigned int length; @@ -1062,6 +1063,10 @@ struct file_entry int included_p; /* The associated symbol table, if any. */ struct symtab *symtab; + + /* Return the include directory at DIR_INDEX stored in LH. Returns + NULL if DIR_INDEX is out of bounds. */ + const char *include_dir (const line_header *lh) const; }; /* The line number information for a compilation unit (found in the @@ -1107,8 +1112,34 @@ struct line_header /* The start and end of the statement program following this header. These point into dwarf2_per_objfile->line_buffer. */ const gdb_byte *statement_program_start, *statement_program_end; + + /* Return the include dir at INDEX (0-based). Returns NULL if INDEX + is out of bounds. */ + const char *include_dir_at (unsigned int index) const + { + if (include_dirs == NULL || index >= num_include_dirs) + return NULL; + return include_dirs[index]; + } + + /* Return the file name at INDEX (0-based). Returns NULL if INDEX + is out of bounds. */ + const file_entry *file_name_at (unsigned int index) const + { + if (file_names == NULL || index >= num_file_names) + return NULL; + return &file_names[index]; + } }; +const char * +file_entry::include_dir (const line_header *lh) const +{ + /* lh->include_dirs is 0-based, but the directory index numbers in + the statement program are 1-based. */ + return lh->include_dir_at (dir_index - 1); +} + /* When we construct a partial symbol table entry we only need this much information. */ struct partial_die_info @@ -9413,13 +9444,9 @@ setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu) for (i = 0; i < lh->num_file_names; ++i) { - const char *dir = NULL; - struct file_entry *fe = &lh->file_names[i]; + file_entry &fe = lh->file_names[i]; - if (fe->dir_index && lh->include_dirs != NULL - && (fe->dir_index - 1) < lh->num_include_dirs) - dir = lh->include_dirs[fe->dir_index - 1]; - dwarf2_start_subfile (fe->name, dir); + dwarf2_start_subfile (fe.name, fe.include_dir (lh)); if (current_subfile->symtab == NULL) { @@ -9431,8 +9458,8 @@ setup_type_unit_groups (struct die_info *die, struct dwarf2_cu *cu) = allocate_symtab (cust, current_subfile->name); } - fe->symtab = current_subfile->symtab; - tu_group->symtabs[i] = fe->symtab; + fe.symtab = current_subfile->symtab; + tu_group->symtabs[i] = fe.symtab; } } else @@ -17978,17 +18005,14 @@ psymtab_include_file_name (const struct line_header *lh, int file_index, const struct partial_symtab *pst, const char *comp_dir) { - const struct file_entry fe = lh->file_names [file_index]; + const file_entry &fe = lh->file_names[file_index]; const char *include_name = fe.name; const char *include_name_to_compare = include_name; - const char *dir_name = NULL; const char *pst_filename; char *copied_name = NULL; int file_is_pst; - if (fe.dir_index && lh->include_dirs != NULL - && (fe.dir_index - 1) < lh->num_include_dirs) - dir_name = lh->include_dirs[fe.dir_index - 1]; + const char *dir_name = fe.include_dir (lh); if (!IS_ABSOLUTE_PATH (include_name) && (dir_name != NULL || comp_dir != NULL)) @@ -18053,11 +18077,15 @@ psymtab_include_file_name (const struct line_header *lh, int file_index, /* State machine to track the state of the line number program. */ -typedef struct +struct lnp_state_machine { + /* The line number header. */ + line_header *the_line_header; + /* These are part of the standard DWARF line number state machine. */ unsigned char op_index; + /* The line table index (1-based) of the current file. */ unsigned int file; unsigned int line; CORE_ADDR address; @@ -18080,7 +18108,14 @@ typedef struct example, when discriminators are present. PR 17276. */ unsigned int last_line; int line_has_non_zero_discriminator; -} lnp_state_machine; + + const file_entry *current_file () + { + /* lh->file_names is 0-based, but the file name numbers in the + statement program are 1-based. */ + return the_line_header->file_name_at (file - 1); + } +}; /* There's a lot of static state to pass to dwarf_record_line. This keeps it all together. */ @@ -18285,6 +18320,7 @@ init_lnp_state_machine (lnp_state_machine *state, state->address = gdbarch_adjust_dwarf2_line (reader->gdbarch, 0, 0); state->is_stmt = reader->line_header->default_is_stmt; state->discriminator = 0; + state->the_line_header = reader->line_header; } /* Check address and if invalid nop-out the rest of the lines in this @@ -18359,20 +18395,14 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu, /* Reset the state machine at the start of each sequence. */ init_lnp_state_machine (&state_machine, &reader_state); - if (record_lines_p && lh->num_file_names >= state_machine.file) + if (record_lines_p) { - /* Start a subfile for the current file of the state machine. */ - /* lh->include_dirs and lh->file_names are 0-based, but the - directory and file name numbers in the statement program - are 1-based. */ - struct file_entry *fe = &lh->file_names[state_machine.file - 1]; - const char *dir = NULL; - - if (fe->dir_index && lh->include_dirs != NULL - && (fe->dir_index - 1) < lh->num_include_dirs) - dir = lh->include_dirs[fe->dir_index - 1]; - - dwarf2_start_subfile (fe->name, dir); + /* Start a subfile for the current file of the state + machine. */ + const file_entry *fe = state_machine.current_file (); + + if (fe != NULL) + dwarf2_start_subfile (fe->name, fe->include_dir (lh)); } /* Decode the table. */ @@ -18517,26 +18547,19 @@ dwarf_decode_lines_1 (struct line_header *lh, struct dwarf2_cu *cu, break; case DW_LNS_set_file: { - /* The arrays lh->include_dirs and lh->file_names are - 0-based, but the directory and file name numbers in - the statement program are 1-based. */ - struct file_entry *fe; - const char *dir = NULL; - state_machine.file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read); line_ptr += bytes_read; - if (state_machine.file == 0 - || state_machine.file - 1 >= lh->num_file_names) + + const file_entry *fe = state_machine.current_file (); + if (fe == NULL) dwarf2_debug_line_missing_file_complaint (); else { - fe = &lh->file_names[state_machine.file - 1]; - if (fe->dir_index && lh->include_dirs != NULL - && (fe->dir_index - 1) < lh->num_include_dirs) - dir = lh->include_dirs[fe->dir_index - 1]; if (record_lines_p) { + const char *dir = fe->include_dir (lh); + state_machine.last_subfile = current_subfile; state_machine.line_has_non_zero_discriminator = state_machine.discriminator != 0; @@ -18671,21 +18694,16 @@ dwarf_decode_lines (struct line_header *lh, const char *comp_dir, for (i = 0; i < lh->num_file_names; i++) { - const char *dir = NULL; - struct file_entry *fe; + file_entry &fe = lh->file_names[i]; - fe = &lh->file_names[i]; - if (fe->dir_index && lh->include_dirs != NULL - && (fe->dir_index - 1) < lh->num_include_dirs) - dir = lh->include_dirs[fe->dir_index - 1]; - dwarf2_start_subfile (fe->name, dir); + dwarf2_start_subfile (fe.name, fe.include_dir (lh)); if (current_subfile->symtab == NULL) { current_subfile->symtab = allocate_symtab (cust, current_subfile->name); } - fe->symtab = current_subfile->symtab; + fe.symtab = current_subfile->symtab; } } } @@ -21382,14 +21400,15 @@ file_file_name (int file, struct line_header *lh) table? Remember that file numbers start with one, not zero. */ if (1 <= file && file <= lh->num_file_names) { - struct file_entry *fe = &lh->file_names[file - 1]; + const file_entry &fe = lh->file_names[file - 1]; - if (IS_ABSOLUTE_PATH (fe->name) || fe->dir_index == 0 - || lh->include_dirs == NULL - || (fe->dir_index - 1) >= lh->num_include_dirs) - return xstrdup (fe->name); - return concat (lh->include_dirs[fe->dir_index - 1], SLASH_STRING, - fe->name, (char *) NULL); + if (!IS_ABSOLUTE_PATH (fe.name)) + { + const char *dir = fe.include_dir (lh); + if (dir != NULL) + return concat (dir, SLASH_STRING, fe.name, (char *) NULL); + } + return xstrdup (fe.name); } else { -- 2.5.5