From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id j3IeEjm/DmAnAgAAWB0awg (envelope-from ) for ; Mon, 25 Jan 2021 07:53:13 -0500 Received: by simark.ca (Postfix, from userid 112) id 3A9D01EF80; Mon, 25 Jan 2021 07:53:13 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: * X-Spam-Status: No, score=1.9 required=5.0 tests=FORGED_MUA_MOZILLA, FREEMAIL_FROM,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,RDNS_NONE, URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from sourceware.org (unknown [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id BD1051E945 for ; Mon, 25 Jan 2021 07:53:12 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3EB783951CBD; Mon, 25 Jan 2021 12:53:12 +0000 (GMT) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2021.outbound.protection.outlook.com [40.92.91.21]) by sourceware.org (Postfix) with ESMTPS id EB577396EC7A for ; Mon, 25 Jan 2021 12:52:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org EB577396EC7A Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=hotmail.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=bernd.edlinger@hotmail.de ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LoUvjSpui7jZ0Roesf7pKwW+JufmvjeU4B4nBnmqDvE292sVewOUWHOEj2FucLzCjaoUGQYO9SIYyGs4EkmykiGsvKLGHZlWr60gURiS74SGIS9MpjudnicpPlZvSGwF4IHmIwoGDPKpltPRKzt7D2xjNOEArK+XT8TmoJk690+HRjSJXzSHvpBsGqrLwGmep3WciPXe2hJMJopLavyaYqD+8Ehy/3jyIzd6SZ87uBktLZq/HXJSWCMlgtCRHHz+mDjaS+2awc6Qm9nKNY3JTBdRVewE/KEeiDI5AXCpAhEUbCdy4ytBRchcyDtqxS6T7JebQvnzgg9qxfQK4odgoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JncW9AAuueeI5ePSgRDjwUlQhlV2AIiBoBIn29qIAJU=; b=nqyq8KYJjqdLmzGSm9ItFBPpyYchDCvsrPCkJv+9TKy0eObNxJUVzFe2/70wROFurWHvXBYNV+LzOgJzt6d249cGwttc153lGA+d2t3+jX3pqFQe8BD8ruSczfcCNu5BG000K4TYHFypy+SKA0BDdMWgOnVnNf1kwzDJoBCY3Q4xcJNzYZa46iEv0FKbMvoc0G5m87McM0MqMse86KbSnOwOE9qRSx6SAwLlrkyiJ09ZS63+vf6dbMrvEuUzeN5iMY8A7KZfym83drVcAnq4C7PCLlpU57i+3VEIoGcqgHqS2N9oe2cDWDe/LQ7DxXHZpBN7d8/rfp51g6LL1zo4Mw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from DB8EUR05FT036.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::49) by DB8EUR05HT026.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc0f::75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11; Mon, 25 Jan 2021 12:52:58 +0000 Received: from AM8PR10MB4708.EURPRD10.PROD.OUTLOOK.COM (2a01:111:e400:fc0f::50) by DB8EUR05FT036.mail.protection.outlook.com (2a01:111:e400:fc0f::355) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.11 via Frontend Transport; Mon, 25 Jan 2021 12:52:58 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:2AEB3982877D6273FA45C0DBC728B70352A3CFE85C801B3857C89D9625F3D66E; UpperCasedChecksum:820C7D2FD51AFF88CB12C5DF19F0793EA95E623074D36A981528A95351CC92E0; SizeAsReceived:7804; Count:47 Received: from AM8PR10MB4708.EURPRD10.PROD.OUTLOOK.COM ([fe80::7510:8a00:1c00:1147]) by AM8PR10MB4708.EURPRD10.PROD.OUTLOOK.COM ([fe80::7510:8a00:1c00:1147%5]) with mapi id 15.20.3784.017; Mon, 25 Jan 2021 12:52:58 +0000 Subject: Re: [PATCH][gdb/symtab] Handle DW_AT_ranges with DW_FORM_sec_off in partial DIE To: Tom de Vries , gdb-patches@sourceware.org References: <20210125122444.GA15885@delia> From: Bernd Edlinger Message-ID: Date: Mon, 25 Jan 2021 13:52:56 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 In-Reply-To: <20210125122444.GA15885@delia> Content-Type: multipart/mixed; boundary="------------D272E3BF926E4723CC45FB04" Content-Language: en-US X-TMN: [bihssgDYLmMra2lqtqrhL9lPdhMGfudU] X-ClientProxiedBy: AM0P190CA0026.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:190::36) To AM8PR10MB4708.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:364::23) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.101] (88.68.3.2) by AM0P190CA0026.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:190::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.12 via Frontend Transport; Mon, 25 Jan 2021 12:52:57 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 47 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 189c09c3-4993-46a0-08d5-08d8c13023f7 X-MS-TrafficTypeDiagnostic: DB8EUR05HT026: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: kthPV91z4wjCYunIqr4t6TReYmZWQ/bIK2UNsjK+cM+PbUkelxN+O9yZqyJ8YlAy5X6btbP2Af6GFSRQr4Nq1yJGCf9t8chOF29KAQUGxdhR2PEHnH8TmnAFxMHn4S7fD8DUULOcNUxC8Sz73jbWlOH1Anz2WITdyqJIMZZNvH6dDcGgrRGm6SqjnSpmGo0emwvYkYC3Atfjxtbzv/WkeybkwWr/LSu7Dq4CxBdWcSHlcWYh65e+Rib1qBN59cObxjDaWp8uvEO4Qpx4hQK7F5imZmEQCGPbRxcdZSQXKM4= X-MS-Exchange-AntiSpam-MessageData: s4jvdTxk1FyXhSRsE2969Aetstwl5+O5n5Onmr8d7fWS5tWlDLdAsLd0k//DSsqHl5DgmLPX243reevDIEOA4AuJW3wEcRNww0osGQ9d5rK25hhoVICZZ2NKKxuaE05TtZ0d0wWjTFYM6gc84hH0IQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 189c09c3-4993-46a0-08d5-08d8c13023f7 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2021 12:52:58.2412 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: DB8EUR05FT036.eop-eur05.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8EUR05HT026 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Tom Tromey Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" --------------D272E3BF926E4723CC45FB04 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit On 1/25/21 1:24 PM, Tom de Vries wrote: > Hi, > > While looking into a failure in gdb.go/package.exp with gcc-11, I noticed that > gdb shows some complaints when loading the executable (also with gcc-10, where > the test-case passes): > ... > $ gdb -batch -iex "set complaints 100" package.10 -ex start > During symbol reading: Attribute value is not a constant (DW_FORM_sec_offset) > Temporary breakpoint 1 at 0x402ae6: file gdb.go/package1.go, line 8. > During symbol reading: Attribute value is not a constant (DW_FORM_sec_offset) > During symbol reading: Invalid .debug_rnglists data (no base address) > ... > > Fix this by using as_unsigned () to read DW_AT_ranges in the partial DIE > reader, similar to how that is done in dwarf2_get_pc_bounds. > > Tested on x86_64-linux. > > Any comments? > Oh, interesting. This is exactly what I have posted here: https://sourceware.org/pipermail/gdb-patches/2021-January/174660.html but my test case shows the regression in the partial symbols. Maybe you can take my test case and merge it to your patch? Thanks Bernd. --------------D272E3BF926E4723CC45FB04 Content-Type: text/x-patch; name="0001-Fix-partial-symbols.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Fix-partial-symbols.patch" RnJvbSAzMzhmMTk2ZjljYjRkYThiODVlNDJmNDM1NDI0ZjFjNmRjMzk2YjM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCZXJuZCBFZGxpbmdlciA8YmVybmQuZWRsaW5nZXJAaG90bWFp bC5kZT4KRGF0ZTogU2F0LCAyOCBOb3YgMjAyMCAxNzoyOToxOCArMDEwMApTdWJqZWN0OiBbUEFU Q0hdIEZpeCBwYXJ0aWFsIHN5bWJvbHMKClRoZSBEV19BVF9yYW5nZXMgYXR0cmlidXRlIGlzIG9m IHR5cGUgRFdfRk9STV9zZWNfb2Zmc2V0Cm9yIERXX0ZPUk1fcm5nbGlzdHguCgpCdXQgdGhlIGZ1 bmN0aW9uIGF0dHJpYnV0ZSBhdHRyaWJ1dGU6OmNvbnN0YW50X3ZhbHVlICgpIGRvZXMgb25seQpo YW5kbGUgRFdfRk9STV9zZGF0YSwgRFdfRk9STV9pbXBsaWNpdF9jb25zdCwgRFdfRk9STV91ZGF0 YQpEV19GT1JNX2RhdGExLCBEV19GT1JNX2RhdGEyLCBEV19GT1JNX2RhdGE0LCBEV19GT1JNX2Rh dGE4CmFuZCByZXR1cm5zIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBhbnl0aGluZyBlbHNlLgoKVGhl cmVmb3JlIHRoZSB3cm9uZyByYW5nZSBpcyBwYXJzZWQuCgpGaXhlczogNTI5OTA4Y2JkMGEgKCJS ZW1vdmUgRFdfVU5TTkQiKQoKZ2RiOgoyMDIxLTAxLTAzICBCZXJuZCBFZGxpbmdlciAgPGJlcm5k LmVkbGluZ2VyQGhvdG1haWwuZGU+CgoJKiBkd2FyZjIvcmVhZC5jIChwYXJ0aWFsX2RpZV9pbmZv OjpyZWFkKTogRml4IERXX0FUX3Jhbmdlcy4KCmdkYi90ZXN0c3VpdGU6CjIwMjEtMDEtMDMgIEJl cm5kIEVkbGluZ2VyICA8YmVybmQuZWRsaW5nZXJAaG90bWFpbC5kZT4KCgkqIGdkYi5jcC9zdGVw LWFuZC1uZXh0LXBzeW10YWIuZXhwOiBOZXcgdGVzdC4KCSogZ2RiLmNwL3N0ZXAtYW5kLW5leHQt cHN5bXRhYi5jYzogTmV3IHRlc3QuCi0tLQogZ2RiL2R3YXJmMi9yZWFkLmMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAyICstCiBnZGIvdGVzdHN1aXRlL2dkYi5jcC9zdGVwLWFuZC1u ZXh0LXBzeW10YWIuY2MgIHwgMjcgKysrKysrKysrKysrKysrKysrKysKIGdkYi90ZXN0c3VpdGUv Z2RiLmNwL3N0ZXAtYW5kLW5leHQtcHN5bXRhYi5leHAgfCAzNCArKysrKysrKysrKysrKysrKysr KysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1w c3ltdGFiLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1h bmQtbmV4dC1wc3ltdGFiLmV4cAoKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKaW5kZXggMzA5ZmY4My4uNTE5MWQ2OSAxMDA2NDQKLS0tIGEvZ2RiL2R3 YXJmMi9yZWFkLmMKKysrIGIvZ2RiL2R3YXJmMi9yZWFkLmMKQEAgLTE5ODEwLDcgKzE5ODEwLDcg QEAgc3RydWN0IHR5cGUgKgogCSAgICAvKiBJdCB3b3VsZCBiZSBuaWNlIHRvIHJldXNlIGR3YXJm Ml9nZXRfcGNfYm91bmRzIGhlcmUsCiAJICAgICAgIGJ1dCB0aGF0IHJlcXVpcmVzIGEgZnVsbCBE SUUsIHNvIGluc3RlYWQgd2UganVzdAogCSAgICAgICByZWltcGxlbWVudCBpdC4gICovCi0JICAg IHVuc2lnbmVkIGludCByYW5nZXNfb2Zmc2V0ID0gKGF0dHIuY29uc3RhbnRfdmFsdWUgKDApCisJ ICAgIHVuc2lnbmVkIGludCByYW5nZXNfb2Zmc2V0ID0gKGF0dHIuYXNfdW5zaWduZWQgKCkKIAkJ CQkJICArIChuZWVkX3Jhbmdlc19iYXNlCiAJCQkJCSAgICAgPyBjdS0+cmFuZ2VzX2Jhc2UKIAkJ CQkJICAgICA6IDApKTsKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5k LW5leHQtcHN5bXRhYi5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5kLW5leHQtcHN5 bXRhYi5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmI3MjRiCi0tLSAv ZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avc3RlcC1hbmQtbmV4dC1wc3ltdGFi LmNjCkBAIC0wLDAgKzEsMjcgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAyMDIxIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworCisjaW5jbHVkZSAi c3RlcC1hbmQtbmV4dC1pbmxpbmUuaCIKKworaW50CitnZXRfYWxpYXNfc2V0MSAodHJlZSAqdCkK K3sKKyAgaWYgKHQgIT0gTlVMTAorICAgICAgJiYgVFJFRV9UWVBFICh0KS56ICE9IDEpCisgICAg cmV0dXJuIDA7CisgIHJldHVybiAxOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3Avc3RlcC1hbmQtbmV4dC1wc3ltdGFiLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAt YW5kLW5leHQtcHN5bXRhYi5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjI2OGYxNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3N0ZXAtYW5k LW5leHQtcHN5bXRhYi5leHAKQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQgMjAyMSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIwor IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworc3RhbmRh cmRfdGVzdGZpbGUgc3RlcC1hbmQtbmV4dC1pbmxpbmUuY2MgLmNjCisKK2lmIFtnZXRfY29tcGls ZXJfaW5mbyAiYysrIl0geworICAgIHVuc3VwcG9ydGVkICJjb3VsZG4ndCBmaW5kIGEgdmFsaWQg YysrIGNvbXBpbGVyIgorICAgIHJldHVybiAtMQorfQorCitzZXQgb3B0aW9ucyB7YysrIGRlYnVn IG5vd2FybmluZ3Mgb3B0aW1pemU9LU8yfQorIyBhdm9pZCBEV19UQUdfY29tcGlsZV91bml0IHdp dGggbG93X3BjICE9IDAgKGdjYy04IGFuZCBlYXJsaWVyKQorbGFwcGVuZCBvcHRpb25zIGFkZGl0 aW9uYWxfZmxhZ3M9LWZmdW5jdGlvbi1zZWN0aW9ucworCitzZXQgc291cmNlcyBbbGlzdCAkc3Jj ZmlsZSAkc3JjZmlsZTJdCisKK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgImZhaWxlZCB0byBw cmVwYXJlIiAkdGVzdGZpbGUgJHNvdXJjZXMgJG9wdGlvbnNdIH0geworICAgIHJldHVybiAtMQor fQorCisjIHRoZXJlIGFyZSA0IHRyZWVfY2hlY2sgaW5zdGFuY2VzIG5vdCAzCitnZGJfdGVzdCAi YiB0cmVlX2NoZWNrIiAiLipCcmVha3BvaW50IC4qIFxcKDQgbG9jYXRpb25zXFwpLioiICJ0ZXN0 MSIKLS0gCjEuOS4xCgo= --------------D272E3BF926E4723CC45FB04--