From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2065.outbound.protection.outlook.com [40.107.94.65]) by sourceware.org (Postfix) with ESMTPS id E1585386C583 for ; Mon, 27 Jun 2022 20:56:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E1585386C583 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TWoayL4EH3sDlNGzW80nM1Jd9V5QsS9YMYIdi/dPk9DBSMUHdUmXwJtPHV41u6Qc+slMvB4Kn4I5jVg/Uo8r4eh99R3Ck7GLIogLeNhAUX9FpW8P3z9zQkQzi7PDd+rZ6rkJHZARivsnl9qR6Hen38Em28Ziz/MUK5NLogRFT1SZeeRiiUFxdx3CM38ZmKTAzbQE9gKC5/7Gz829w/vqCv31Yk8Qs+a84lQVvGSmho+C2Ti8KxseABHrnLqWWFAQNL/SfH9fjsUM/uOEo+lSmH4MZCuDtyZw2xTvFO38VorvFW62iRQwswwIg7ryNC9uonzvdIuZn+SQqN7C6M9tgA== 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=1krGSwKudazmmQoqWweG+3uZijkIi3aFOgtPlYLQYPw=; b=nWY6n6hnOPuQJHkYMLVfKSxRxReHI9/AraiI2kz62v8UqSaB88EkaBjQe6SryxktIgX9YkUa084X8qNgVew/cxKyNVYL/L6iZp5UAcMofB2wIN6fiiuf+MZfwhtIhfdUgR87LrpLLsfMxT7tdJAc+2reXwhw5B1+v7PLwMqonErQfRT8MXd9OrZs3E6B6yPCjUsBnvDa9edoeVUv9jOHHWU9XXSLOA9a4JsQIy83ujwjbyCxvmeRgdBL42p0FbIIRwEW9lP13JtqTFBH/SlO4xd1LhsANZnDJS1QwEub92XZiHMwvlJdnd7iHz/G3VysBXrRJBCMOOFuj+tVMSCfgQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from MW2PR12MB4684.namprd12.prod.outlook.com (2603:10b6:302:13::29) by SA0PR12MB4414.namprd12.prod.outlook.com (2603:10b6:806:9a::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5373.15; Mon, 27 Jun 2022 20:56:44 +0000 Received: from MW2PR12MB4684.namprd12.prod.outlook.com ([fe80::55e9:d9fc:f8f8:b022]) by MW2PR12MB4684.namprd12.prod.outlook.com ([fe80::55e9:d9fc:f8f8:b022%7]) with mapi id 15.20.5373.018; Mon, 27 Jun 2022 20:56:43 +0000 From: "Kumar N, Bhuvanendra" To: "binutils@sourceware.org" CC: "George, Jini Susan" , "Natarajan, Kavitha" Subject: [PATCH] Fix range lists issues (dwarf-5) Thread-Topic: [PATCH] Fix range lists issues (dwarf-5) Thread-Index: AdiKZTG44Tsv22kHR2qsFGUX0Eq+lw== Date: Mon, 27 Jun 2022 20:56:43 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Enabled=true; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SetDate=2022-06-27T20:32:20Z; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Method=Privileged; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_Name=Public-AIP 2.0; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_SiteId=3dd8961f-e488-4e60-8e11-a82d994e183d; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ActionId=f31bc57c-565b-4ac0-94ca-4f914c78bfe2; MSIP_Label_d4243a53-6221-4f75-8154-e4b33a5707a1_ContentBits=1 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_enabled: true msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_setdate: 2022-06-27T20:56:38Z msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_method: Privileged msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_name: Public-AIP 2.0 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_siteid: 3dd8961f-e488-4e60-8e11-a82d994e183d msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_actionid: 432b0564-3976-4183-8b68-3a8353251a36 msip_label_d4243a53-6221-4f75-8154-e4b33a5707a1_contentbits: 0 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: aa7f3526-5a49-4798-0467-08da587f8ac6 x-ms-traffictypediagnostic: SA0PR12MB4414:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Y0b/odlBGHHJcdB9wC5zgjW6JjIfAUnudmbyFI2CBod48nDEbZ8IO4WfO2cBgYiqJDrdGhJwWB6JWXSFVIbHUFCdzf/IzZdv+d8zSk8S6JXDL+KbkBNGMMoH+q9UPw86i3nlqFLCrnPIgi6tMmDRH87jii3iOS/ZxZNwQ30+QgpWfRqW6ZOs/gaAxA82Nchvvv+KiGSnZAUPur5K+zRqNujbONxT4YKo8nDz2/UwV5n9Bh2ZVNOck04UaVd4EzOGYCO+sQzspYDUBQBoRgXWH6FmSr8KDv1SQ/YoWw9BTtdNFIHoAVW7dooZMaa4pLPXKXnRvlx4UXFfU69kAkjMh9jDAxrgo/ESvxeaDArmP6Bt/8rss+hKlvQnAGK9XsFvDebtwu65+GWh+f7GD7CDodqVqdoHTMMmWzSJ/NZDPDIh/nX6Jxg1AXZDm3uFLxPkv5rrdftCZcy7L9G/3aB++N69a18EzaHEJwGre0Gmk0vVaRcP/2ie77hbsve6zwpInSso/01IrK2F9fucaFsdZJTB4fBchCd4FUEsNetF1c7sf4P7a8c8QvL5f/EevuhTtk573TbkCovAc3unlJo1S0zXf0KktIiEwXxTwte9z3o5ip1VeJH5lwOgQkEauNf3hVO64AZ2mHdw1njhKEz30W0sdvuO3Y92QUQTm0olE3i/Q68qDs+nE8FeNF7oh7RTBaOjBkGwBKpQ2N2IspOn2cNAHKnC8ZeH5LiqcSExGXzL0mxUup3dyQLi7L/4L87QLXz0f3CYDzMNyTMQE4c9fKCEfHp2oOnWre1ai3NvhkM= 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:(13230016)(4636009)(39860400002)(136003)(366004)(376002)(396003)(346002)(41300700001)(478600001)(53546011)(55016003)(6506007)(186003)(30864003)(26005)(86362001)(122000001)(9686003)(7696005)(5660300002)(33656002)(55236004)(6916009)(66556008)(71200400001)(64756008)(316002)(2906002)(4326008)(99936003)(83380400001)(8936002)(66476007)(8676002)(38100700002)(76116006)(66946007)(52536014)(38070700005)(66446008)(54906003)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?Mb0LUE5nA57QvTl931++0b0DIMXRQbHn2zlKFX8gRStOJEHO1f9i7cbgg9lL?= =?us-ascii?Q?6Li9CbM5SsZTwELyC2alW4jfMuJIwhQmiMoYEhZAIqkUFF2iS37Hibrdx/X5?= =?us-ascii?Q?gWU2gPvDBJEyVZp9tG8mNZVHGaiTqs205q1Q2Xn4dgRlOjIraOap/5ujSDhN?= =?us-ascii?Q?aRGOCoYRiVN3ZFThTTjdh27mqfzx0IrJiVCDLpfFq5XL8gAFCh97XH+N8m+K?= =?us-ascii?Q?1YJTybvGjcNvPPB/2Tgur5AZux3gk0WAeWyHo5WTJg3qOigA4R74jIw7ba/+?= =?us-ascii?Q?VOcVMrvGoLHxPk1NM79k8be7ilsi27R39Z+oTXQjbQbUO+MCoObMIVm9O5ru?= =?us-ascii?Q?6XJ7PI0QTo3O9HNxRm4NMps+ouPaokC2jWzXCIB6aUJ+cW1HQRUbh2Mk1N0J?= =?us-ascii?Q?JB3Eod/L9fqiCVunm4I8aOEqQQPQAyWZEySVgGAUDu3mE/jJ4l9mxh4mP6ka?= =?us-ascii?Q?84emdZ5LrKPeH+lySGJ6J0MJ/DrFEJSa8Z3u4GC4pVO7jv4Kvy/iGK8gaufB?= =?us-ascii?Q?lVEbC+QjrmkyVedsY2yr3oa7zF+auxk7Em0JVVBlafEKV4qLL0/b9fIeFZd+?= =?us-ascii?Q?U+n7AIOdp+G47Rk+ZMzU3FAxHn7PpJ4U3JWE/DybtPoiIDLtxb4zLqS3FT1I?= =?us-ascii?Q?EAY2CaVkQibI9Lc9Z9eZGSD3dlRkh+6Iacn+OCruStcKUT6xwq8U4yDVqR8L?= =?us-ascii?Q?HMIo6JboaF374cprRqztIA/1X5Mvgo5w00R1GHrRY8yqH+m8O2JqAj4p8YSc?= =?us-ascii?Q?ARtJEVWlLncKySDdf+fZAt0TSM2BX/Miwaoou8LyBRmRWRSQg+0Zbk6JAssX?= =?us-ascii?Q?tMQVwnE0o0D6B2ThL8Qc4buyHhz1peAKCoYzueG+LhAOTrdbQf+EPmmmb9XR?= =?us-ascii?Q?4nLBiYmR8ocn8hN5GcjEr6t3E02C5paMwdKj6qVGAOL1uRo7aMBzQ+JatxT0?= =?us-ascii?Q?W+rqGZ/EB7MgeefyDGeSAfWdw1L8v/EJbINSuS36hj+tNPtL3r9Ckca3/hQN?= =?us-ascii?Q?xL26lspcd3tNp6VfQLLflwqvx/ATvgJmLRPgEg0tCPXNrYdBTmRTh/Jd1Erv?= =?us-ascii?Q?GYQVEHLcI5umUlZBRxoEEx2dN1DBD89o2a6CbOyAkq769b7+SXFasmgfhTPE?= =?us-ascii?Q?lVH1OG9vVcQJevynrRgIUMxoRffpiO2hIyjkR11HU/iaNFvVArtETjbdnYgG?= =?us-ascii?Q?GjcuFTzdxM5CeznBxYUe6Q7ZE8O0wxO/N827oBvLP+Yh33o+jMg/E6Z5rK0b?= =?us-ascii?Q?QV4aBz3pe+yWqxJqJCmPXBzy6HhviZKnrSr0/xVtVA5HFjdvJa6dP6z8kAXY?= =?us-ascii?Q?LdYohnvZ9nC8CLf+LXfQBeiSFTm2AjzrjnvnWMuZ2YDeHksO22GQ9C+Axk4m?= =?us-ascii?Q?2SwoORmnZpI74joSk6L0QVCnTgVnL5PdHISPhx6mN+jSm2x9f6xIDsswuDzy?= =?us-ascii?Q?R72vWxdMCzsOngel76YJxTMBg9zPKHC79fFEhBJz6FA1+q6lHuRxYmZ+65PY?= =?us-ascii?Q?O6/kdnYtz0ZtKJ6bPhzVzBjvTMnmvDnqhy23B9kRmLvgd0yXhtrnxlc4AV+a?= =?us-ascii?Q?Uccq7C2uJakFVtkTyjc=3D?= Content-Type: multipart/mixed; boundary="_004_MW2PR12MB4684D593C652098CF67EA97687B99MW2PR12MB4684namp_" 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: aa7f3526-5a49-4798-0467-08da587f8ac6 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jun 2022 20:56:43.8357 (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: zeF4EeLCWK2fU/fbz5QEwlX4M6mvmtlY0fQSoA3fZzMC4UoWmf7T6ZA8TmWzH2V9tEWSuD2lILAaUqhapn0pZA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4414 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 27 Jun 2022 20:56:54 -0000 --_004_MW2PR12MB4684D593C652098CF67EA97687B99MW2PR12MB4684namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [Public] Hi, As part of few dwarf-5 fixes planned to be sent one by one, I am requesting= review for the next patch in this series. Patch is inlined below, also att= ached here. For GCC and/or clang compiled objects with dwarf-5, following issues relate= d to range lists dump are fixed. 1. range lists offset address dump under DW_AT_ranges is corrected, wher= e DW_FORM_rnglistx form is used. While dumping the range lists offset, the = address dumped is wrong where it was referring to .debug_addr instead of .d= ebug_rnglists (fix applicable to clang only). Test scenario: Before fix: <3bdf> DW_AT_ranges : (addr_index: 0x0): 9008 After fix: <3bdf> DW_AT_ranges : (addr_index: 0x0): 2c Contents of the .debug_rnglists section: . . . Offsets starting at 0xc: [ 0] 0x2c . . . 1. .debug_rnglists section dump for multiple CU is fixed. For each CU, r= ange lists header followed by range lists is dumped now (fix applicable to = both GCC and clang). Before fix (for GCC compiled object) : Contents of the .debug_rnglists section: Length: 0x1d DWARF version: 5 Address size: 8 Segment size: 0 Offset entries: 0 Offset Begin End 0000000c 00000000004006ff 000000000040073e 00000016 00000000004009b2 00000000004009b9 00000020 0000002d 000000000040073e 000000000040077d 00000037 00000000004009b9 00000000004009c0 00000041 0000004e 000000000040077d 00000000004007bc 00000058 00000000004009c0 00000000004009c7 00000062 . . . After fix (for GCC compiled object) : Contents of the .debug_rnglists section: Length: 0x1d DWARF version: 5 Address size: 8 Segment size: 0 Offset entries: 0 Offset Begin End 0000000c 00000000004006ff 000000000040073e 00000016 00000000004009b2 00000000004009b9 00000020 Length: 0x1d DWARF version: 5 Address size: 8 Segment size: 0 Offset entries: 0 Offset Begin End 0000002d 000000000040073e 000000000040077d 00000037 00000000004009b9 00000000004009c0 00000041 Length: 0x1d DWARF version: 5 Address size: 8 Segment size: 0 Offset entries: 0 Offset Begin End 0000004e 000000000040077d 00000000004007bc 00000058 00000000004009c0 00000000004009c7 00000062 . . . PATCH inlined: >From 0ffceff80252797a8d7619b19a3b1418954dac4b Mon Sep 17 00:00:00 2001 From: =3D?UTF-8?q?=3DE2=3D80=3D9Cbhkumarn=3DE2=3D80=3D9D?=3D Bhuvanendra.Ku= marN@amd.com Date: Tue, 28 Jun 2022 00:50:14 +0530 Subject: [PATCH] [PATCH] Fix range lists issues (dwarf-5) For GCC and/or clang compiled objects with dwarf-5, following issues related to range lists dump are fixed. 1. range lists offset address dump under DW_AT_ranges is corrected, where DW_FORM_rnglistx is used. While dumping the range lists offset, the address dumped is wrong where it was referring to .debug_addr instead of .debug_rnglists 2. .debug_rnglists section dump for multiple CU is fixed. For each CU, range lists header followed by range lists is dumped now. * dwarf.c (fetch_indexed_value): Use base_address to access the section offset for rnglists also. (read_and_display_attr_value): Fix support for DW_FORM_rnglistx form. Read attribute DW_AT_rnglists_base which can come before or after DW_AT_ranges attribute. Update range_lists array for forms DW_FORM_rnglistx(clang) or DW_FORM_sec_offset(GCC). (display_debug_rnglists_list): Add new parameter called start_header and pass on the starting address of the next CU's range lists header. (display_debug_rnglists_header): New function to dump range lists header for each CU. (display_debug_ranges): Dump the range lists header before printing the range list entries for each CU. Capture the starting address of the next CU's range lists header. --- binutils/dwarf.c | 132 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 124 insertions(+), 8 deletions(-) diff --git a/binutils/dwarf.c b/binutils/dwarf.c index bcabb61b871..2dab3ee3d96 100644 --- a/binutils/dwarf.c +++ b/binutils/dwarf.c @@ -811,7 +811,7 @@ fetch_indexed_value (dwarf_vma idx, /* Offsets are biased by the size of the section header or base address. */ - if (sec_enum =3D=3D loclists) + if ((sec_enum =3D=3D loclists) || (sec_enum =3D=3D rnglists)) offset +=3D base_address; else offset +=3D bias; @@ -877,6 +877,7 @@ typedef struct abbrev_map static abbrev_map * cu_abbrev_map =3D NULL; static unsigned long num_abbrev_map_entries =3D 0; static unsigned long next_free_abbrev_map_entry =3D 0; +static abbrev_attr *ranges_attr =3D NULL; #define INITIAL_NUM_ABBREV_MAP_ENTRIES 8 #define ABBREV_MAP_ENTRIES_INCREMENT 8 @@ -2407,6 +2408,7 @@ read_and_display_attr_value (unsigned long = attribute, dwarf_vma uvalue_hi =3D 0; unsigned char *block_start =3D NULL; unsigned char *orig_data =3D data; + dwarf_vma uvalue_rnglists_base; if (data > end || (data =3D=3D end && form !=3D DW_FORM_flag_present)) { @@ -2762,6 +2764,10 @@ read_and_display_attr_value (unsigned long = attribute, printf (_("%c(index: 0x%s): %s"), delimiter, dwarf_vmatoa ("x", uvalue), dwarf_vmatoa ("x", debug_info_p->loc_offsets [uvalue])); + else if (form =3D=3D DW_FORM_rnglistx) + printf (_("%c(index: 0x%s): %s"), delimiter, + dwarf_vmatoa ("x", uvalue), + dwarf_vmatoa ("x", debug_info_p->range_lists [uvalue]))= ; else printf (_("%c(index: 0x%s): %s"), delimiter, dwarf_vmatoa ("x", uvalue), @@ -2771,6 +2777,10 @@ read_and_display_attr_value (unsigned long = attribute, printf (_("%c(addr_index: 0x%s): %s"), delimiter, dwarf_vmatoa ("x", uvalue), dwarf_vmatoa ("x", debug_info_p->loc_offsets [uvalue])); + else if (form =3D=3D DW_FORM_rnglistx) + printf (_("%c(addr_index: 0x%s): %s"), delimiter, + dwarf_vmatoa ("x", uvalue), + dwarf_vmatoa ("x", debug_info_p->range_lists [uvalue]))= ; else printf (_("%c(addr_index: 0x%s): %s"), delimiter, dwarf_vmatoa ("x", uvalue), @@ -2909,6 +2919,24 @@ read_and_display_attr_value (unsigned long = attribute, break; case DW_AT_ranges: + uvalue_rnglists_base =3D 0; + /* DW_AT_rnglists_base can appear before or after DW_AT_ranges attr= ibute. + If its found before, DW_AT_rnglists_base is used directly, + otherwise its looked ahead from DW_AT_ranges and read. */ + if (!debug_info_p->rnglists_base) { + if (ranges_attr && ranges_attr->next && ranges_attr->next->next &= & + (ranges_attr->next->next->attribute =3D=3D DW_AT_rnglists_bas= e)) { + unsigned char *data_dupl =3D data; + dwarf_vma uvalue_skip; + data_dupl =3D skip_attr_bytes (ranges_attr->next->form, data_du= pl, end, + pointer_size, offset_size, + dwarf_version, &uvalue_skip); + SAFE_BYTE_GET_AND_INC (uvalue_rnglists_base, data_dupl, offset_= size, end); + } + } + else + uvalue_rnglists_base =3D debug_info_p->rnglists_base; + if ((dwarf_version < 4 && (form =3D=3D DW_FORM_data4 || form =3D=3D DW_FORM_data8)) || form =3D=3D DW_FORM_sec_offset @@ -2917,6 +2945,7 @@ read_and_display_attr_value (unsigned long = attribute, /* Process range list. */ unsigned int lmax =3D debug_info_p->max_range_lists; unsigned int num =3D debug_info_p->num_range_lists; + dwarf_vma uvalue_index; if (lmax =3D=3D 0 || num >=3D lmax) { @@ -2927,10 +2956,15 @@ read_and_display_attr_value (unsigned long = attribute, debug_info_p->max_range_lists =3D lmax; } + uvalue_index =3D uvalue; if (form =3D=3D DW_FORM_rnglistx) - uvalue =3D fetch_indexed_value (uvalue, rnglists, 0); + uvalue =3D fetch_indexed_value (uvalue, rnglists, uvalue_rnglist= s_base); - debug_info_p->range_lists [num] =3D uvalue; + uvalue +=3D uvalue_rnglists_base; + if (form =3D=3D DW_FORM_rnglistx) + debug_info_p->range_lists [uvalue_index] =3D uvalue; + else + debug_info_p->range_lists [num] =3D uvalue; debug_info_p->num_range_lists++; } break; @@ -4043,6 +4077,8 @@ process_debug_info (struct dwarf_section * section, if (! do_loc && do_printing) /* Show the offset from where the tag was extracted. */ printf (" <%lx>", (unsigned long)(tags - section_begin)); + if (attr->attribute =3D=3D DW_AT_ranges) + ranges_attr =3D attr; tags =3D read_and_display_attr (attr->attribute, attr->form, attr->implicit_const, @@ -7947,7 +7983,8 @@ display_debug_rnglists_list (unsigned char * start, unsigned int pointer_size, dwarf_vma offset, dwarf_vma base_address, - unsigned int offset_size) + unsigned int offset_size, + unsigned char ** start_header) { unsigned char *next =3D start; unsigned int debug_addr_section_hdr_len; @@ -8029,8 +8066,11 @@ display_debug_rnglists_list (unsigned char * start, break; } - if (rlet =3D=3D DW_RLE_end_of_list) + if (rlet =3D=3D DW_RLE_end_of_list) { + /* Pass on the starting address of the next CU's range lists header. = */ + *start_header =3D start; break; + } if (rlet =3D=3D DW_RLE_base_address || rlet =3D=3D DW_RLE_base_addre= ssx) continue; @@ -8053,6 +8093,69 @@ display_debug_rnglists_list (unsigned char * start, } } +static void display_debug_rnglists_header (unsigned char * start, + unsigned char * finish) +{ + dwarf_vma initial_length; + unsigned char segment_selector_size; + unsigned int offset_size, offset_entry_count, i; + unsigned short version; + unsigned char address_size =3D 0; + + /* Get and check the length of the block. */ + SAFE_BYTE_GET_AND_INC (initial_length, start, 4, finish); + + if (initial_length =3D=3D 0xffffffff) + { + /* This section is 64-bit DWARF 3. */ + SAFE_BYTE_GET_AND_INC (initial_length, start, 8, finish); + offset_size =3D 8; + } + else + offset_size =3D 4; + + /* Get the other fields in the header. */ + SAFE_BYTE_GET_AND_INC (version, start, 2, finish); + SAFE_BYTE_GET_AND_INC (address_size, start, 1, finish); + SAFE_BYTE_GET_AND_INC (segment_selector_size, start, 1, finish); + SAFE_BYTE_GET_AND_INC (offset_entry_count, start, 4, finish); + + putchar ('\n'); + printf (_(" Length: 0x%s\n"), dwarf_vmatoa ("x", initial_l= ength)); + printf (_(" DWARF version: %u\n"), version); + printf (_(" Address size: %u\n"), address_size); + printf (_(" Segment size: %u\n"), segment_selector_size); + printf (_(" Offset entries: %u\n"), offset_entry_count); + + if (offset_entry_count !=3D 0) + { + printf (_("\n Offsets starting at 0x%lx:\n"), + (long)(start - debug_displays [rnglists].section.start))= ; + if (offset_size =3D=3D 8) + { + for (i =3D 0; i < offset_entry_count; i++) + { + dwarf_vma entry; + + SAFE_BYTE_GET_AND_INC (entry, start, 8, finish); + printf (_(" [%6u] 0x%s\n"), i, dwarf_vmatoa ("x", ent= ry)); + } + } + else + { + for (i =3D 0; i < offset_entry_count; i++) + { + uint32_t entry; + + SAFE_BYTE_GET_AND_INC (entry, start, 4, finish); + printf (_(" [%6u] 0x%x\n"), i, entry); + } + } + } + putchar ('\n'); + printf (_(" Offset Begin End\n")); +} + static int display_debug_ranges (struct dwarf_section *section, void *file ATTRIBUTE_UNUSED) @@ -8070,6 +8173,7 @@ display_debug_ranges (struct dwarf_section *section, unsigned char address_size =3D 0; dwarf_vma last_offset =3D 0; unsigned int offset_size =3D 0; + unsigned char * start_header =3D NULL; if (bytes =3D=3D 0) { @@ -8230,7 +8334,8 @@ display_debug_ranges (struct dwarf_section *section, putchar ('\n'); printf (_(" Offset Begin End\n")); - for (i =3D 0; i < num_range_list; i++) + unsigned int range_lists_count =3D 0; + for (i =3D 0; i < num_range_list; i++, range_lists_count++) { struct range_entry *range_entry =3D &range_entries[i]; debug_info *debug_info_p =3D range_entry->debug_info_p; @@ -8243,6 +8348,15 @@ display_debug_ranges (struct dwarf_section *section, offset =3D range_entry->ranges_offset; base_address =3D debug_info_p->base_address; + /* Print the range lists header before printing the range list entri= es for + each CU. */ + if ((i > 0) && + (start_header !=3D NULL) && + (range_lists_count =3D=3D range_entries[i-1].debug_info_p->num_r= ange_lists)) { + range_lists_count =3D 0; + display_debug_rnglists_header (start_header, finish); + } + /* PR 17512: file: 001-101485-0.001:0.1. */ if (pointer_size < 2 || pointer_size > 8) { @@ -8258,7 +8372,7 @@ display_debug_ranges (struct dwarf_section *section, continue; } - next =3D section_begin + offset + debug_info_p->rnglists_base; + next =3D section_begin + offset; /* If multiple DWARF entities reference the same range then we will have multiple entries in the `range_entries' list for the same @@ -8289,8 +8403,10 @@ display_debug_ranges (struct dwarf_section *section, last_start =3D next; if (is_rnglists) + /* Print the current CU's range lists, also capture the starting a= ddress + of the next CU's range lists header. */ display_debug_rnglists_list - (start, finish, pointer_size, offset, base_address, offset_size); + (start, finish, pointer_size, offset, base_address, offset_size, &s= tart_header); else display_debug_ranges_list (start, finish, pointer_size, offset, base_address); -- 2.17.1 --_004_MW2PR12MB4684D593C652098CF67EA97687B99MW2PR12MB4684namp_ Content-Type: application/octet-stream; name="0001-PATCH-Fix-range-lists-issues-dwarf-5.patch" Content-Description: 0001-PATCH-Fix-range-lists-issues-dwarf-5.patch Content-Disposition: attachment; filename="0001-PATCH-Fix-range-lists-issues-dwarf-5.patch"; size=11795; creation-date="Mon, 27 Jun 2022 20:32:00 GMT"; modification-date="Mon, 27 Jun 2022 20:56:42 GMT" Content-Transfer-Encoding: base64 RnJvbSAwZmZjZWZmODAyNTI3OTdhOGQ3NjE5YjE5YTNiMTQxODk1NGRhYzRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/PUUyPTgwPTlDYmhrdW1hcm49RTI9ODA9OUQ/ PSA8Qmh1dmFuZW5kcmEuS3VtYXJOQGFtZC5jb20+CkRhdGU6IFR1ZSwgMjggSnVuIDIwMjIgMDA6 NTA6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIXSBbUEFUQ0hdIEZpeCByYW5nZSBsaXN0cyBpc3N1 ZXMgKGR3YXJmLTUpCgpGb3IgR0NDIGFuZC9vciBjbGFuZyBjb21waWxlZCBvYmplY3RzIHdpdGgg ZHdhcmYtNSwgZm9sbG93aW5nIGlzc3VlcwpyZWxhdGVkIHRvIHJhbmdlIGxpc3RzIGR1bXAgYXJl IGZpeGVkLgoxLiByYW5nZSBsaXN0cyBvZmZzZXQgYWRkcmVzcyBkdW1wIHVuZGVyIERXX0FUX3Jh bmdlcyBpcyBjb3JyZWN0ZWQsCndoZXJlIERXX0ZPUk1fcm5nbGlzdHggaXMgdXNlZC4gV2hpbGUg ZHVtcGluZyB0aGUgcmFuZ2UgbGlzdHMgb2Zmc2V0LAp0aGUgYWRkcmVzcyBkdW1wZWQgaXMgd3Jv bmcgd2hlcmUgaXQgd2FzIHJlZmVycmluZyB0byAuZGVidWdfYWRkcgppbnN0ZWFkIG9mIC5kZWJ1 Z19ybmdsaXN0cwoyLiAuZGVidWdfcm5nbGlzdHMgc2VjdGlvbiBkdW1wIGZvciBtdWx0aXBsZSBD VSBpcyBmaXhlZC4KRm9yIGVhY2ggQ1UsIHJhbmdlIGxpc3RzIGhlYWRlciBmb2xsb3dlZCBieSBy YW5nZSBsaXN0cyBpcyBkdW1wZWQgbm93LgoKCSogZHdhcmYuYyAoZmV0Y2hfaW5kZXhlZF92YWx1 ZSk6IFVzZSBiYXNlX2FkZHJlc3MgdG8gYWNjZXNzIHRoZQoJc2VjdGlvbiBvZmZzZXQgZm9yIHJu Z2xpc3RzIGFsc28uCgkocmVhZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlKTogRml4IHN1cHBvcnQg Zm9yIERXX0ZPUk1fcm5nbGlzdHggZm9ybS4KCVJlYWQgYXR0cmlidXRlIERXX0FUX3JuZ2xpc3Rz X2Jhc2Ugd2hpY2ggY2FuIGNvbWUgYmVmb3JlIG9yIGFmdGVyCglEV19BVF9yYW5nZXMgYXR0cmli dXRlLgoJVXBkYXRlIHJhbmdlX2xpc3RzIGFycmF5IGZvciBmb3JtcyBEV19GT1JNX3JuZ2xpc3R4 KGNsYW5nKSBvcgoJRFdfRk9STV9zZWNfb2Zmc2V0KEdDQykuCgkoZGlzcGxheV9kZWJ1Z19ybmds aXN0c19saXN0KTogQWRkIG5ldyBwYXJhbWV0ZXIgY2FsbGVkIHN0YXJ0X2hlYWRlcgoJYW5kIHBh c3Mgb24gdGhlIHN0YXJ0aW5nIGFkZHJlc3Mgb2YgdGhlIG5leHQgQ1UncyByYW5nZSBsaXN0cyBo ZWFkZXIuCgkoZGlzcGxheV9kZWJ1Z19ybmdsaXN0c19oZWFkZXIpOiBOZXcgZnVuY3Rpb24gdG8g ZHVtcCByYW5nZSBsaXN0cwoJaGVhZGVyIGZvciBlYWNoIENVLgoJKGRpc3BsYXlfZGVidWdfcmFu Z2VzKTogRHVtcCB0aGUgcmFuZ2UgbGlzdHMgaGVhZGVyIGJlZm9yZSBwcmludGluZwoJdGhlIHJh bmdlIGxpc3QgZW50cmllcyBmb3IgZWFjaCBDVS4KCUNhcHR1cmUgdGhlIHN0YXJ0aW5nIGFkZHJl c3Mgb2YgdGhlIG5leHQgQ1UncyByYW5nZSBsaXN0cyBoZWFkZXIuCi0tLQogYmludXRpbHMvZHdh cmYuYyB8IDEzMiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LQogMSBmaWxlIGNoYW5nZWQsIDEyNCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2JpbnV0aWxzL2R3YXJmLmMgYi9iaW51dGlscy9kd2FyZi5jCmluZGV4IGJjYWJi NjFiODcxLi4yZGFiM2VlM2Q5NiAxMDA2NDQKLS0tIGEvYmludXRpbHMvZHdhcmYuYworKysgYi9i aW51dGlscy9kd2FyZi5jCkBAIC04MTEsNyArODExLDcgQEAgZmV0Y2hfaW5kZXhlZF92YWx1ZSAo ZHdhcmZfdm1hIGlkeCwKIAogICAvKiBPZmZzZXRzIGFyZSBiaWFzZWQgYnkgdGhlIHNpemUgb2Yg dGhlIHNlY3Rpb24gaGVhZGVyCiAgICAgIG9yIGJhc2UgYWRkcmVzcy4gICovCi0gIGlmIChzZWNf ZW51bSA9PSBsb2NsaXN0cykKKyAgaWYgKChzZWNfZW51bSA9PSBsb2NsaXN0cykgfHwgKHNlY19l bnVtID09IHJuZ2xpc3RzKSkKICAgICBvZmZzZXQgKz0gYmFzZV9hZGRyZXNzOwogICBlbHNlCiAg ICAgb2Zmc2V0ICs9IGJpYXM7CkBAIC04NzcsNiArODc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYWJi cmV2X21hcAogc3RhdGljIGFiYnJldl9tYXAgKiAgIGN1X2FiYnJldl9tYXAgPSBOVUxMOwogc3Rh dGljIHVuc2lnbmVkIGxvbmcgIG51bV9hYmJyZXZfbWFwX2VudHJpZXMgPSAwOwogc3RhdGljIHVu c2lnbmVkIGxvbmcgIG5leHRfZnJlZV9hYmJyZXZfbWFwX2VudHJ5ID0gMDsKK3N0YXRpYyBhYmJy ZXZfYXR0ciAqcmFuZ2VzX2F0dHIgPSBOVUxMOwogCiAjZGVmaW5lIElOSVRJQUxfTlVNX0FCQlJF Vl9NQVBfRU5UUklFUyA4CiAjZGVmaW5lIEFCQlJFVl9NQVBfRU5UUklFU19JTkNSRU1FTlQgICA4 CkBAIC0yNDA3LDYgKzI0MDgsNyBAQCByZWFkX2FuZF9kaXNwbGF5X2F0dHJfdmFsdWUgKHVuc2ln bmVkIGxvbmcgICAgICAgICAgIGF0dHJpYnV0ZSwKICAgZHdhcmZfdm1hIHV2YWx1ZV9oaSA9IDA7 CiAgIHVuc2lnbmVkIGNoYXIgKmJsb2NrX3N0YXJ0ID0gTlVMTDsKICAgdW5zaWduZWQgY2hhciAq b3JpZ19kYXRhID0gZGF0YTsKKyAgZHdhcmZfdm1hIHV2YWx1ZV9ybmdsaXN0c19iYXNlOwogCiAg IGlmIChkYXRhID4gZW5kIHx8IChkYXRhID09IGVuZCAmJiBmb3JtICE9IERXX0ZPUk1fZmxhZ19w cmVzZW50KSkKICAgICB7CkBAIC0yNzYyLDYgKzI3NjQsMTAgQEAgcmVhZF9hbmRfZGlzcGxheV9h dHRyX3ZhbHVlICh1bnNpZ25lZCBsb25nICAgICAgICAgICBhdHRyaWJ1dGUsCiAJICAgICAgcHJp bnRmIChfKCIlYyhpbmRleDogMHglcyk6ICVzIiksIGRlbGltaXRlciwKIAkgICAgICAgICAgICAg IGR3YXJmX3ZtYXRvYSAoIngiLCB1dmFsdWUpLAogCSAgICAgICAgICAgICAgZHdhcmZfdm1hdG9h ICgieCIsIGRlYnVnX2luZm9fcC0+bG9jX29mZnNldHMgW3V2YWx1ZV0pKTsKKwkgICAgZWxzZSBp ZiAoZm9ybSA9PSBEV19GT1JNX3JuZ2xpc3R4KQorCSAgICAgIHByaW50ZiAoXygiJWMoaW5kZXg6 IDB4JXMpOiAlcyIpLCBkZWxpbWl0ZXIsCisJICAgICAgICAgICAgICBkd2FyZl92bWF0b2EgKCJ4 IiwgdXZhbHVlKSwKKwkgICAgICAgICAgICAgIGR3YXJmX3ZtYXRvYSAoIngiLCBkZWJ1Z19pbmZv X3AtPnJhbmdlX2xpc3RzIFt1dmFsdWVdKSk7CiAJICAgIGVsc2UKIAkgICAgICBwcmludGYgKF8o IiVjKGluZGV4OiAweCVzKTogJXMiKSwgZGVsaW1pdGVyLAogCSAgICAgICAgICAgICAgZHdhcmZf dm1hdG9hICgieCIsIHV2YWx1ZSksCkBAIC0yNzcxLDYgKzI3NzcsMTAgQEAgcmVhZF9hbmRfZGlz cGxheV9hdHRyX3ZhbHVlICh1bnNpZ25lZCBsb25nICAgICAgICAgICBhdHRyaWJ1dGUsCiAJICAg ICAgcHJpbnRmIChfKCIlYyhhZGRyX2luZGV4OiAweCVzKTogJXMiKSwgZGVsaW1pdGVyLAogCSAg ICAgICAgICAgICAgZHdhcmZfdm1hdG9hICgieCIsIHV2YWx1ZSksCiAJICAgICAgICAgICAgICBk d2FyZl92bWF0b2EgKCJ4IiwgZGVidWdfaW5mb19wLT5sb2Nfb2Zmc2V0cyBbdXZhbHVlXSkpOwor CSAgICBlbHNlIGlmIChmb3JtID09IERXX0ZPUk1fcm5nbGlzdHgpCisJICAgICAgcHJpbnRmIChf KCIlYyhhZGRyX2luZGV4OiAweCVzKTogJXMiKSwgZGVsaW1pdGVyLAorCSAgICAgICAgICAgICAg ZHdhcmZfdm1hdG9hICgieCIsIHV2YWx1ZSksCisJICAgICAgICAgICAgICBkd2FyZl92bWF0b2Eg KCJ4IiwgZGVidWdfaW5mb19wLT5yYW5nZV9saXN0cyBbdXZhbHVlXSkpOwogCSAgICBlbHNlCiAJ ICAgICAgcHJpbnRmIChfKCIlYyhhZGRyX2luZGV4OiAweCVzKTogJXMiKSwgZGVsaW1pdGVyLAog CSAgICAgICAgICAgICAgZHdhcmZfdm1hdG9hICgieCIsIHV2YWx1ZSksCkBAIC0yOTA5LDYgKzI5 MTksMjQgQEAgcmVhZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlICh1bnNpZ25lZCBsb25nICAgICAg ICAgICBhdHRyaWJ1dGUsCiAJICBicmVhazsKIAogCWNhc2UgRFdfQVRfcmFuZ2VzOgorCSAgdXZh bHVlX3JuZ2xpc3RzX2Jhc2UgPSAwOworCSAgLyogRFdfQVRfcm5nbGlzdHNfYmFzZSBjYW4gYXBw ZWFyIGJlZm9yZSBvciBhZnRlciBEV19BVF9yYW5nZXMgYXR0cmlidXRlLgorCSAgICAgSWYgaXRz IGZvdW5kIGJlZm9yZSwgRFdfQVRfcm5nbGlzdHNfYmFzZSBpcyB1c2VkIGRpcmVjdGx5LAorCSAg ICAgb3RoZXJ3aXNlIGl0cyBsb29rZWQgYWhlYWQgZnJvbSBEV19BVF9yYW5nZXMgYW5kIHJlYWQu ICAqLworCSAgaWYgKCFkZWJ1Z19pbmZvX3AtPnJuZ2xpc3RzX2Jhc2UpIHsKKwkgICAgaWYgKHJh bmdlc19hdHRyICYmIHJhbmdlc19hdHRyLT5uZXh0ICYmIHJhbmdlc19hdHRyLT5uZXh0LT5uZXh0 ICYmCisJICAgICAgICAocmFuZ2VzX2F0dHItPm5leHQtPm5leHQtPmF0dHJpYnV0ZSA9PSBEV19B VF9ybmdsaXN0c19iYXNlKSkgeworCSAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFfZHVwbCA9IGRh dGE7CisJICAgICAgZHdhcmZfdm1hIHV2YWx1ZV9za2lwOworCSAgICAgIGRhdGFfZHVwbCA9IHNr aXBfYXR0cl9ieXRlcyAocmFuZ2VzX2F0dHItPm5leHQtPmZvcm0sIGRhdGFfZHVwbCwgZW5kLAor CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9zaXplLCBvZmZzZXRf c2l6ZSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3YXJmX3ZlcnNpb24s ICZ1dmFsdWVfc2tpcCk7CisJICAgICAgU0FGRV9CWVRFX0dFVF9BTkRfSU5DICh1dmFsdWVfcm5n bGlzdHNfYmFzZSwgZGF0YV9kdXBsLCBvZmZzZXRfc2l6ZSwgZW5kKTsKKwkgICAgfQorCSAgfQor CSAgZWxzZQorCSAgICB1dmFsdWVfcm5nbGlzdHNfYmFzZSA9IGRlYnVnX2luZm9fcC0+cm5nbGlz dHNfYmFzZTsKKwogCSAgaWYgKChkd2FyZl92ZXJzaW9uIDwgNAogCSAgICAgICAmJiAoZm9ybSA9 PSBEV19GT1JNX2RhdGE0IHx8IGZvcm0gPT0gRFdfRk9STV9kYXRhOCkpCiAJICAgICAgfHwgZm9y bSA9PSBEV19GT1JNX3NlY19vZmZzZXQKQEAgLTI5MTcsNiArMjk0NSw3IEBAIHJlYWRfYW5kX2Rp c3BsYXlfYXR0cl92YWx1ZSAodW5zaWduZWQgbG9uZyAgICAgICAgICAgYXR0cmlidXRlLAogCSAg ICAgIC8qIFByb2Nlc3MgcmFuZ2UgbGlzdC4gICovCiAJICAgICAgdW5zaWduZWQgaW50IGxtYXgg PSBkZWJ1Z19pbmZvX3AtPm1heF9yYW5nZV9saXN0czsKIAkgICAgICB1bnNpZ25lZCBpbnQgbnVt ID0gZGVidWdfaW5mb19wLT5udW1fcmFuZ2VfbGlzdHM7CisJICAgICAgZHdhcmZfdm1hIHV2YWx1 ZV9pbmRleDsKIAogCSAgICAgIGlmIChsbWF4ID09IDAgfHwgbnVtID49IGxtYXgpCiAJCXsKQEAg LTI5MjcsMTAgKzI5NTYsMTUgQEAgcmVhZF9hbmRfZGlzcGxheV9hdHRyX3ZhbHVlICh1bnNpZ25l ZCBsb25nICAgICAgICAgICBhdHRyaWJ1dGUsCiAJCSAgZGVidWdfaW5mb19wLT5tYXhfcmFuZ2Vf bGlzdHMgPSBsbWF4OwogCQl9CiAKKwkgICAgICB1dmFsdWVfaW5kZXggPSB1dmFsdWU7CiAJICAg ICAgaWYgKGZvcm0gPT0gRFdfRk9STV9ybmdsaXN0eCkKLQkJdXZhbHVlID0gZmV0Y2hfaW5kZXhl ZF92YWx1ZSAodXZhbHVlLCBybmdsaXN0cywgMCk7CisJCXV2YWx1ZSA9IGZldGNoX2luZGV4ZWRf dmFsdWUgKHV2YWx1ZSwgcm5nbGlzdHMsIHV2YWx1ZV9ybmdsaXN0c19iYXNlKTsKIAotCSAgICAg IGRlYnVnX2luZm9fcC0+cmFuZ2VfbGlzdHMgW251bV0gPSB1dmFsdWU7CisJICAgICAgdXZhbHVl ICs9IHV2YWx1ZV9ybmdsaXN0c19iYXNlOworCSAgICAgIGlmIChmb3JtID09IERXX0ZPUk1fcm5n bGlzdHgpCisJICAgICAgICBkZWJ1Z19pbmZvX3AtPnJhbmdlX2xpc3RzIFt1dmFsdWVfaW5kZXhd ID0gdXZhbHVlOworCSAgICAgIGVsc2UKKwkgICAgICAgIGRlYnVnX2luZm9fcC0+cmFuZ2VfbGlz dHMgW251bV0gPSB1dmFsdWU7CiAJICAgICAgZGVidWdfaW5mb19wLT5udW1fcmFuZ2VfbGlzdHMr KzsKIAkgICAgfQogCSAgYnJlYWs7CkBAIC00MDQzLDYgKzQwNzcsOCBAQCBwcm9jZXNzX2RlYnVn X2luZm8gKHN0cnVjdCBkd2FyZl9zZWN0aW9uICogc2VjdGlvbiwKIAkgICAgICBpZiAoISBkb19s b2MgJiYgZG9fcHJpbnRpbmcpCiAJCS8qIFNob3cgdGhlIG9mZnNldCBmcm9tIHdoZXJlIHRoZSB0 YWcgd2FzIGV4dHJhY3RlZC4gICovCiAJCXByaW50ZiAoIiAgICA8JWx4PiIsICh1bnNpZ25lZCBs b25nKSh0YWdzIC0gc2VjdGlvbl9iZWdpbikpOworCSAgICAgIGlmIChhdHRyLT5hdHRyaWJ1dGUg PT0gRFdfQVRfcmFuZ2VzKQorCSAgICAgICAgcmFuZ2VzX2F0dHIgPSBhdHRyOwogCSAgICAgIHRh Z3MgPSByZWFkX2FuZF9kaXNwbGF5X2F0dHIgKGF0dHItPmF0dHJpYnV0ZSwKIAkJCQkJICAgIGF0 dHItPmZvcm0sCiAJCQkJCSAgICBhdHRyLT5pbXBsaWNpdF9jb25zdCwKQEAgLTc5NDcsNyArNzk4 Myw4IEBAIGRpc3BsYXlfZGVidWdfcm5nbGlzdHNfbGlzdCAodW5zaWduZWQgY2hhciAqIHN0YXJ0 LAogCQkJICAgICB1bnNpZ25lZCBpbnQgICAgcG9pbnRlcl9zaXplLAogCQkJICAgICBkd2FyZl92 bWEgICAgICAgb2Zmc2V0LAogCQkJICAgICBkd2FyZl92bWEgICAgICAgYmFzZV9hZGRyZXNzLAot CQkJICAgICB1bnNpZ25lZCBpbnQgICAgb2Zmc2V0X3NpemUpCisJCQkgICAgIHVuc2lnbmVkIGlu dCAgICBvZmZzZXRfc2l6ZSwKKwkJCSAgICAgdW5zaWduZWQgY2hhciAqKiBzdGFydF9oZWFkZXIp CiB7CiAgIHVuc2lnbmVkIGNoYXIgKm5leHQgPSBzdGFydDsKICAgdW5zaWduZWQgaW50IGRlYnVn X2FkZHJfc2VjdGlvbl9oZHJfbGVuOwpAQCAtODAyOSw4ICs4MDY2LDExIEBAIGRpc3BsYXlfZGVi dWdfcm5nbGlzdHNfbGlzdCAodW5zaWduZWQgY2hhciAqIHN0YXJ0LAogCSAgYnJlYWs7CiAJfQog Ci0gICAgICBpZiAocmxldCA9PSBEV19STEVfZW5kX29mX2xpc3QpCisgICAgICBpZiAocmxldCA9 PSBEV19STEVfZW5kX29mX2xpc3QpIHsKKwkvKiBQYXNzIG9uIHRoZSBzdGFydGluZyBhZGRyZXNz IG9mIHRoZSBuZXh0IENVJ3MgcmFuZ2UgbGlzdHMgaGVhZGVyLiAgKi8KKwkqc3RhcnRfaGVhZGVy ID0gc3RhcnQ7CiAJYnJlYWs7CisgICAgICB9CiAgICAgICBpZiAocmxldCA9PSBEV19STEVfYmFz ZV9hZGRyZXNzIHx8IHJsZXQgPT0gRFdfUkxFX2Jhc2VfYWRkcmVzc3gpCiAJY29udGludWU7CiAK QEAgLTgwNTMsNiArODA5Myw2OSBAQCBkaXNwbGF5X2RlYnVnX3JuZ2xpc3RzX2xpc3QgKHVuc2ln bmVkIGNoYXIgKiBzdGFydCwKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIGRpc3BsYXlfZGVidWdf cm5nbGlzdHNfaGVhZGVyICh1bnNpZ25lZCBjaGFyICogc3RhcnQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIGZpbmlzaCkKK3sKKyAg ICAgIGR3YXJmX3ZtYSBpbml0aWFsX2xlbmd0aDsKKyAgICAgIHVuc2lnbmVkIGNoYXIgc2VnbWVu dF9zZWxlY3Rvcl9zaXplOworICAgICAgdW5zaWduZWQgaW50IG9mZnNldF9zaXplLCBvZmZzZXRf ZW50cnlfY291bnQsIGk7CisgICAgICB1bnNpZ25lZCBzaG9ydCB2ZXJzaW9uOworICAgICAgdW5z aWduZWQgY2hhciAgYWRkcmVzc19zaXplID0gMDsKKworICAgICAgLyogR2V0IGFuZCBjaGVjayB0 aGUgbGVuZ3RoIG9mIHRoZSBibG9jay4gICovCisgICAgICBTQUZFX0JZVEVfR0VUX0FORF9JTkMg KGluaXRpYWxfbGVuZ3RoLCBzdGFydCwgNCwgZmluaXNoKTsKKworICAgICAgaWYgKGluaXRpYWxf bGVuZ3RoID09IDB4ZmZmZmZmZmYpCisgICAgICAgIHsKKyAgICAgICAgICAvKiBUaGlzIHNlY3Rp b24gaXMgNjQtYml0IERXQVJGIDMuICAqLworICAgICAgICAgIFNBRkVfQllURV9HRVRfQU5EX0lO QyAoaW5pdGlhbF9sZW5ndGgsIHN0YXJ0LCA4LCBmaW5pc2gpOworICAgICAgICAgIG9mZnNldF9z aXplID0gODsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICBvZmZzZXRfc2l6ZSA9IDQ7 CisKKyAgICAgIC8qIEdldCB0aGUgb3RoZXIgZmllbGRzIGluIHRoZSBoZWFkZXIuICAqLworICAg ICAgU0FGRV9CWVRFX0dFVF9BTkRfSU5DICh2ZXJzaW9uLCBzdGFydCwgMiwgZmluaXNoKTsKKyAg ICAgIFNBRkVfQllURV9HRVRfQU5EX0lOQyAoYWRkcmVzc19zaXplLCBzdGFydCwgMSwgZmluaXNo KTsKKyAgICAgIFNBRkVfQllURV9HRVRfQU5EX0lOQyAoc2VnbWVudF9zZWxlY3Rvcl9zaXplLCBz dGFydCwgMSwgZmluaXNoKTsKKyAgICAgIFNBRkVfQllURV9HRVRfQU5EX0lOQyAob2Zmc2V0X2Vu dHJ5X2NvdW50LCBzdGFydCwgNCwgZmluaXNoKTsKKworICAgICAgcHV0Y2hhciAoJ1xuJyk7Cisg ICAgICBwcmludGYgKF8oIiAgTGVuZ3RoOiAgICAgICAgICAweCVzXG4iKSwgZHdhcmZfdm1hdG9h ICgieCIsIGluaXRpYWxfbGVuZ3RoKSk7CisgICAgICBwcmludGYgKF8oIiAgRFdBUkYgdmVyc2lv bjogICAldVxuIiksIHZlcnNpb24pOworICAgICAgcHJpbnRmIChfKCIgIEFkZHJlc3Mgc2l6ZTog ICAgJXVcbiIpLCBhZGRyZXNzX3NpemUpOworICAgICAgcHJpbnRmIChfKCIgIFNlZ21lbnQgc2l6 ZTogICAgJXVcbiIpLCBzZWdtZW50X3NlbGVjdG9yX3NpemUpOworICAgICAgcHJpbnRmIChfKCIg IE9mZnNldCBlbnRyaWVzOiAgJXVcbiIpLCBvZmZzZXRfZW50cnlfY291bnQpOworCisgICAgICBp ZiAob2Zmc2V0X2VudHJ5X2NvdW50ICE9IDApCisgICAgICAgIHsKKyAgICAgICAgICBwcmludGYg KF8oIlxuICAgT2Zmc2V0cyBzdGFydGluZyBhdCAweCVseDpcbiIpLAorICAgICAgICAgICAgICAg ICAgKGxvbmcpKHN0YXJ0IC0gZGVidWdfZGlzcGxheXMgW3JuZ2xpc3RzXS5zZWN0aW9uLnN0YXJ0 KSk7CisgICAgICAgICAgaWYgKG9mZnNldF9zaXplID09IDgpCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvZmZzZXRfZW50cnlfY291bnQ7IGkrKykKKyAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBkd2FyZl92bWEgZW50cnk7CisKKyAgICAg ICAgICAgICAgICAgIFNBRkVfQllURV9HRVRfQU5EX0lOQyAoZW50cnksIHN0YXJ0LCA4LCBmaW5p c2gpOworICAgICAgICAgICAgICAgICAgcHJpbnRmIChfKCIgICAgWyU2dV0gMHglc1xuIiksIGks IGR3YXJmX3ZtYXRvYSAoIngiLCBlbnRyeSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGZvciAo aSA9IDA7IGkgPCBvZmZzZXRfZW50cnlfY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBlbnRyeTsKKworICAgICAgICAgICAgICAgICAgU0FG RV9CWVRFX0dFVF9BTkRfSU5DIChlbnRyeSwgc3RhcnQsIDQsIGZpbmlzaCk7CisgICAgICAgICAg ICAgICAgICBwcmludGYgKF8oIiAgICBbJTZ1XSAweCV4XG4iKSwgaSwgZW50cnkpOworICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgcHV0Y2hhciAoJ1xu Jyk7CisgICAgICBwcmludGYgKF8oIiAgICBPZmZzZXQgICBCZWdpbiAgICBFbmRcbiIpKTsKK30K Kwogc3RhdGljIGludAogZGlzcGxheV9kZWJ1Z19yYW5nZXMgKHN0cnVjdCBkd2FyZl9zZWN0aW9u ICpzZWN0aW9uLAogCQkgICAgICB2b2lkICpmaWxlIEFUVFJJQlVURV9VTlVTRUQpCkBAIC04MDcw LDYgKzgxNzMsNyBAQCBkaXNwbGF5X2RlYnVnX3JhbmdlcyAoc3RydWN0IGR3YXJmX3NlY3Rpb24g KnNlY3Rpb24sCiAgIHVuc2lnbmVkIGNoYXIgICAgICAgICBhZGRyZXNzX3NpemUgPSAwOwogICBk d2FyZl92bWEgICAgICAgICAgICAgbGFzdF9vZmZzZXQgPSAwOwogICB1bnNpZ25lZCBpbnQgICAg ICAgICAgb2Zmc2V0X3NpemUgPSAwOworICB1bnNpZ25lZCBjaGFyICogICAgICAgc3RhcnRfaGVh ZGVyID0gTlVMTDsKIAogICBpZiAoYnl0ZXMgPT0gMCkKICAgICB7CkBAIC04MjMwLDcgKzgzMzQs OCBAQCBkaXNwbGF5X2RlYnVnX3JhbmdlcyAoc3RydWN0IGR3YXJmX3NlY3Rpb24gKnNlY3Rpb24s CiAgIHB1dGNoYXIgKCdcbicpOwogICBwcmludGYgKF8oIiAgICBPZmZzZXQgICBCZWdpbiAgICBF bmRcbiIpKTsKIAotICBmb3IgKGkgPSAwOyBpIDwgbnVtX3JhbmdlX2xpc3Q7IGkrKykKKyAgdW5z aWduZWQgaW50IHJhbmdlX2xpc3RzX2NvdW50ID0gMDsKKyAgZm9yIChpID0gMDsgaSA8IG51bV9y YW5nZV9saXN0OyBpKyssIHJhbmdlX2xpc3RzX2NvdW50KyspCiAgICAgewogICAgICAgc3RydWN0 IHJhbmdlX2VudHJ5ICpyYW5nZV9lbnRyeSA9ICZyYW5nZV9lbnRyaWVzW2ldOwogICAgICAgZGVi dWdfaW5mbyAqZGVidWdfaW5mb19wID0gcmFuZ2VfZW50cnktPmRlYnVnX2luZm9fcDsKQEAgLTgy NDMsNiArODM0OCwxNSBAQCBkaXNwbGF5X2RlYnVnX3JhbmdlcyAoc3RydWN0IGR3YXJmX3NlY3Rp b24gKnNlY3Rpb24sCiAgICAgICBvZmZzZXQgPSByYW5nZV9lbnRyeS0+cmFuZ2VzX29mZnNldDsK ICAgICAgIGJhc2VfYWRkcmVzcyA9IGRlYnVnX2luZm9fcC0+YmFzZV9hZGRyZXNzOwogCisgICAg ICAvKiBQcmludCB0aGUgcmFuZ2UgbGlzdHMgaGVhZGVyIGJlZm9yZSBwcmludGluZyB0aGUgcmFu Z2UgbGlzdCBlbnRyaWVzIGZvcgorICAgICAgICAgZWFjaCBDVS4gICovCisgICAgICBpZiAoKGkg PiAwKSAmJgorICAgICAgICAgIChzdGFydF9oZWFkZXIgIT0gTlVMTCkgJiYKKyAgICAgICAgICAo cmFuZ2VfbGlzdHNfY291bnQgPT0gcmFuZ2VfZW50cmllc1tpLTFdLmRlYnVnX2luZm9fcC0+bnVt X3JhbmdlX2xpc3RzKSkgeworICAgICAgICByYW5nZV9saXN0c19jb3VudCA9IDA7CisgICAgICAg IGRpc3BsYXlfZGVidWdfcm5nbGlzdHNfaGVhZGVyIChzdGFydF9oZWFkZXIsIGZpbmlzaCk7Cisg ICAgICB9CisKICAgICAgIC8qIFBSIDE3NTEyOiBmaWxlOiAwMDEtMTAxNDg1LTAuMDAxOjAuMS4g ICovCiAgICAgICBpZiAocG9pbnRlcl9zaXplIDwgMiB8fCBwb2ludGVyX3NpemUgPiA4KQogCXsK QEAgLTgyNTgsNyArODM3Miw3IEBAIGRpc3BsYXlfZGVidWdfcmFuZ2VzIChzdHJ1Y3QgZHdhcmZf c2VjdGlvbiAqc2VjdGlvbiwKIAkgIGNvbnRpbnVlOwogCX0KIAotICAgICAgbmV4dCA9IHNlY3Rp b25fYmVnaW4gKyBvZmZzZXQgKyBkZWJ1Z19pbmZvX3AtPnJuZ2xpc3RzX2Jhc2U7CisgICAgICBu ZXh0ID0gc2VjdGlvbl9iZWdpbiArIG9mZnNldDsKIAogICAgICAgLyogSWYgbXVsdGlwbGUgRFdB UkYgZW50aXRpZXMgcmVmZXJlbmNlIHRoZSBzYW1lIHJhbmdlIHRoZW4gd2Ugd2lsbAogICAgICAg ICAgaGF2ZSBtdWx0aXBsZSBlbnRyaWVzIGluIHRoZSBgcmFuZ2VfZW50cmllcycgbGlzdCBmb3Ig dGhlIHNhbWUKQEAgLTgyODksOCArODQwMywxMCBAQCBkaXNwbGF5X2RlYnVnX3JhbmdlcyAoc3Ry dWN0IGR3YXJmX3NlY3Rpb24gKnNlY3Rpb24sCiAgICAgICBsYXN0X3N0YXJ0ID0gbmV4dDsKIAog ICAgICAgaWYgKGlzX3JuZ2xpc3RzKQorICAgICAgICAvKiBQcmludCB0aGUgY3VycmVudCBDVSdz IHJhbmdlIGxpc3RzLCBhbHNvIGNhcHR1cmUgdGhlIHN0YXJ0aW5nIGFkZHJlc3MKKyAgICAgICAg ICAgb2YgdGhlIG5leHQgQ1UncyByYW5nZSBsaXN0cyBoZWFkZXIuICAqLwogCWRpc3BsYXlfZGVi dWdfcm5nbGlzdHNfbGlzdAotCSAgKHN0YXJ0LCBmaW5pc2gsIHBvaW50ZXJfc2l6ZSwgb2Zmc2V0 LCBiYXNlX2FkZHJlc3MsIG9mZnNldF9zaXplKTsKKwkgIChzdGFydCwgZmluaXNoLCBwb2ludGVy X3NpemUsIG9mZnNldCwgYmFzZV9hZGRyZXNzLCBvZmZzZXRfc2l6ZSwgJnN0YXJ0X2hlYWRlcik7 CiAgICAgICBlbHNlCiAJZGlzcGxheV9kZWJ1Z19yYW5nZXNfbGlzdAogCSAgKHN0YXJ0LCBmaW5p c2gsIHBvaW50ZXJfc2l6ZSwgb2Zmc2V0LCBiYXNlX2FkZHJlc3MpOwotLSAKMi4xNy4xCgo= --_004_MW2PR12MB4684D593C652098CF67EA97687B99MW2PR12MB4684namp_--