From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam08on2066.outbound.protection.outlook.com [40.107.101.66]) by sourceware.org (Postfix) with ESMTPS id 656D93858D37 for ; Thu, 20 Jan 2022 16:20:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 656D93858D37 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BZT121jZqlzlLB6yaALqW6FNqKePcxBSbzwzH9GYNwPzobRfZlzQj+gXf4EeveTCr6bKK6lL4oDPpgOSAe52TW3/OFcH3yJfu2YfgpQASVwLgxWMLSdn3nQ3uPnxHEKS8gDS99k0k77WzvoXFyDfy6kdZrUMoKf6WbQywvCu+5A5PmLCC2t8iJPgb1brbkLOLzKl+buT2TF0y+nyXFgUolsRMaUU+NG1bn5rhC17o2g0VdnVRtgvsKAMBCuhZcZjCfdCbre6viHUA73IcrIl8AaMrYR/liCgmykHQ6XYOqA5Xi/PSv4dnztYD184abq1VO/0lYzSsr7AECD+r9c5ew== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/2SZig9mnyqfgntA3Dq1jEjQr5qEeBvw9qcCzI3ik20=; b=A6QXlhqNRTVN1oU3uUaNfL7PSlGQp3Re6aLsylTfBJcl3kISHJuU3fkdCUBqN39VUKGBQ9uQ809i9h/Gsf6mBWU0CY/vOTcKVtGLRTyD9QKfcm0ixb5++jdAuothZjm4lCjxt40PzI45n+5/D9mp7IU3ZEk4JURh5DiZU8BInu8SyxMSNrl+z+wdv0DqwIvm2lHVMjpS77R9+/wyMjb8DjyyFahZjV9HLoS9o+PR9LwwLETLBfGnDt//9f+KXEHdl0b6QKeX7k6raZVYgXdPTJsFSp3xaBpBMkF4Mlxd9bG3YLfyfdVt4BamNv7SL+M+8w+6d+tBu8eQ3HQel4Db9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from MW2PR12MB4684.namprd12.prod.outlook.com (2603:10b6:302:13::29) by BN6PR12MB1651.namprd12.prod.outlook.com (2603:10b6:405:4::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4888.11; Thu, 20 Jan 2022 16:20:47 +0000 Received: from MW2PR12MB4684.namprd12.prod.outlook.com ([fe80::a56d:39af:d0ea:fdfd]) by MW2PR12MB4684.namprd12.prod.outlook.com ([fe80::a56d:39af:d0ea:fdfd%4]) with mapi id 15.20.4909.010; Thu, 20 Jan 2022 16:20:47 +0000 From: "Kumar N, Bhuvanendra" To: Joel Brobecker , Andrew Burgess CC: "gdb-patches@sourceware.org" , "George, Jini Susan" , "Achra, Nitika" , "Sharma, Alok Kumar" , "E, Nagajyothi" Subject: RE: [PATCH] Fix ptype and print commands for namelist variables(a fortran feature) Thread-Topic: [PATCH] Fix ptype and print commands for namelist variables(a fortran feature) Thread-Index: AdeYyESNFilxiCvkSRWjYmJPezxZtgVO2csAAGpd/AACxzmqgAA84QAgCGPfWdAAAOU2MALESQhwACv/V4ABM5CGMAHgE0kAAKyP/yAFgSX1oA== Date: Thu, 20 Jan 2022 16:20:46 +0000 Message-ID: References: <20210920094122.GB4950@embecosm.com> <20211006155135.GS1900093@embecosm.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_Enabled=true; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_SetDate=2021-12-23T15:51:42Z; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_Method=Standard; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_Name=AMD Official Use Only-AIP 2.0; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_ActionId=1e5b471a-e742-47e5-9c0b-eecfa7ecf5df; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_ContentBits=1 msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_enabled: true msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_setdate: 2022-01-20T16:20:37Z msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_method: Standard msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_name: AMD Official Use Only-AIP 2.0 msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_actionid: c9ac48c9-8b02-4b99-a2df-a34823aa9c1f msip_label_88914ebd-7e6c-4e12-a031-a9906be2db14_contentbits: 0 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b064e4b5-c44f-4075-82d3-08d9dc30d0f6 x-ms-traffictypediagnostic: BN6PR12MB1651:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:549; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: M/Pd9sjHkaaFnLp1MyCn+ftBrgqSpTui/H8VMIDJ8SlTWrjxEwKzsiNvoer46jFl1dlqxCXv/+bQl6N3eKR0DYbblAGWsvKocLIB21Gj4JQxjrLNrEJoil88wF5gs2Z4TD5yKGOcEpE5IrznErZ1lOmUleocBu/MjWgjmhid1qfMjeKJqcYBjauCYg2s8N2miF5WZy+2++AYD2LPa59TmDpNMnXhoNpsv2RKRWchci+nsrZ5yuRAGD1HcHnviaOIWBqRSFOSr3soPboupoMlyYs5368urNmSv4KediXT2wdxJgGCitU/26VAW7Aw46RlVBFoIwwjBImubOpnCCAO1OZs4YVOz5HhrQ+borLLvSn19F+VP+Ij7lNn4HeWvPsXQHn8JlZJSf/u3R0dOg1977eH1zr8tLiTd7ZWEhY/AhdVq+GYQnqEWKBhwF65hH70TZpBKti0tqJ6WuSw1ZUkVlzH3rC+G0jy5ch9iVhaS6KO90F5O+sO0gsthhnRm4Ey4+dVulJjsrb9LIQSTieiDhlULa50eckctjCukLyrWZKKasYfdp901qwrg7fG/2EZa2Czki3SObzSAGOaSUTIjXjgdC8/GqIu+GlCN3QK1bTU117j2QCfIRdPWJQyifkFCy5mIPHmrvv91B3ngmxDdKVtLWr/TWFQjEHvKce/k09EZPIFTVMP/sOhKGAgWdCBBsc7L8pV+fizMXBiFLY6uNA1cbwmpLxd/b5gvEPyKRuykxZzpC71tSD3u/J4uIWq1yuDT9mTbQaZcWAGtN1HsdXN044hUUD9kSSGQRii6m++zeR0BtinIm5uoHEtUoUC x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MW2PR12MB4684.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(66476007)(316002)(26005)(508600001)(64756008)(30864003)(76116006)(4326008)(66946007)(6506007)(186003)(38070700005)(966005)(83380400001)(8676002)(2906002)(55016003)(52536014)(8936002)(122000001)(66446008)(45080400002)(38100700002)(53546011)(55236004)(99936003)(5660300002)(9686003)(54906003)(33656002)(86362001)(110136005)(71200400001)(66556008)(7696005)(2004002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?gO3jphudVQeAKH+yBvC9kNWj5q3QlK22Nog99SIu+Q/i+TJ7erSc8Ef9jGQm?= =?us-ascii?Q?h9H34MnykXrIP4LwmuXY9bpWnS7aQSrnC1qsYCndxpi1dy4IJlq96A9+CAMs?= =?us-ascii?Q?E4ghyk3Cs3wJOFpxdzN9jYp5a5w0UeWUzIKtTckuG76JciJe3mjU4S65Fba9?= =?us-ascii?Q?XeRqqgfV52FLqhHL/Y9pp3/PeNwN2RqwKdkCINh8pkw6GWKHX09axQ1/w8Zn?= =?us-ascii?Q?dSRmDfwao1HFvWvxd/QsWj+N6TZZNuguUazg8kXPg/IIgWUgUHN8087x1+Mj?= =?us-ascii?Q?/qoKOd7L3BpeM5i/LXym6MjOacKq2t9eRiOTYALgwt5ALDfb4svjsTk9Hyc0?= =?us-ascii?Q?MaqglSaREIN/L0IHJVnjFJNIvk4NZuesu0OqxKjJXMJXPCpdDJw32w1Eb/6G?= =?us-ascii?Q?lEFLX1TG6YC+DdujniXj2SaHKfZHdr3SW16cbuzhOxzolGOpIm+54cb5DJtX?= =?us-ascii?Q?c7lxKtG+dOWQLFoVFzuKrVaG/BuAvUqm2hDwmIB9dLKxg7u9+Y0T54wN7Qgj?= =?us-ascii?Q?m3s0s4B8x767lKzzDv7J8TEnvO3zbbD7OynIQMK2br8jlNQJauK+VZismAXW?= =?us-ascii?Q?iJmrJxwvWCI/okxTWf+vsOMXyRNOyHMUuL4GEluwh+Dlr5HjSK3ugZWMX9Cv?= =?us-ascii?Q?N+u1Fg4V2TX7g0vXGm/QhtmWFOwy81G/v2a5/zBQPt/h7XrKq1V13ZjmrKlF?= =?us-ascii?Q?T4HdG9DhzoCH9+jgDQQNk2ET1zdP4F2w+/QIFTDZTZz2ejty5F5YO/Gt1Ahu?= =?us-ascii?Q?H0rxhnguIaMPKqLkI9mEICVv4+ucLmzoXyeOlPxKnGrltBna/3RAbcjLrJ6H?= =?us-ascii?Q?u5UEudM255ldL23XRzlYoLcKeDB/nfxF9logL32aJ08maeMRO6o694Vp74gM?= =?us-ascii?Q?60muxXnTg1xmu9NsHEkUIw1MCKFprtcc7nl1i2WSsMXtCu7vXm0mQa+Q+Sb4?= =?us-ascii?Q?llSbbVvamVTNcnQA7wUY7Bt6caii/OGs+r/m5z9HuL0Si0U1Rx8ASSkaZTjt?= =?us-ascii?Q?iuMT+xENuDRUQfMmD0E/rfYu2mPC7GoMgMsMAqhwmjs4huFzrnTYorvVBBCt?= =?us-ascii?Q?glROumx4z7SEsDDi6CT3anYpERPxDz/qHF5CRIiU/36XAup+MoFVRNWKH29v?= =?us-ascii?Q?oFm9Pgb+x71BDVkhKXkaeMIIDGJHnGYmcD3WV/4Qx1aoKAOU0Va0sPZDGSGu?= =?us-ascii?Q?5rIuwCCVfBJXFUO7fHkrsMnwWlmWDt/xgr1+S0DHqWSY/KMQmfcj2GN9FWc9?= =?us-ascii?Q?hDTuH9ZSkaQqTpMmEk32h/KmY7BUbKShIQb2Aq8MEi3y/uKzUPw/v4QrzqWO?= =?us-ascii?Q?FhSnb+04so/1+wnxZJ9xdjddHwPhnH0na4aSEzSOvXRkfkoQ4cLPB3sP75YY?= =?us-ascii?Q?IwKw9YCRb0T6PB7jtpjvwOltViCq6LyqiFy90iA7a7c9mVSVK8a77MwBZIxu?= =?us-ascii?Q?H7WNM7YWOd8ZChVqhdKwChcRRMTeTm8r1nI21qqRzANQabfqElAKangCjxuA?= =?us-ascii?Q?eLM9m4mRU83yyuqeWsU4zCrKiNWgANYUOqUy5EbA5++hTF+9sQwX19wm/Nih?= =?us-ascii?Q?of/7rbO8SEY0yr9nXGGryoJ9NlfOA0s24bjFwNd42cf0Fucedd7JvQ0Hq7p1?= =?us-ascii?Q?0yVteq8jgtmR0hfCbxsCKWk=3D?= Content-Type: multipart/mixed; boundary="_002_MW2PR12MB4684086CF817EB85946C9D17875A9MW2PR12MB4684namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW2PR12MB4684.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b064e4b5-c44f-4075-82d3-08d9dc30d0f6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2022 16:20:46.9649 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: VUJtjKLgHWeFQZUkG2vYE/BRsfMmdjEvamAue+tVK12mHAehwUMwnAfjiHoXodSU28yShyl/Wer6DGt6D5RzLQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR12MB1651 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org 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: , X-List-Received-Date: Thu, 20 Jan 2022 16:20:54 -0000 --_002_MW2PR12MB4684086CF817EB85946C9D17875A9MW2PR12MB4684namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [AMD Official Use Only] Hi all, Sorry for the delay in sharing the revised patch, I was occupied with some = other work. Please find the revised patch with all the details and also pat= ch is inlined below. Reason for the assert failure when GDB is built with -D_GLIBCXX_DEBUG=3D1 i= s, the size or length(TYPE_LENGTH) of the namelist variable type was not po= pulated, it was zero, hence assert was failing in gdbsupport/array-view.h. = Now this is fixed and I could test with -D_GLIBCXX_DEBUG=3D1 Compiler is not emitting the size of the namelist variable type, hence GDB = is calculating it. In similar types like DW_TAG_structure_type, DW_AT_byte_= size attribute is emitted by compiler and GDB uses it with TYPE_LENGTH. It'= s not the case with DW_TAG_namelist. Hence size of the namelist variable ty= pe is calculated in GDB. Also unlike DW_TAG_structure_type, namelist items = are not allocated in continuous memory, they are spread across, hence for e= ach namelist item symbol table lookup is done before printing its value. Th= is way making sure namelist items printing is intact. Regards, Bhuvan PATCH inlined: >From 68d315db5488b17b6e47e052947768a4c8a19fa4 Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?=3DE2=3D80=3D9Cbhkumarn=3DE2=3D80=3D9D?=3D Date: Tue, 18 Jan 2022 18:12:33 +0530 Subject: [PATCH] gdb/fortran: Fix ptype and print commands for namelist variables. Gfortran supports namelist(a fortran feature); it emits DW_TAG_namelist and DW_TAG_namelist_item dies. But gdb does not process these dies and does not support 'print' or 'ptype' commands on namelist variables. An attempt to print namelist variables results in gdb bailing out with the error message as shown below. (gdb) print nml No symbol "nml" in current context. This commit is to make the print and ptype commands work for namelist variables and its items. Sample output of these commands is shared below, with fixed gdb. (gdb) ptype nml type =3D Type nml integer(kind=3D4) :: a integer(kind=3D4) :: b End Type nml (gdb) print nml $1 =3D ( a =3D 10, b =3D 20 ) --- gdb/dwarf2/read.c | 44 +++++++++++++++++++---- gdb/f-typeprint.c | 6 +++- gdb/f-valprint.c | 24 +++++++++++++ gdb/gdbtypes.h | 13 +++++++ gdb/testsuite/gdb.fortran/namelist.exp | 50 ++++++++++++++++++++++++++ gdb/testsuite/gdb.fortran/namelist.f90 | 27 ++++++++++++++ gdb/value.c | 2 +- include/dwarf2.def | 2 +- 8 files changed, 159 insertions(+), 9 deletions(-) create mode 100644 gdb/testsuite/gdb.fortran/namelist.exp create mode 100644 gdb/testsuite/gdb.fortran/namelist.f90 diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index cbd9a3012eb..2629a0ff432 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -9705,6 +9705,7 @@ process_die (struct die_info *die, struct dwarf2_cu *= cu) case DW_TAG_interface_type: case DW_TAG_structure_type: case DW_TAG_union_type: + case DW_TAG_namelist: process_structure_scope (die, cu); break; case DW_TAG_enumeration_type: @@ -14562,8 +14563,21 @@ dwarf2_add_field (struct field_info *fip, struct d= ie_info *die, =20 fp =3D &new_field->field; =20 - if (die->tag =3D=3D DW_TAG_member && ! die_is_declaration (die, cu)) - { + if ((die->tag =3D=3D DW_TAG_member || die->tag =3D=3D DW_TAG_namelist_it= em) + && ! die_is_declaration (die, cu)) + { + if (die->tag =3D=3D DW_TAG_namelist_item) + { + /* Typically, DW_TAG_namelist_item are references to namelist it= ems. + If so, follow that reference. */ + struct attribute *attr1 =3D dwarf2_attr (die, DW_AT_namelist_ite= m, cu); + struct die_info *item_die =3D nullptr; + struct dwarf2_cu *item_cu =3D cu; + if (attr1->form_is_ref ()) + item_die =3D follow_die_ref (die, attr1, &item_cu); + if (item_die !=3D nullptr) + die =3D item_die; + } /* Data member other than a C++ static data member. */ =20 /* Get type of field. */ @@ -15621,6 +15635,10 @@ read_structure_type (struct die_info *die, struct = dwarf2_cu *cu) { type->set_code (TYPE_CODE_UNION); } + else if (die->tag =3D=3D DW_TAG_namelist) + { + type->set_code (TYPE_CODE_NAMELIST); + } else { type->set_code (TYPE_CODE_STRUCT); @@ -15823,7 +15841,8 @@ handle_struct_member_die (struct die_info *child_di= e, struct type *type, struct dwarf2_cu *cu) { if (child_die->tag =3D=3D DW_TAG_member - || child_die->tag =3D=3D DW_TAG_variable) + || child_die->tag =3D=3D DW_TAG_variable + || child_die->tag =3D=3D DW_TAG_namelist_item) { /* NOTE: carlton/2002-11-05: A C++ static data member should be a DW_TAG_member that is a declaration, but @@ -15867,7 +15886,9 @@ handle_struct_member_die (struct die_info *child_di= e, struct type *type, } =20 /* Finish creating a structure or union type, including filling in - its members and creating a symbol for it. */ + its members and creating a symbol for it. This function also + handles Fortran namelist variable, its items or members and + creating a symbol for it. */ =20 static void process_structure_scope (struct die_info *die, struct dwarf2_cu *cu) @@ -21971,8 +21992,17 @@ new_symbol (struct die_info *die, struct type *typ= e, struct dwarf2_cu *cu, case DW_TAG_union_type: case DW_TAG_set_type: case DW_TAG_enumeration_type: - SYMBOL_ACLASS_INDEX (sym) =3D LOC_TYPEDEF; - SYMBOL_DOMAIN (sym) =3D STRUCT_DOMAIN; + case DW_TAG_namelist: + if (die->tag =3D=3D DW_TAG_namelist) + { + SYMBOL_ACLASS_INDEX (sym) =3D LOC_STATIC; + SYMBOL_DOMAIN (sym) =3D VAR_DOMAIN; + } + else + { + SYMBOL_ACLASS_INDEX (sym) =3D LOC_TYPEDEF; + SYMBOL_DOMAIN (sym) =3D STRUCT_DOMAIN; + } =20 { /* NOTE: carlton/2003-11-10: C++ class symbols shouldn't @@ -22909,6 +22939,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu= *cu) && die->tag !=3D DW_TAG_class_type && die->tag !=3D DW_TAG_interface_type && die->tag !=3D DW_TAG_structure_type + && die->tag !=3D DW_TAG_namelist && die->tag !=3D DW_TAG_union_type) return NULL; =20 @@ -22933,6 +22964,7 @@ dwarf2_name (struct die_info *die, struct dwarf2_cu= *cu) case DW_TAG_interface_type: case DW_TAG_structure_type: case DW_TAG_union_type: + case DW_TAG_namelist: /* Some GCC versions emit spurious DW_AT_name attributes for unnamed structures or unions. These were of the form "._%d" in GCC 4.1, or simply "" or "" in GCC 4.3 diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c index 1791cb29451..5b34622dacb 100644 --- a/gdb/f-typeprint.c +++ b/gdb/f-typeprint.c @@ -121,6 +121,7 @@ f_language::f_type_print_varspec_prefix (struct type *t= ype, case TYPE_CODE_UNDEF: case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: + case TYPE_CODE_NAMELIST: case TYPE_CODE_ENUM: case TYPE_CODE_INT: case TYPE_CODE_FLT: @@ -261,6 +262,7 @@ f_language::f_type_print_varspec_suffix (struct type *t= ype, case TYPE_CODE_UNDEF: case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: + case TYPE_CODE_NAMELIST: case TYPE_CODE_ENUM: case TYPE_CODE_INT: case TYPE_CODE_FLT: @@ -305,7 +307,8 @@ f_language::f_type_print_base (struct type *type, struc= t ui_file *stream, const char *prefix =3D ""; if (type->code () =3D=3D TYPE_CODE_UNION) prefix =3D "Type, C_Union :: "; - else if (type->code () =3D=3D TYPE_CODE_STRUCT) + else if (type->code () =3D=3D TYPE_CODE_STRUCT + || type->code () =3D=3D TYPE_CODE_NAMELIST) prefix =3D "Type "; fprintf_filtered (stream, "%*s%s%s", level, "", prefix, type->name (= )); return; @@ -391,6 +394,7 @@ f_language::f_type_print_base (struct type *type, struc= t ui_file *stream, =20 case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: + case TYPE_CODE_NAMELIST: if (type->code () =3D=3D TYPE_CODE_UNION) fprintf_filtered (stream, "%*sType, C_Union :: ", level, ""); else diff --git a/gdb/f-valprint.c b/gdb/f-valprint.c index 27d9a730978..48044d1ab1c 100644 --- a/gdb/f-valprint.c +++ b/gdb/f-valprint.c @@ -295,8 +295,22 @@ f_language::value_print_inner (struct value *val, stru= ct ui_file *stream, =20 case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: + case TYPE_CODE_NAMELIST: /* Starting from the Fortran 90 standard, Fortran supports derived types. */ + /* Calculate and set the total size or length of the namelist variab= le + type, which is summation of size of each item in the namelist + variable. Please note the namelist items are not allocated in + continuous memory unlike other types, hence for each namelist ite= m + symbol table lookup is done before printing its value. */ + if (type->code () =3D=3D TYPE_CODE_NAMELIST) + { + unsigned int total_size =3D 0; + for (index =3D 0; index < type->num_fields (); index++) + total_size +=3D TYPE_LENGTH (type->field (index).type ()); + TYPE_LENGTH (type) =3D total_size; + } + fprintf_filtered (stream, "( "); for (index =3D 0; index < type->num_fields (); index++) { @@ -320,6 +334,16 @@ f_language::value_print_inner (struct value *val, stru= ct ui_file *stream, fputs_filtered (" =3D ", stream); } =20 + /* While printing namelist items, fetch the appropriate value + field before printing its value. */ + if (type->code () =3D=3D TYPE_CODE_NAMELIST) + { + struct block_symbol symni =3D lookup_symbol + (field_name, get_selected_block (0), VAR_DOMAIN, nullptr); + if (symni.symbol !=3D nullptr) + field =3D value_of_variable (symni.symbol, symni.block); + } + common_val_print (field, stream, recurse + 1, options, current_language); =20 diff --git a/gdb/gdbtypes.h b/gdb/gdbtypes.h index dc575c42996..8da362bddec 100644 --- a/gdb/gdbtypes.h +++ b/gdb/gdbtypes.h @@ -195,6 +195,19 @@ enum type_code =20 /* * Fixed Point type. */ TYPE_CODE_FIXED_POINT, + + /* * Fortran namelist is a group of variables or arrays that can be + read or written. + + Namelist syntax: NAMELIST / groupname / namelist_items ... + NAMELIST statement assign a group name to a collection of variables + called as namelist items. The namelist items can be of any data typ= e + and can be variables or arrays. + + Compiler emit DW_TAG_namelist for group name and DW_TAG_namelist_it= em + for each of the namelist items. GDB process these namelist dies + and print namelist variables during print and ptype commands. */ + TYPE_CODE_NAMELIST, }; =20 /* * Some bits for the type's instance_flags word. See the macros diff --git a/gdb/testsuite/gdb.fortran/namelist.exp b/gdb/testsuite/gdb.for= tran/namelist.exp new file mode 100644 index 00000000000..2e8325c0b1d --- /dev/null +++ b/gdb/testsuite/gdb.fortran/namelist.exp @@ -0,0 +1,50 @@ +# Copyright (C) 2021 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# This file is part of the gdb testsuite. It contains tests for fortran +# namelist. + +if { [skip_fortran_tests] } { return -1 } + +standard_testfile .f90 +load_lib "fortran.exp" + +if {[prepare_for_testing "failed to prepare" $testfile $srcfile {debug f90= }]} { + return -1 +} + +if ![fortran_runto_main] then { + perror "couldn't run to main" + continue +} + +# Depending on the compiler being used, the type names can be printed +# differently. +set int [fortran_int4] + +gdb_breakpoint [gdb_get_line_number "Display namelist"] +gdb_continue_to_breakpoint "Display namelist" + +if {[test_compiler_info {gcc-*}]} { + gdb_test "ptype nml" \ + "type =3D Type nml\r\n *$int :: a\r\n *$int :: b\r\n *End Type nml= " + gdb_test "print nml" \ + "\\$\[0-9\]+ =3D \\( a =3D 10, b =3D 20 \\)" +} else { + gdb_test "ptype nml" \ + "No symbol \"nml\" in current context\\." + gdb_test "print nml" \ + "No symbol \"nml\" in current context\\." +} diff --git a/gdb/testsuite/gdb.fortran/namelist.f90 b/gdb/testsuite/gdb.for= tran/namelist.f90 new file mode 100644 index 00000000000..fb36690d765 --- /dev/null +++ b/gdb/testsuite/gdb.fortran/namelist.f90 @@ -0,0 +1,27 @@ +! Copyright (C) 2021 Free Software Foundation, Inc. +! +! This program is free software; you can redistribute it and/or modify +! it under the terms of the GNU General Public License as published by +! the Free Software Foundation; either version 3 of the License, or +! (at your option) any later version. +! +! This program is distributed in the hope that it will be useful, +! but WITHOUT ANY WARRANTY; without even the implied warranty of +! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +! GNU General Public License for more details. +! +! You should have received a copy of the GNU General Public License +! along with this program. If not, see . +! +! This file is the Fortran source file for namelist.exp. + +program main + + integer :: a, b + namelist /nml/ a, b + + a =3D 10 + b =3D 20 + Write(*,nml) ! Display namelist + +end program main diff --git a/gdb/value.c b/gdb/value.c index bb2adae0a51..16be02fb199 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -3901,7 +3901,7 @@ value_fetch_lazy_memory (struct value *val) CORE_ADDR addr =3D value_address (val); struct type *type =3D check_typedef (value_enclosing_type (val)); =20 - if (TYPE_LENGTH (type)) + if (TYPE_LENGTH (type) && (type->code () !=3D TYPE_CODE_NAMELIST)) read_value_memory (val, 0, value_stack (val), addr, value_contents_all_raw (val), type_length_units (type)); diff --git a/include/dwarf2.def b/include/dwarf2.def index 1ae6e1df298..6b8be1f6a16 100644 --- a/include/dwarf2.def +++ b/include/dwarf2.def @@ -289,7 +289,7 @@ DW_AT (DW_AT_frame_base, 0x40) DW_AT (DW_AT_friend, 0x41) DW_AT (DW_AT_identifier_case, 0x42) DW_AT (DW_AT_macro_info, 0x43) -DW_AT (DW_AT_namelist_items, 0x44) +DW_AT (DW_AT_namelist_item, 0x44) DW_AT (DW_AT_priority, 0x45) DW_AT (DW_AT_segment, 0x46) DW_AT (DW_AT_specification, 0x47) --=20 2.17.1 -----Original Message----- From: Kumar N, Bhuvanendra=20 Sent: Thursday, December 23, 2021 9:22 PM To: Joel Brobecker ; Andrew Burgess Cc: gdb-patches@sourceware.org; George, Jini Susan ; Achra, Nitika ; Sharma, Alok Kumar ; E, Nagajyothi ; Andrew Burgess Subject: RE: [PATCH] Fix ptype and print commands for namelist variables(a = fortran feature) [AMD Official Use Only] Hi, I could reproduce the assert that Andrew mentioned with the patch and -D_GL= IBCXX_DEBUG=3D1. I am looking into it. I had to configure like this as Andrew suggested. ../binutils-gdb/configure --disable-sim --enable-targets=3Dall CFLAGS=3D"-= O0 -g3 -D_GLIBCXX_DEBUG=3D1" CXXFLAGS=3D"-O0 -g3 -D_GLIBCXX_DEBUG=3D1" Regards, Bhuvan -----Original Message----- From: Joel Brobecker Sent: Monday, December 20, 2021 10:43 AM To: Kumar N, Bhuvanendra Cc: Joel Brobecker ; gdb-patches@sourceware.org; Geo= rge, Jini Susan ; Achra, Nitika ; Sharma, Alok Kumar ; E, Nagajyothi ; Andrew Burgess Subject: Re: [PATCH] Fix ptype and print commands for namelist variables(a = fortran feature) [CAUTION: External Email] Hi Bhuvan, > Thanks a lot for your comments. I have tried to address all your=20 > previous comments. I have attached the revised patch and also inlined. > Not sure if you see some trailing spaces or indentation issues still,=20 > mostly they are due to my email client(MS outlook). Please let me know=20 > if you have any comments. Thanks again. I believe Andrew had some questions (failed assertion). https://nam11.safelinks.protection.outlook.com/?url=3Dhttps%3A%2F%2Fsourcew= are.org%2Fpipermail%2Fgdb-patches%2F2021-December%2F184362.html&data=3D= 04%7C01%7CBhuvanendra.KumarN%40amd.com%7C0e5d2c316a6743220b7908d9c3777633%7= C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C637755740127814129%7CUnknown%7C= TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0= %3D%7C3000&sdata=3D7FIqu1y2JDqVzKKGbOpSS0qOBfZQdofAmYvOYM%2BS2Wk%3D&= ;reserved=3D0 Have you looked into that? -- Joel= --_002_MW2PR12MB4684086CF817EB85946C9D17875A9MW2PR12MB4684namp_ Content-Type: application/octet-stream; name="0001-gdb-fortran-Fix-ptype-and-print-commands-for-namelis.patch" Content-Description: 0001-gdb-fortran-Fix-ptype-and-print-commands-for-namelis.patch Content-Disposition: attachment; filename="0001-gdb-fortran-Fix-ptype-and-print-commands-for-namelis.patch"; size=13701; creation-date="Thu, 20 Jan 2022 16:12:00 GMT"; modification-date="Thu, 20 Jan 2022 16:20:45 GMT" Content-Transfer-Encoding: base64 RnJvbSA2OGQzMTVkYjU0ODhiMTdiNmU0N2UwNTI5NDc3NjhhNGM4YTE5ZmE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUUyPTgwPTlDYmhrdW1hcm49RTI9ODA9OUQ/ PSA8Qmh1dmFuZW5kcmEuS3VtYXJOQGFtZC5jb20+CkRhdGU6IFR1ZSwgMTggSmFuIDIwMjIgMTg6 MTI6MzMgKzA1MzAKU3ViamVjdDogW1BBVENIXSBnZGIvZm9ydHJhbjogRml4IHB0eXBlIGFuZCBw cmludCBjb21tYW5kcyBmb3IgbmFtZWxpc3QKIHZhcmlhYmxlcy4KCkdmb3J0cmFuIHN1cHBvcnRz IG5hbWVsaXN0KGEgZm9ydHJhbiBmZWF0dXJlKTsgaXQgZW1pdHMKRFdfVEFHX25hbWVsaXN0IGFu ZCBEV19UQUdfbmFtZWxpc3RfaXRlbSBkaWVzLiBCdXQgZ2RiIGRvZXMgbm90CnByb2Nlc3MgdGhl c2UgZGllcyBhbmQgZG9lcyBub3Qgc3VwcG9ydCAncHJpbnQnIG9yICdwdHlwZScgY29tbWFuZHMK b24gbmFtZWxpc3QgdmFyaWFibGVzLiBBbiBhdHRlbXB0IHRvIHByaW50IG5hbWVsaXN0IHZhcmlh YmxlcwpyZXN1bHRzIGluIGdkYiBiYWlsaW5nIG91dCB3aXRoIHRoZSBlcnJvciBtZXNzYWdlIGFz IHNob3duIGJlbG93LgooZ2RiKSBwcmludCBubWwKTm8gc3ltYm9sICJubWwiIGluIGN1cnJlbnQg Y29udGV4dC4KClRoaXMgY29tbWl0IGlzIHRvIG1ha2UgdGhlIHByaW50IGFuZCBwdHlwZSBjb21t YW5kcyB3b3JrIGZvcgpuYW1lbGlzdCB2YXJpYWJsZXMgYW5kIGl0cyBpdGVtcy4gU2FtcGxlIG91 dHB1dCBvZiB0aGVzZQpjb21tYW5kcyBpcyBzaGFyZWQgYmVsb3csIHdpdGggZml4ZWQgZ2RiLgoo Z2RiKSBwdHlwZSBubWwKdHlwZSA9IFR5cGUgbm1sCiAgICBpbnRlZ2VyKGtpbmQ9NCkgOjogYQog ICAgaW50ZWdlcihraW5kPTQpIDo6IGIKRW5kIFR5cGUgbm1sCihnZGIpIHByaW50IG5tbAokMSA9 ICggYSA9IDEwLCBiID0gMjAgKQotLS0KIGdkYi9kd2FyZjIvcmVhZC5jICAgICAgICAgICAgICAg ICAgICAgIHwgNDQgKysrKysrKysrKysrKysrKysrKy0tLS0KIGdkYi9mLXR5cGVwcmludC5jICAg ICAgICAgICAgICAgICAgICAgIHwgIDYgKysrLQogZ2RiL2YtdmFscHJpbnQuYyAgICAgICAgICAg ICAgICAgICAgICAgfCAyNCArKysrKysrKysrKysrCiBnZGIvZ2RidHlwZXMuaCAgICAgICAgICAg ICAgICAgICAgICAgICB8IDEzICsrKysrKysKIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbmFt ZWxpc3QuZXhwIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGdkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbmFtZWxpc3QuZjkwIHwgMjcgKysrKysrKysrKysrKysKIGdkYi92YWx1ZS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIGluY2x1ZGUvZHdhcmYyLmRlZiAg ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KIDggZmlsZXMgY2hhbmdlZCwgMTU5IGluc2VydGlv bnMoKyksIDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9uYW1lbGlzdC5leHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL25hbWVsaXN0LmY5MAoKZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5j IGIvZ2RiL2R3YXJmMi9yZWFkLmMKaW5kZXggY2JkOWEzMDEyZWIuLjI2MjlhMGZmNDMyIDEwMDY0 NAotLS0gYS9nZGIvZHdhcmYyL3JlYWQuYworKysgYi9nZGIvZHdhcmYyL3JlYWQuYwpAQCAtOTcw NSw2ICs5NzA1LDcgQEAgcHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICAgICBjYXNlIERXX1RBR19pbnRlcmZhY2VfdHlwZToKICAgICBjYXNl IERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKICAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgorICAg IGNhc2UgRFdfVEFHX25hbWVsaXN0OgogICAgICAgcHJvY2Vzc19zdHJ1Y3R1cmVfc2NvcGUgKGRp ZSwgY3UpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToK QEAgLTE0NTYyLDggKzE0NTYzLDIxIEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9p bmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogCiAgIGZwID0gJm5ld19maWVsZC0+Zmll bGQ7CiAKLSAgaWYgKGRpZS0+dGFnID09IERXX1RBR19tZW1iZXIgJiYgISBkaWVfaXNfZGVjbGFy YXRpb24gKGRpZSwgY3UpKQotICAgIHsKKyAgaWYgKChkaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVy IHx8IGRpZS0+dGFnID09IERXX1RBR19uYW1lbGlzdF9pdGVtKQorICAgICAgJiYgISBkaWVfaXNf ZGVjbGFyYXRpb24gKGRpZSwgY3UpKQorICAgIHsKKyAgICAgIGlmIChkaWUtPnRhZyA9PSBEV19U QUdfbmFtZWxpc3RfaXRlbSkKKyAgICAgICAgeworICAgICAgICAgIC8qIFR5cGljYWxseSwgRFdf VEFHX25hbWVsaXN0X2l0ZW0gYXJlIHJlZmVyZW5jZXMgdG8gbmFtZWxpc3QgaXRlbXMuCisgICAg ICAgICAgICAgSWYgc28sIGZvbGxvdyB0aGF0IHJlZmVyZW5jZS4gICovCisgICAgICAgICAgc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cjEgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9uYW1lbGlzdF9p dGVtLCBjdSk7CisgICAgICAgICAgc3RydWN0IGRpZV9pbmZvICppdGVtX2RpZSA9IG51bGxwdHI7 CisgICAgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqaXRlbV9jdSA9IGN1OworICAgICAgICAgIGlm IChhdHRyMS0+Zm9ybV9pc19yZWYgKCkpCisgICAgICAgICAgICBpdGVtX2RpZSA9IGZvbGxvd19k aWVfcmVmIChkaWUsIGF0dHIxLCAmaXRlbV9jdSk7CisgICAgICAgICAgaWYgKGl0ZW1fZGllICE9 IG51bGxwdHIpCisgICAgICAgICAgICBkaWUgPSBpdGVtX2RpZTsKKyAgICAgICAgfQogICAgICAg LyogRGF0YSBtZW1iZXIgb3RoZXIgdGhhbiBhIEMrKyBzdGF0aWMgZGF0YSBtZW1iZXIuICAqLwog CiAgICAgICAvKiBHZXQgdHlwZSBvZiBmaWVsZC4gICovCkBAIC0xNTYyMSw2ICsxNTYzNSwxMCBA QCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICAgewogICAgICAgdHlwZS0+c2V0X2NvZGUgKFRZUEVfQ09ERV9VTklPTik7 CiAgICAgfQorICBlbHNlIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfbmFtZWxpc3QpCisgICAgewor ICAgICAgdHlwZS0+c2V0X2NvZGUgKFRZUEVfQ09ERV9OQU1FTElTVCk7CisgICAgfQogICBlbHNl CiAgICAgewogICAgICAgdHlwZS0+c2V0X2NvZGUgKFRZUEVfQ09ERV9TVFJVQ1QpOwpAQCAtMTU4 MjMsNyArMTU4NDEsOCBAQCBoYW5kbGVfc3RydWN0X21lbWJlcl9kaWUgKHN0cnVjdCBkaWVfaW5m byAqY2hpbGRfZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKIAkJCSAgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCiB7CiAgIGlmIChjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyCi0gICAgICB8fCBj aGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfdmFyaWFibGUpCisgICAgICB8fCBjaGlsZF9kaWUtPnRh ZyA9PSBEV19UQUdfdmFyaWFibGUKKyAgICAgIHx8IGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19u YW1lbGlzdF9pdGVtKQogICAgIHsKICAgICAgIC8qIE5PVEU6IGNhcmx0b24vMjAwMi0xMS0wNTog QSBDKysgc3RhdGljIGRhdGEgbWVtYmVyCiAJIHNob3VsZCBiZSBhIERXX1RBR19tZW1iZXIgdGhh dCBpcyBhIGRlY2xhcmF0aW9uLCBidXQKQEAgLTE1ODY3LDcgKzE1ODg2LDkgQEAgaGFuZGxlX3N0 cnVjdF9tZW1iZXJfZGllIChzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZSwgc3RydWN0IHR5cGUg KnR5cGUsCiB9CiAKIC8qIEZpbmlzaCBjcmVhdGluZyBhIHN0cnVjdHVyZSBvciB1bmlvbiB0eXBl LCBpbmNsdWRpbmcgZmlsbGluZyBpbgotICAgaXRzIG1lbWJlcnMgYW5kIGNyZWF0aW5nIGEgc3lt Ym9sIGZvciBpdC4gICovCisgICBpdHMgbWVtYmVycyBhbmQgY3JlYXRpbmcgYSBzeW1ib2wgZm9y IGl0LiBUaGlzIGZ1bmN0aW9uIGFsc28KKyAgIGhhbmRsZXMgRm9ydHJhbiBuYW1lbGlzdCB2YXJp YWJsZSwgaXRzIGl0ZW1zIG9yIG1lbWJlcnMgYW5kCisgICBjcmVhdGluZyBhIHN5bWJvbCBmb3Ig aXQuICAqLwogCiBzdGF0aWMgdm9pZAogcHJvY2Vzc19zdHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKQEAgLTIxOTcxLDggKzIxOTkyLDE3 IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UsCiAJY2FzZSBEV19UQUdfdW5pb25fdHlwZToKIAljYXNlIERX X1RBR19zZXRfdHlwZToKIAljYXNlIERXX1RBR19lbnVtZXJhdGlvbl90eXBlOgotCSAgU1lNQk9M X0FDTEFTU19JTkRFWCAoc3ltKSA9IExPQ19UWVBFREVGOwotCSAgU1lNQk9MX0RPTUFJTiAoc3lt KSA9IFNUUlVDVF9ET01BSU47CisJY2FzZSBEV19UQUdfbmFtZWxpc3Q6CisJICBpZiAoZGllLT50 YWcgPT0gRFdfVEFHX25hbWVsaXN0KQorICAgICAgICAgICAgeworCSAgICAgIFNZTUJPTF9BQ0xB U1NfSU5ERVggKHN5bSkgPSBMT0NfU1RBVElDOworCSAgICAgIFNZTUJPTF9ET01BSU4gKHN5bSkg PSBWQVJfRE9NQUlOOworICAgICAgICAgICAgfQorCSAgZWxzZQorICAgICAgICAgICAgeworCSAg ICAgIFNZTUJPTF9BQ0xBU1NfSU5ERVggKHN5bSkgPSBMT0NfVFlQRURFRjsKKwkgICAgICBTWU1C T0xfRE9NQUlOIChzeW0pID0gU1RSVUNUX0RPTUFJTjsKKyAgICAgICAgICAgIH0KIAogCSAgewog CSAgICAvKiBOT1RFOiBjYXJsdG9uLzIwMDMtMTEtMTA6IEMrKyBjbGFzcyBzeW1ib2xzIHNob3Vs ZG4ndApAQCAtMjI5MDksNiArMjI5MzksNyBAQCBkd2FyZjJfbmFtZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgJiYgZGllLT50YWcgIT0gRFdfVEFH X2NsYXNzX3R5cGUKICAgICAgICYmIGRpZS0+dGFnICE9IERXX1RBR19pbnRlcmZhY2VfdHlwZQog ICAgICAgJiYgZGllLT50YWcgIT0gRFdfVEFHX3N0cnVjdHVyZV90eXBlCisgICAgICAmJiBkaWUt PnRhZyAhPSBEV19UQUdfbmFtZWxpc3QKICAgICAgICYmIGRpZS0+dGFnICE9IERXX1RBR191bmlv bl90eXBlKQogICAgIHJldHVybiBOVUxMOwogCkBAIC0yMjkzMyw2ICsyMjk2NCw3IEBAIGR3YXJm Ml9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAg Y2FzZSBEV19UQUdfaW50ZXJmYWNlX3R5cGU6CiAgICAgY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5 cGU6CiAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlwZToKKyAgICBjYXNlIERXX1RBR19uYW1lbGlz dDoKICAgICAgIC8qIFNvbWUgR0NDIHZlcnNpb25zIGVtaXQgc3B1cmlvdXMgRFdfQVRfbmFtZSBh dHRyaWJ1dGVzIGZvciB1bm5hbWVkCiAJIHN0cnVjdHVyZXMgb3IgdW5pb25zLiAgVGhlc2Ugd2Vy ZSBvZiB0aGUgZm9ybSAiLl8lZCIgaW4gR0NDIDQuMSwKIAkgb3Igc2ltcGx5ICI8YW5vbnltb3Vz IHN0cnVjdD4iIG9yICI8YW5vbnltb3VzIHVuaW9uPiIgaW4gR0NDIDQuMwpkaWZmIC0tZ2l0IGEv Z2RiL2YtdHlwZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYwppbmRleCAxNzkxY2IyOTQ1MS4u NWIzNDYyMmRhY2IgMTAwNjQ0Ci0tLSBhL2dkYi9mLXR5cGVwcmludC5jCisrKyBiL2dkYi9mLXR5 cGVwcmludC5jCkBAIC0xMjEsNiArMTIxLDcgQEAgZl9sYW5ndWFnZTo6Zl90eXBlX3ByaW50X3Zh cnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgICBjYXNlIFRZUEVfQ09ERV9VTkRF RjoKICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6CiAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046 CisgICAgY2FzZSBUWVBFX0NPREVfTkFNRUxJU1Q6CiAgICAgY2FzZSBUWVBFX0NPREVfRU5VTToK ICAgICBjYXNlIFRZUEVfQ09ERV9JTlQ6CiAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgpAQCAtMjYx LDYgKzI2Miw3IEBAIGZfbGFuZ3VhZ2U6OmZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3Ry dWN0IHR5cGUgKnR5cGUsCiAgICAgY2FzZSBUWVBFX0NPREVfVU5ERUY6CiAgICAgY2FzZSBUWVBF X0NPREVfU1RSVUNUOgogICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgorICAgIGNhc2UgVFlQRV9D T0RFX05BTUVMSVNUOgogICAgIGNhc2UgVFlQRV9DT0RFX0VOVU06CiAgICAgY2FzZSBUWVBFX0NP REVfSU5UOgogICAgIGNhc2UgVFlQRV9DT0RFX0ZMVDoKQEAgLTMwNSw3ICszMDcsOCBAQCBmX2xh bmd1YWdlOjpmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCiAgICAgICBjb25zdCBjaGFyICpwcmVmaXggPSAiIjsKICAgICAgIGlmICh0 eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9VTklPTikKIAlwcmVmaXggPSAiVHlwZSwgQ19Vbmlv biA6OiAiOwotICAgICAgZWxzZSBpZiAodHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSVUNU KQorICAgICAgZWxzZSBpZiAodHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSVUNUCisgICAg ICAgICAgICAgICB8fCB0eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9OQU1FTElTVCkKIAlwcmVm aXggPSAiVHlwZSAiOwogICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJSpzJXMlcyIs IGxldmVsLCAiIiwgcHJlZml4LCB0eXBlLT5uYW1lICgpKTsKICAgICAgIHJldHVybjsKQEAgLTM5 MSw2ICszOTQsNyBAQCBmX2xhbmd1YWdlOjpmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAKICAgICBjYXNlIFRZUEVfQ09ERV9TVFJV Q1Q6CiAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CisgICAgY2FzZSBUWVBFX0NPREVfTkFNRUxJ U1Q6CiAgICAgICBpZiAodHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfVU5JT04pCiAJZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJSpzVHlwZSwgQ19VbmlvbiA6OiAiLCBsZXZlbCwgIiIpOwog ICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50 LmMKaW5kZXggMjdkOWE3MzA5NzguLjQ4MDQ0ZDFhYjFjIDEwMDY0NAotLS0gYS9nZGIvZi12YWxw cmludC5jCisrKyBiL2dkYi9mLXZhbHByaW50LmMKQEAgLTI5NSw4ICsyOTUsMjIgQEAgZl9sYW5n dWFnZTo6dmFsdWVfcHJpbnRfaW5uZXIgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAogCiAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgIGNhc2UgVFlQRV9D T0RFX1VOSU9OOgorICAgIGNhc2UgVFlQRV9DT0RFX05BTUVMSVNUOgogICAgICAgLyogU3RhcnRp bmcgZnJvbSB0aGUgRm9ydHJhbiA5MCBzdGFuZGFyZCwgRm9ydHJhbiBzdXBwb3J0cyBkZXJpdmVk CiAJIHR5cGVzLiAgKi8KKyAgICAgIC8qIENhbGN1bGF0ZSBhbmQgc2V0IHRoZSB0b3RhbCBzaXpl IG9yIGxlbmd0aCBvZiB0aGUgbmFtZWxpc3QgdmFyaWFibGUKKyAgICAgICAgIHR5cGUsIHdoaWNo IGlzIHN1bW1hdGlvbiBvZiBzaXplIG9mIGVhY2ggaXRlbSBpbiB0aGUgbmFtZWxpc3QKKyAgICAg ICAgIHZhcmlhYmxlLiBQbGVhc2Ugbm90ZSB0aGUgbmFtZWxpc3QgaXRlbXMgYXJlIG5vdCBhbGxv Y2F0ZWQgaW4KKyAgICAgICAgIGNvbnRpbnVvdXMgbWVtb3J5IHVubGlrZSBvdGhlciB0eXBlcywg aGVuY2UgZm9yIGVhY2ggbmFtZWxpc3QgaXRlbQorICAgICAgICAgc3ltYm9sIHRhYmxlIGxvb2t1 cCBpcyBkb25lIGJlZm9yZSBwcmludGluZyBpdHMgdmFsdWUuICAqLworICAgICAgaWYgKHR5cGUt PmNvZGUgKCkgPT0gVFlQRV9DT0RFX05BTUVMSVNUKQorICAgICAgICB7CisgICAgICAgICAgdW5z aWduZWQgaW50IHRvdGFsX3NpemUgPSAwOworICAgICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRl eCA8IHR5cGUtPm51bV9maWVsZHMgKCk7IGluZGV4KyspCisgICAgICAgICAgICB0b3RhbF9zaXpl ICs9IFRZUEVfTEVOR1RIICh0eXBlLT5maWVsZCAoaW5kZXgpLnR5cGUgKCkpOworICAgICAgICAg IFRZUEVfTEVOR1RIICh0eXBlKSA9IHRvdGFsX3NpemU7CisgICAgICAgIH0KKwogICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRl eCA8IHR5cGUtPm51bV9maWVsZHMgKCk7IGluZGV4KyspCiAJewpAQCAtMzIwLDYgKzMzNCwxNiBA QCBmX2xhbmd1YWdlOjp2YWx1ZV9wcmludF9pbm5lciAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCiAJCSAgZnB1dHNfZmlsdGVyZWQgKCIgPSAiLCBzdHJlYW0pOwog CQl9CiAKKwkgICAgICAvKiBXaGlsZSBwcmludGluZyBuYW1lbGlzdCBpdGVtcywgZmV0Y2ggdGhl IGFwcHJvcHJpYXRlIHZhbHVlCisJICAgICAgICAgZmllbGQgYmVmb3JlIHByaW50aW5nIGl0cyB2 YWx1ZS4gICovCisJICAgICAgaWYgKHR5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX05BTUVMSVNU KQorCSAgICAgICAgeworCSAgICAgICAgICBzdHJ1Y3QgYmxvY2tfc3ltYm9sIHN5bW5pID0gbG9v a3VwX3N5bWJvbAorCSAgICAgICAgICAgIChmaWVsZF9uYW1lLCBnZXRfc2VsZWN0ZWRfYmxvY2sg KDApLCBWQVJfRE9NQUlOLCBudWxscHRyKTsKKwkgICAgICAgICAgaWYgKHN5bW5pLnN5bWJvbCAh PSBudWxscHRyKQorCSAgICAgICAgICAgIGZpZWxkID0gdmFsdWVfb2ZfdmFyaWFibGUgKHN5bW5p LnN5bWJvbCwgc3ltbmkuYmxvY2spOworCSAgICAgICAgfQorCiAJICAgICAgY29tbW9uX3ZhbF9w cmludCAoZmllbGQsIHN0cmVhbSwgcmVjdXJzZSArIDEsCiAJCQkJb3B0aW9ucywgY3VycmVudF9s YW5ndWFnZSk7CiAKZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgK aW5kZXggZGM1NzVjNDI5OTYuLjhkYTM2MmJkZGVjIDEwMDY0NAotLS0gYS9nZGIvZ2RidHlwZXMu aAorKysgYi9nZGIvZ2RidHlwZXMuaApAQCAtMTk1LDYgKzE5NSwxOSBAQCBlbnVtIHR5cGVfY29k ZQogCiAgICAgLyogKiBGaXhlZCBQb2ludCB0eXBlLiAgKi8KICAgICBUWVBFX0NPREVfRklYRURf UE9JTlQsCisKKyAgICAvKiAqIEZvcnRyYW4gbmFtZWxpc3QgaXMgYSBncm91cCBvZiB2YXJpYWJs ZXMgb3IgYXJyYXlzIHRoYXQgY2FuIGJlCisgICAgICAgcmVhZCBvciB3cml0dGVuLgorCisgICAg ICAgTmFtZWxpc3Qgc3ludGF4OiBOQU1FTElTVCAvIGdyb3VwbmFtZSAvIG5hbWVsaXN0X2l0ZW1z IC4uLgorICAgICAgIE5BTUVMSVNUIHN0YXRlbWVudCBhc3NpZ24gYSBncm91cCBuYW1lIHRvIGEg Y29sbGVjdGlvbiBvZiB2YXJpYWJsZXMKKyAgICAgICBjYWxsZWQgYXMgbmFtZWxpc3QgaXRlbXMu IFRoZSBuYW1lbGlzdCBpdGVtcyBjYW4gYmUgb2YgYW55IGRhdGEgdHlwZQorICAgICAgIGFuZCBj YW4gYmUgdmFyaWFibGVzIG9yIGFycmF5cy4KKworICAgICAgIENvbXBpbGVyIGVtaXQgRFdfVEFH X25hbWVsaXN0IGZvciBncm91cCBuYW1lIGFuZCBEV19UQUdfbmFtZWxpc3RfaXRlbQorICAgICAg IGZvciBlYWNoIG9mIHRoZSBuYW1lbGlzdCBpdGVtcy4gR0RCIHByb2Nlc3MgdGhlc2UgbmFtZWxp c3QgZGllcworICAgICAgIGFuZCBwcmludCBuYW1lbGlzdCB2YXJpYWJsZXMgZHVyaW5nIHByaW50 IGFuZCBwdHlwZSBjb21tYW5kcy4gICovCisgICAgVFlQRV9DT0RFX05BTUVMSVNULAogICB9Owog CiAvKiAqIFNvbWUgYml0cyBmb3IgdGhlIHR5cGUncyBpbnN0YW5jZV9mbGFncyB3b3JkLiAgU2Vl IHRoZSBtYWNyb3MKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbmFtZWxp c3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9uYW1lbGlzdC5leHAKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJlODMyNWMwYjFkCi0tLSAvZGV2L251bGwK KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9uYW1lbGlzdC5leHAKQEAgLTAsMCArMSw1 MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0 ZXN0c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBmb3IgZm9ydHJhbgorIyBuYW1lbGlzdC4KKwor aWYgeyBbc2tpcF9mb3J0cmFuX3Rlc3RzXSB9IHsgcmV0dXJuIC0xIH0KKworc3RhbmRhcmRfdGVz dGZpbGUgLmY5MAorbG9hZF9saWIgImZvcnRyYW4uZXhwIgorCitpZiB7W3ByZXBhcmVfZm9yX3Rl c3RpbmcgImZhaWxlZCB0byBwcmVwYXJlIiAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGY5MH1d fSB7CisgICAgcmV0dXJuIC0xCit9CisKK2lmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsK KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBtYWluIgorICAgIGNvbnRpbnVlCit9CisKKyMg RGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciBiZWluZyB1c2VkLCB0aGUgdHlwZSBuYW1lcyBjYW4g YmUgcHJpbnRlZAorIyBkaWZmZXJlbnRseS4KK3NldCBpbnQgW2ZvcnRyYW5faW50NF0KKworZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgbmFtZWxpc3QiXQorZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkRpc3BsYXkgbmFtZWxpc3QiCisKK2lmIHtbdGVzdF9j b21waWxlcl9pbmZvIHtnY2MtKn1dfSB7CisgICAgZ2RiX3Rlc3QgInB0eXBlIG5tbCIgXAorICAg ICAgICAidHlwZSA9IFR5cGUgbm1sXHJcbiAqJGludCA6OiBhXHJcbiAqJGludCA6OiBiXHJcbiAq RW5kIFR5cGUgbm1sIgorICAgIGdkYl90ZXN0ICJwcmludCBubWwiIFwKKyAgICAgICAgIlxcJFxb MC05XF0rID0gXFwoIGEgPSAxMCwgYiA9IDIwIFxcKSIKK30gZWxzZSB7CisgICAgZ2RiX3Rlc3Qg InB0eXBlIG5tbCIgXAorICAgICAgICAiTm8gc3ltYm9sIFwibm1sXCIgaW4gY3VycmVudCBjb250 ZXh0XFwuIgorICAgIGdkYl90ZXN0ICJwcmludCBubWwiIFwKKyAgICAgICAgIk5vIHN5bWJvbCBc Im5tbFwiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKK30KZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbmFtZWxpc3QuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9u YW1lbGlzdC5mOTAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZiMzY2 OTBkNzY1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9uYW1l bGlzdC5mOTAKQEAgLTAsMCArMSwyNyBAQAorISBDb3B5cmlnaHQgKEMpIDIwMjEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCishCishIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CishIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cish IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCishIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCishCishIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCishIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCishCishIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCishIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIQorISBUaGlzIGZp bGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIG5hbWVsaXN0LmV4cC4KKworcHJvZ3Jh bSBtYWluCisKKyAgaW50ZWdlciA6OiBhLCBiCisgIG5hbWVsaXN0IC9ubWwvIGEsIGIKKworICBh ID0gMTAKKyAgYiA9IDIwCisgIFdyaXRlKCosbm1sKSAhIERpc3BsYXkgbmFtZWxpc3QKKworZW5k IHByb2dyYW0gbWFpbgpkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIvdmFsdWUuYwppbmRl eCBiYjJhZGFlMGE1MS4uMTZiZTAyZmIxOTkgMTAwNjQ0Ci0tLSBhL2dkYi92YWx1ZS5jCisrKyBi L2dkYi92YWx1ZS5jCkBAIC0zOTAxLDcgKzM5MDEsNyBAQCB2YWx1ZV9mZXRjaF9sYXp5X21lbW9y eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgIENPUkVfQUREUiBhZGRyID0gdmFsdWVfYWRkcmVzcyAo dmFsKTsKICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9lbmNsb3Np bmdfdHlwZSAodmFsKSk7CiAKLSAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSkKKyAgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSAmJiAodHlwZS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfTkFNRUxJU1QpKQog ICAgICAgcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCiAJCQkg YWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAodmFsKSwKIAkJCSB0eXBlX2xlbmd0aF91bml0 cyAodHlwZSkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kd2FyZjIuZGVmIGIvaW5jbHVkZS9kd2Fy ZjIuZGVmCmluZGV4IDFhZTZlMWRmMjk4Li42YjhiZTFmNmExNiAxMDA2NDQKLS0tIGEvaW5jbHVk ZS9kd2FyZjIuZGVmCisrKyBiL2luY2x1ZGUvZHdhcmYyLmRlZgpAQCAtMjg5LDcgKzI4OSw3IEBA IERXX0FUIChEV19BVF9mcmFtZV9iYXNlLCAweDQwKQogRFdfQVQgKERXX0FUX2ZyaWVuZCwgMHg0 MSkKIERXX0FUIChEV19BVF9pZGVudGlmaWVyX2Nhc2UsIDB4NDIpCiBEV19BVCAoRFdfQVRfbWFj cm9faW5mbywgMHg0MykKLURXX0FUIChEV19BVF9uYW1lbGlzdF9pdGVtcywgMHg0NCkKK0RXX0FU IChEV19BVF9uYW1lbGlzdF9pdGVtLCAweDQ0KQogRFdfQVQgKERXX0FUX3ByaW9yaXR5LCAweDQ1 KQogRFdfQVQgKERXX0FUX3NlZ21lbnQsIDB4NDYpCiBEV19BVCAoRFdfQVRfc3BlY2lmaWNhdGlv biwgMHg0NykKLS0gCjIuMTcuMQoK --_002_MW2PR12MB4684086CF817EB85946C9D17875A9MW2PR12MB4684namp_--