From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on20609.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe5a::609]) by sourceware.org (Postfix) with ESMTPS id 366E3384F034 for ; Wed, 28 Jul 2021 14:32:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 366E3384F034 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BVOaEHqEXzWoZAdlr5Z/wXdguyiFW2529mVMksU4eUA9VZh/Po2b1Ct1uNHadaw+OPMTJwyQm1Ge8uwbEv8Z04IM52eN/RZ2jfgArrAmT6EjC+YPGBwnmcoG9we6tyraKuAiOk0JbqCsh5PL8k4jJcpToCR4b5tTzmn+QokEmT9pGGoCh+pZLWXY0YzuX3HBExUdtUMFX5M8ETvNp8MMt+ye1SFwQuKZNC1GuQ+MDm4LTW0GaZC9WKFNfBKkKWJFWTsHV9MCa9Fs8dB5Fqe9Pr2D7a4bN8Bs3suYPcRouGVxj8TOgRXCX8SgRrr19d52V6tV7kINBuZmu8M9s2TJsw== 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=MQ6Ibt+WAPOguZKGAy1vXqKWlPZ/mjZUdnSZWSYicx4=; b=YtV8F2h8R3pDSU1aBlxoHjjU5CVFZpu3TZZsbH/ajq/YNT/funch9y7H5y02PCloLonc+e8LKJEF9HljtcRlY2JBinnom1Q2rJomElAl8xRyCWC9/7ECjt10RWrmcqGRN4NciWEAWZ3yVaOaHagx/0M/7484TXwzlupnQ0OBhXNctX9lL/lA8M6XwSmoCFcmJJOXCKHQIPzuBGdQ0pqzY1YcUFlG9GA/Z20is8pPpxAlJgH3axQd9w+fTK6hF3E/Hxp8klWtFhQI5s2/6TRP3fm7lUnG2Mo1mEKQSsVisn0BHnQ4pgmm5tGkvoKMR7LuMvOdB5o0gsoJaIsNItMv4A== 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 BN9PR12MB5243.namprd12.prod.outlook.com (2603:10b6:408:100::8) by BN9PR12MB5366.namprd12.prod.outlook.com (2603:10b6:408:103::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.20; Wed, 28 Jul 2021 14:32:06 +0000 Received: from BN9PR12MB5243.namprd12.prod.outlook.com ([fe80::e55d:b4d8:cb84:145]) by BN9PR12MB5243.namprd12.prod.outlook.com ([fe80::e55d:b4d8:cb84:145%7]) with mapi id 15.20.4373.018; Wed, 28 Jul 2021 14:32:06 +0000 From: "Achra, Nitika" To: Jakub Jelinek CC: "dwz@sourceware.org" , "George, Jini Susan" Subject: RE: [PATCH] DWARFv5: Support for unit type DW_UT_type and DW_TAG_type_unit. Thread-Topic: [PATCH] DWARFv5: Support for unit type DW_UT_type and DW_TAG_type_unit. Thread-Index: AddepM+rhkK4A5CjQVqkv8Q4he47pwAC2fiACUMEPAA= Date: Wed, 28 Jul 2021 14:32:06 +0000 Message-ID: References: <20210611105457.GQ7746@tucnak> In-Reply-To: <20210611105457.GQ7746@tucnak> 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-07-28T14:32:00Z; 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=a49568a6-6d8b-48a0-bc74-093de28e7932; MSIP_Label_88914ebd-7e6c-4e12-a031-a9906be2db14_ContentBits=1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 3cd409b2-b987-4a8e-b60f-08d951d479e7 x-ms-traffictypediagnostic: BN9PR12MB5366: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:114; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ci1dIV/XhjqU+AdW7pjlIaLkik1QqJtJPqsQ/xw065guoOelZdvTpSFGGDAu1C1OiBpSFZmgjy4RNYIlG0dej+rVcpZysNjPTaNEhaSiIkHVs2zpVFqhjrGdzX6HZG7pr9aFrWYDvNjIyWnqkgfFQpO6naORauiCbA0kI9fpXVChBTkewawhyd/EDRyZDRqFhlB6S9EcVbqLrByDBUwPnaMPdTXA8thPhtHqHQseN3UIRfQ+zv+Ff4vv2xY1eJQqLh7CEokgSPWa0p2e/kqFdSNX+GFyZZQxJ2csookcz3wbk/4LhSitHrwRqnQAeA9OzZqZzgIPUaYPJGGatTzb78ru82dPOqE3CzBxBkkGPcCZleE259kFc2PZUjxdVCrG04Xv1WvR7WmftKf1Gzqh/1oYZHuL/saN1vI4oYFMTMuCwtE17lOKAXTjiUk34ipPwjAzfcRq2C5+rWs/mIKdf6YYY+yzU19B1mlknOu6M/cG8v3N0Dsb9kiuL3m6zCQPkJHj45X9BM55F7sjFWN4SXo+ZFPQe+b3xABxzJJw6EFDcpglb+N3GQC01ZdQEGTwwwMUBZyeRUCdEcgxrfM9BeBj3O5YL3jcOrcL0qg6b/UT5g/sCgBDAbMsSi0Ua6Isp4EGNz0ad0dxEyJYEFA9APAmovYFYGnFDWuc8iPGeL9KdhPq4BZ5YNdeKaSZoJjpUIt0Imh6GSznzQKO10uebw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR12MB5243.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(136003)(346002)(376002)(39860400002)(366004)(86362001)(76116006)(38070700005)(6506007)(53546011)(52536014)(64756008)(7696005)(66446008)(66616009)(66946007)(66556008)(6916009)(83380400001)(55236004)(99936003)(66476007)(8676002)(8936002)(316002)(71200400001)(2906002)(26005)(478600001)(38100700002)(186003)(5660300002)(30864003)(9686003)(33656002)(54906003)(122000001)(4326008)(55016002); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?UN2+hTb1ssdZTWqzxEFnb+3am8SPiF7mzdlBUCrxFi2CpUbcqYySOWhhNs6D?= =?us-ascii?Q?j8xGqmdSDSZXjJ7QVHXCiHPE0+wdvd0PAJEqnQQHoQCmLjQ5//Yfv4cZnbSj?= =?us-ascii?Q?fUPXnnV/S/8MFb9Zr3+W38gCTqbE3hQUUZxAPgHE1jKlmanb6iZo60fZ+9oH?= =?us-ascii?Q?tFLDBLGIkQkVbIZ1dZ3ayucA46wKiZ4JrU3AqELnpmKwryUEAfPckLNJBxSz?= =?us-ascii?Q?bcp15CwEndCH1RbFVe6EWykaFR1eYcIbNR8YIorYjw0a5wiNsLPFGn73bqDt?= =?us-ascii?Q?MVZ1zd22bBwdDEXDPl6rUPF37p/ezjVyXKNmSDCaeB83YWYkgy599zgaQTjE?= =?us-ascii?Q?R+bmqtNcrcydjs4aEEDRUKKjdisbZu8SXL6BO3dcoknhxVjqoDj9oCiG9YA5?= =?us-ascii?Q?1/A6OOwhvApPGt0XA5e5kAzENdW5KF1JRJfjR5HeoGxWNe5I1MCPChcq8rD6?= =?us-ascii?Q?sp1nBEaFUIWAhlwwdCmX6n5zNhSbvUOpNEu4YZk1MwX7krfDZkGRYfDOKpV/?= =?us-ascii?Q?sJpnzqQdIo/0sqkw03zhPMos4SVJzx5BYJYoyhm0/QvZ6PESoq2f9d+pyer3?= =?us-ascii?Q?noRzsYZtMQJ5efD+pc9uylGJbpVWMS0WIunjanYVaA7aGkEgxlb4YD45VHBH?= =?us-ascii?Q?123Ac7TNAg8C7pjzcZ5e8Kcmz/fqXkPLlFoYcZ72n52MfH9mnlvq9AamluGN?= =?us-ascii?Q?QXQeSC7NBF+oHqcMM9VJSq2UPZ36+AJ25sK1l/XeFrdfwGKutwW/nlaalW1g?= =?us-ascii?Q?CbhG6rSJghDyjQxkZAVt7oZmQRMNZ2VyM/eOaIuSm4aI7eT8DlEThXtRzsN/?= =?us-ascii?Q?MQbWPhlB4cCLTo5pq6Txqe8Z3/Oeyyrnb8wpEE/49Gk39g8w3LW4I2MLZuUs?= =?us-ascii?Q?8JE4kv392Pfg2pAti6Ug4bFmmX8Ax6qFWuEcB0L1sXT8JKkbqwueReNz2cf8?= =?us-ascii?Q?JjZ91HgLXKUxF6fDd7B/Pczdnypz768+Vy6M9RqF/unza3VBDiz0InOjyfMM?= =?us-ascii?Q?B6P6zDW9NgznZ/uli+OMuNSXxQ8vRFbENC6t3njTRip9U6cyaY6PeMsoY3d4?= =?us-ascii?Q?zNv0ot54JkVo11UapaR4cemmTBrgD1Kk7IUOZFC3HX/71RBD1jbVMe8p5w0D?= =?us-ascii?Q?Mkd8xR3h81Upb87kHBYb6C/iUgCClBtqcCc9g71MNRUT7O5k/x/MiV2qcKgS?= =?us-ascii?Q?jE4+tlrgAhBvlL3BMrD7TcSASeSxPL21Mq2Yvr8Sm20I1gp/MaWqRVzp5P32?= =?us-ascii?Q?vcGaIHne9lwJVSEfvZk5+G2lCHdA8QT0m0wUCImiO9lUE03NtElU7lyotjfg?= =?us-ascii?Q?xd0=3D?= Content-Type: multipart/mixed; boundary="_002_BN9PR12MB52435B7EC2BE869F7023BC8D9AEA9BN9PR12MB5243namp_" MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR12MB5243.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3cd409b2-b987-4a8e-b60f-08d951d479e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Jul 2021 14:32:06.8207 (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: s1Rivxp5jUqu6cJEsl9i1W/2+WGaZbe0m5fOOtEXBReU5LHsz3oQCKG5TSWoODaVxBKOT5F5APshKbNbKWXSgg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR12MB5366 X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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: dwz@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Dwz mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jul 2021 14:32:11 -0000 --_002_BN9PR12MB52435B7EC2BE869F7023BC8D9AEA9BN9PR12MB5243namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [AMD Official Use Only] Hi Jakub, Thanks for the review. Please find the attached patch with some of the chan= ges you suggested. Please take a look at it. Regards, Nitika -----Original Message----- From: Jakub Jelinek =20 Sent: Friday, June 11, 2021 4:25 PM To: Achra, Nitika Cc: dwz@sourceware.org; George, Jini Susan Subject: Re: [PATCH] DWARFv5: Support for unit type DW_UT_type and DW_TAG_t= ype_unit. [CAUTION: External Email] On Fri, Jun 11, 2021 at 09:37:18AM +0000, Achra, Nitika via Dwz wrote: > The attached patch handles the DW_UT_type and DW_TAG_type_unit for DWARFv= 5. Requesting everyone to please review this. Ideally, dwz should rewrite all those DW_TAG_type_units into DW_TAG_partial= _unit, after a library or binary is linked, nothing from outside can refer = to its type units. The DW_FORM_ref_sig8 references are too large, DW_FORM_= ref_addr is (for 32-bit DWARF) half the size and cheaper for the consumer w= hich doesn't have to look up the type id in some hash table. Furthermore o= ne can save some bytes from the unit header too. --- a/dwz.c +++ b/dwz.c @@ -903,6 +903,13 @@ struct dw_cu unsigned int cu_offset; /* DWARF version of the CU. */ unsigned int cu_version; + /* True if the CU unit_type is DW_UT_type inside the debug_info. */ =20 + bool isUTType; Why can't this be in cu_kind instead, just another kind? And, dwz doesn't use this kind of variable/field names. + /* A unique 8-byte signature of the type described in this type unit. =20 + */ uint64_t cu_type_signature; + /* A 4-byte unsigned offset relative to the beginning of the type unit + header. */ + unsigned int cu_type_offset; This will create unnecessary padding in the struct on 64-bit arches. They should be moved somewhere where that doesn't happen. /* Cached DW_AT_comp_dir value from DW_TAG_*_unit cu_die, or NULL if that attribute is not present. */ char *cu_comp_dir; @@ -3245,6 +3252,7 @@ checksum_die (DSO *dso, dw_cu_ref cu, dw_die_ref top_= die, dw_die_ref die) die->u.p1.die_hash =3D 0; if (die->die_tag =3D=3D DW_TAG_compile_unit || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit || die->die_tag =3D=3D DW_TAG_namespace || die->die_tag =3D=3D DW_TAG_module || die->die_tag =3D=3D DW_TAG_imported_unit) @@ -4065,6 +4073,7 @@ c= hecksum_ref_die (dw_cu_ref cu, dw_die_ref top_die, dw_die_ref die, while (!reft->die_root && reft->die_parent->die_tag !=3D DW_TAG_compile_unit && reft->die_parent->die_tag !=3D DW_TAG_partial_unit + && reft->die_parent->die_tag !=3D DW_TAG_type_unit && !reft->die_parent->die_named_namespace) reft =3D reft->die_parent; if (reft->die_ck_state !=3D CK_KNOWN || reft->die_root) @@ -4= 580,9 +4589,11 @@ die_eq_1 (dw_cu_ref cu1, dw_cu_ref cu2, { const char *name1, *name2; if ((ref1->die_tag =3D=3D DW_TAG_compile_unit - || ref1->die_tag =3D=3D DW_TAG_partial_unit) + || ref1->die_tag =3D=3D DW_TAG_partial_unit + || ref1->die_tag =3D=3D DW_TAG_type_unit) && (ref2->die_tag =3D=3D DW_TAG_compile_unit - || ref2->die_tag =3D=3D DW_TAG_partial_unit)) + || ref2->die_tag =3D=3D DW_TAG_partial_unit + || ref2->die_tag =3D=3D DW_TAG_type_unit)) break; if (ref1->die_tag !=3D ref2->die_tag) return 0; @@ -6023,6 +6034,7 @@ mark_refs (dw_cu_ref cu, dw_die_ref top_die, dw_die_r= ef die, int mode) while (!reft->die_root && reft->die_parent->die_tag !=3D DW_TAG_compile_unit && reft->die_parent->die_tag !=3D DW_TAG_partial_unit + && reft->die_parent->die_tag !=3D DW_TAG_type_unit && !reft->die_parent->die_named_namespace) reft =3D reft->die_parent; if ((mode & MARK_REFS_FOLLOW_DUPS) && reft->die_dup !=3D NULL= ) @@ -6342,7 +6354,7 @@ try_debug_info (DSO *dso) if (cu_version =3D=3D 5) { value =3D read_8 (ptr); - if (value !=3D DW_UT_compile && value !=3D DW_UT_partial) + if (value !=3D DW_UT_compile && value !=3D DW_UT_partial && value= =20 + !=3D DW_UT_type) error (0, 0, "%s: DWARF CU type %s unhandled", dso->filename, get_DW_UT_str (value)); } @@ -6571,6 +6583,8 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) bool present; unsigned int debug_line_off; unsigned int type_offset =3D 0; + uint64_t type_signature =3D 0; + bool isUTType =3D false; /* Note header is one bigger with DWARF version 5. */ if (ptr + (kind =3D=3D DEBUG_TYPES ? 23 : 11) > endsec) @@ -6613,12 = +6627,13 @@ read_debug_info (DSO *dso, int kind, unsigned int *die_count) if (cu_version =3D=3D 5) { value =3D read_8 (ptr); - if (value !=3D DW_UT_compile && value !=3D DW_UT_partial) + if (value !=3D DW_UT_compile && value !=3D DW_UT_partial && value= =20 + !=3D DW_UT_type) { error (0, 0, "%s: DWARF CU type %s unhandled", dso->filename, get_DW_UT_str (value)); goto fail; } + isUTType =3D (value =3D=3D DW_UT_type); } else { @@ -6760,9 +6775,9 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) } last_abbrev_offset =3D value; - if (unlikely (kind =3D=3D DEBUG_TYPES)) + if (unlikely (kind =3D=3D DEBUG_TYPES) || isUTType) { - ptr +=3D 8; + type_signature =3D read_64 (ptr); type_offset =3D read_32 (ptr); } @@ -6775,6 +6790,10 @@ read_debug_info (DSO *dso, int kind, unsigned int *d= ie_count) cu->cu_offset =3D cu_offset; cu->cu_version =3D cu_version; cu->cu_chunk =3D cu_chunk; + cu->cu_type_offset =3D type_offset; + cu->cu_type_signature =3D type_signature; + cu->isUTType =3D isUTType; + if (unlikely (op_multifile || low_mem)) cu->cu_abbrev =3D abbrev; diep =3D &cu->cu_die; @@ -6955,14 +6974,16 @@ read_debug_info (DSO *dso, int kind, unsigned int *= die_count) case DW_FORM_implicit_const: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) cu->lang =3D t->values[i]; break; case DW_FORM_data1: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) cu->lang =3D *ptr; /* FALLTHRU */ @@ -6973,7 +6994,8 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) case DW_FORM_data2: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) cu->lang =3D do_read_16 (ptr); /* FALLTHRU */ @@ -6983,7 +7005,8 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) case DW_FORM_data4: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) read_lang (ptr, form, &cu->lang); /* FALLTHRU */ @@ -6994,7 +7017,8 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) case DW_FORM_data8: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) read_lang (ptr, form, &cu->lang); /* FALLTHRU */ @@ -7009,7 +7033,8 @@ read_debug_info (DSO *dso, int kind, unsigned int *di= e_count) case DW_FORM_udata: if (lang_p && (die->die_tag =3D=3D DW_TAG_compile_unit - || die->die_tag =3D=3D DW_TAG_partial_unit) + || die->die_tag =3D=3D DW_TAG_partial_unit + || die->die_tag =3D=3D DW_TAG_type_unit) && t->attr[i].attr =3D=3D DW_AT_language) { ptr =3D read_lang (ptr, form, &cu->lang); @@ -7559,6 = +7584,7 @@ mark_singletons (dw_cu_ref cu, dw_die_ref top_die, dw_die_ref di= e, while (!reft->die_root && reft->die_parent->die_tag !=3D DW_TAG_compile_unit && reft->die_parent->die_tag !=3D DW_TAG_partial_unit + && reft->die_parent->die_tag !=3D DW_TAG_type_unit && !reft->die_parent->die_named_namespace) reft =3D reft->die_parent; if (reft->die_dup !=3D NULL || reft->die_nextdup !=3D NULL) @@ -1= 1001,6 +11027,7 @@ build_abbrevs_for_die (htab_t h, dw_cu_ref cu, dw_die_re= f die, { case DW_TAG_partial_unit: case DW_TAG_compile_unit: + case DW_TAG_type_unit: t->nattr =3D 0; die->die_size =3D 0; if (origin =3D=3D NULL) @@ -11014,7 +11041,7 @@ build_abbrevs_for_die (htab_t h, dw_cu_ref cu, dw_d= ie_ref die, die->die_size +=3D 4; t->nattr++; } - if (uni_lang_p || cu->cu_die->die_tag =3D=3D DW_TAG_compile_unit) + if (uni_lang_p || cu->cu_die->die_tag =3D=3D DW_TAG_compile_unit ||= =20 + cu->cu_die->die_tag =3D=3D DW_TAG_type_unit) { unsigned int lang_size =3D nr_bytes_for (cu->lang); die->die_size +=3D lang_size; @@ -11421,7 +11448,7 @@ compute_abbrevs (DSO *dso) enum dwarf_form intracuform =3D DW_FORM_ref4; dw_die_ref child, *lastotr, child_next, *last; unsigned int headersz =3D (cu->cu_kind =3D=3D CU_TYPES - ? 23 : (cu->cu_version >=3D 5 ? 12 : 11)); + ? 23 : (cu->cu_version >=3D 5 ?=20 + (cu->isUTType ? 24 : 12) : 11)); if (unlikely (fi_multifile) && cu->cu_die->die_remove) continue; @@ -12639,6 +12666,7 @@ write_die (unsigned char *ptr, dw_cu_ref cu, dw_die= _ref die, { case DW_TAG_partial_unit: case DW_TAG_compile_unit: + case DW_TAG_type_unit: ptr =3D write_unit_die (ptr, die, origin); break; case DW_TAG_namespace: @@ -12737,7 +12765,7 @@ static void recompute_abbrevs (dw_cu_ref cu, unsigned int cu_size) { unsigned int headersz =3D (cu->cu_kind =3D=3D CU_TYPES - ? 23 : (cu->cu_version >=3D 5 ? 12 : 11)); + ? 23 : (cu->cu_version >=3D 5 ? (cu->isUTType ?= =20 + 24 : 12) : 11)); struct abbrev_tag *t; unsigned int ndies =3D 0, intracusize, off, i; dw_die_ref *intracuarr, *intracuvec; @@ -12846,13 +12874,23 @@ write_info (unsigned int *die_count) write_16 (ptr, cu->cu_version); if (cu->cu_version >=3D 5) { - *ptr++ =3D (cu->cu_die->die_tag =3D=3D DW_TAG_compile_unit - ? DW_UT_compile : DW_UT_partial); + if (cu->cu_die->die_tag =3D=3D DW_TAG_compile_unit) + *ptr++ =3D DW_UT_compile; + else if (cu->cu_die->die_tag =3D=3D DW_TAG_type_unit) + *ptr++ =3D DW_UT_type; + else + *ptr++ =3D DW_UT_partial; write_8 (ptr, ptr_size); } write_32 (ptr, cu->u2.cu_new_abbrev_offset); if (cu->cu_version < 5) write_8 (ptr, ptr_size); + if (cu->cu_die->die_tag =3D=3D DW_TAG_type_unit) + { + write_64 (ptr, cu->cu_type_signature); + write_32 (ptr, cu->cu_type_offset); + } + ptr =3D write_die (ptr, cu, cu->cu_die, NULL, NULL, die_count); assert (info + (next_off - (wr_multifile ? multi_info_off : 0)) =3D= =3D ptr); if (unlikely (low_mem) && cu->cu_kind !=3D CU_PU) @@ -14470,6 +14508= ,7 @@ propagate_multifile_refs_backward (dw_cu_ref cu, dw_die_ref top_die, while (!reft->die_root && reft->die_parent->die_tag !=3D DW_TAG_compile_unit && reft->die_parent->die_tag !=3D DW_TAG_partial_unit + && reft->die_parent->die_tag !=3D DW_TAG_type_unit && !reft->die_parent->die_named_namespace) reft =3D reft->die_parent; if (reft->die_root) -- 2.17.1 Jakub --_002_BN9PR12MB52435B7EC2BE869F7023BC8D9AEA9BN9PR12MB5243namp_ Content-Type: application/octet-stream; name="0001-DWARFv5-Support-for-unit-type-DW_UT_type-and-DW_TAG_.patch" Content-Description: 0001-DWARFv5-Support-for-unit-type-DW_UT_type-and-DW_TAG_.patch Content-Disposition: attachment; filename="0001-DWARFv5-Support-for-unit-type-DW_UT_type-and-DW_TAG_.patch"; size=5125; creation-date="Wed, 28 Jul 2021 14:24:15 GMT"; modification-date="Wed, 28 Jul 2021 14:24:15 GMT" Content-Transfer-Encoding: base64 RnJvbSA5YjYwYWUwZDQ0NDI1Zjg3MDkxOTE5YTY1M2JhOGQ2YjZiYjU5NDExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBuaXRhY2hyYSA8Tml0aWthLkFjaHJhQGFtZC5jb20+CkRhdGU6 IFdlZCwgMjEgSnVsIDIwMjEgMTU6MzI6NDQgKzA1MzAKU3ViamVjdDogW1BBVENIXSBEV0FSRnY1 OiBTdXBwb3J0IGZvciB1bml0IHR5cGUgRFdfVVRfdHlwZSBhbmQKIERXX1RBR190eXBlX3VuaXQu CgpJbiBEd2FyZnY1LCAuZGVidWdfdHlwZXMgc2VjdGlvbiBpcyBlbGltaW5hdGVkIGFuZCBpdHMg Y29udGVudHMgYXJlCm1vdmVkIGludG8gdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uCgpUaGlzIHBh dGNoIGhhbmRsZXMgRFdfVVRfdHlwZSB1bml0cy4KCkNoYW5nZUxvZzoKCSogZHd6LmMgKHN0cnVj dCBkd19jdSk6IEFkZCBhIHR5cGUgc2lnbmF0dXJlIGZpZWxkLgoJKHRyeV9kZWJ1Z19pbmZvKTog QWRkIERXX1VUX3R5cGUgaW4gdGhlIGlmIGNvbmRpdGlvbi4KCShyZWFkX2RlYnVnX2luZm8pOiBB ZGQgRFdfVVRfdHlwZSBpbiB0aGUgaWYgY29uZGl0aW9uLgoJU2V0IHRoZSBib29sZWFuIGZsYWcg aXNfVVRfdHlwZSBpZiB0aGUgdW5pdF90eXBlIGlzCglEV19VVF90eXBlLiBSZWFkIHRoZSB0eXBl IHNpZ25hdHVyZSBmcm9tIHRoZSBoZWFkZXIuCglSZXdyaXRlIHRoZSBEV19UQUdfdHlwZV91bml0 IGFzIHBhcnRpYWwgdW5pdC4KCShidWlsZF9hYmJyZXZzX2Zvcl9kaWUpOiBDb252ZXJ0IHRoZSBE V19GT1JNX3JlZl9zaWc4CglyZWZlcmVuY2UgdG8gRFdfRk9STV9yZWZfYWRkci4KCSh3cml0ZV9k aWUpOiBXcml0ZSB0aGUgRFdfRk9STV9yZWZfYWRkciByZWZlcmVuY2UgaWYKCXRoZSBvcmlnbmFs IGZvcm0gaXMgRFdfRk9STV9yZWZfc2lnOC4gTG9vayBmb3IgdGhlCgljb21waWxhdGlvbiB1bml0 IHdpdGggdGhlIGdpdmVuIHR5cGUgc2lnbmF0dXJlIGFuZAoJd3JpdGUgdGhlIHJlZmVyZW5jZSB0 byB0aGUgZmlyc3QgZGllIGFmdGVyIHRoZSB1bml0CglkaWUuCi0tLQogZHd6LmMgfCA0NCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQs IDM5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHd6LmMgYi9k d3ouYwppbmRleCBmNzU4ZGRiLi5mYzhiZmMzIDEwMDY0NAotLS0gYS9kd3ouYworKysgYi9kd3ou YwpAQCAtOTI5LDYgKzkyOSw4IEBAIHN0cnVjdCBkd19jdQogICB1bnNpZ25lZCBpbnQgY3Vfb2Zm c2V0OwogICAvKiBEV0FSRiB2ZXJzaW9uIG9mIHRoZSBDVS4gICovCiAgIHVuc2lnbmVkIGludCBj dV92ZXJzaW9uOworICAvKiBBIHVuaXF1ZSA4LWJ5dGUgc2lnbmF0dXJlIG9mIHRoZSB0eXBlIGRl c2NyaWJlZCBpbiB0aGlzIHR5cGUgdW5pdC4gICovCisgIHVpbnQ2NF90IGN1X3R5cGVfc2lnbmF0 dXJlOwogICAvKiBDYWNoZWQgRFdfQVRfY29tcF9kaXIgdmFsdWUgZnJvbSBEV19UQUdfKl91bml0 IGN1X2RpZSwKICAgICAgb3IgTlVMTCBpZiB0aGF0IGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudC4g ICovCiAgIGNoYXIgKmN1X2NvbXBfZGlyOwpAQCAtNjQ3MSw3ICs2NDczLDcgQEAgdHJ5X2RlYnVn X2luZm8gKERTTyAqZHNvKQogICAgICAgaWYgKGN1X3ZlcnNpb24gPT0gNSkKIAl7CiAJICB2YWx1 ZSA9IHJlYWRfOCAocHRyKTsKLQkgIGlmICh2YWx1ZSAhPSBEV19VVF9jb21waWxlICYmIHZhbHVl ICE9IERXX1VUX3BhcnRpYWwpCisJICBpZiAodmFsdWUgIT0gRFdfVVRfY29tcGlsZSAmJiB2YWx1 ZSAhPSBEV19VVF9wYXJ0aWFsICYmIHZhbHVlICE9IERXX1VUX3R5cGUpCiAJICAgIGVycm9yICgw LCAwLCAiJXM6IERXQVJGIENVIHR5cGUgJXMgdW5oYW5kbGVkIiwgZHNvLT5maWxlbmFtZSwKIAkJ ICAgZ2V0X0RXX1VUX3N0ciAodmFsdWUpKTsKIAl9CkBAIC02NzAwLDYgKzY3MDIsOCBAQCByZWFk X2RlYnVnX2luZm8gKERTTyAqZHNvLCBpbnQga2luZCwgdW5zaWduZWQgaW50ICpkaWVfY291bnQp CiAgICAgICBib29sIHByZXNlbnQ7CiAgICAgICB1bnNpZ25lZCBpbnQgZGVidWdfbGluZV9vZmY7 CiAgICAgICB1bnNpZ25lZCBpbnQgdHlwZV9vZmZzZXQgPSAwOworICAgICAgdWludDY0X3QgdHlw ZV9zaWduYXR1cmUgPSAwOworICAgICAgYm9vbCBpc19VVF90eXBlID0gZmFsc2U7CiAKICAgICAg IC8qIE5vdGUgaGVhZGVyIGlzIG9uZSBiaWdnZXIgd2l0aCBEV0FSRiB2ZXJzaW9uIDUuICAqLwog ICAgICAgaWYgKHB0ciArIChraW5kID09IERFQlVHX1RZUEVTID8gMjMgOiAxMSkgPiBlbmRzZWMp CkBAIC02NzQyLDEyICs2NzQ2LDEzIEBAIHJlYWRfZGVidWdfaW5mbyAoRFNPICpkc28sIGludCBr aW5kLCB1bnNpZ25lZCBpbnQgKmRpZV9jb3VudCkKICAgICAgIGlmIChjdV92ZXJzaW9uID09IDUp CiAJewogCSAgdmFsdWUgPSByZWFkXzggKHB0cik7Ci0JICBpZiAodmFsdWUgIT0gRFdfVVRfY29t cGlsZSAmJiB2YWx1ZSAhPSBEV19VVF9wYXJ0aWFsKQorCSAgaWYgKHZhbHVlICE9IERXX1VUX2Nv bXBpbGUgJiYgdmFsdWUgIT0gRFdfVVRfcGFydGlhbCAmJiB2YWx1ZSAhPSBEV19VVF90eXBlKQog CSAgICB7CiAJICAgICAgZXJyb3IgKDAsIDAsICIlczogRFdBUkYgQ1UgdHlwZSAlcyB1bmhhbmRs ZWQiLCBkc28tPmZpbGVuYW1lLAogCQkgICAgIGdldF9EV19VVF9zdHIgKHZhbHVlKSk7CiAJICAg ICAgZ290byBmYWlsOwogCSAgICB9CisJICBpc19VVF90eXBlID0gKHZhbHVlID09IERXX1VUX3R5 cGUpOwogCX0KICAgICAgIGVsc2UKIAl7CkBAIC02ODg5LDkgKzY4OTQsOSBAQCByZWFkX2RlYnVn X2luZm8gKERTTyAqZHNvLCBpbnQga2luZCwgdW5zaWduZWQgaW50ICpkaWVfY291bnQpCiAJfQog ICAgICAgbGFzdF9hYmJyZXZfb2Zmc2V0ID0gdmFsdWU7CiAKLSAgICAgIGlmICh1bmxpa2VseSAo a2luZCA9PSBERUJVR19UWVBFUykpCisgICAgICBpZiAodW5saWtlbHkgKGtpbmQgPT0gREVCVUdf VFlQRVMpIHx8IGlzX1VUX3R5cGUpCiAJewotCSAgcHRyICs9IDg7CisJICB0eXBlX3NpZ25hdHVy ZSA9IHJlYWRfNjQgKHB0cik7CiAJICB0eXBlX29mZnNldCA9IHJlYWRfMzIgKHB0cik7CiAJfQog CkBAIC02OTA0LDYgKzY5MDksNyBAQCByZWFkX2RlYnVnX2luZm8gKERTTyAqZHNvLCBpbnQga2lu ZCwgdW5zaWduZWQgaW50ICpkaWVfY291bnQpCiAgICAgICBjdS0+Y3Vfb2Zmc2V0ID0gY3Vfb2Zm c2V0OwogICAgICAgY3UtPmN1X3ZlcnNpb24gPSBjdV92ZXJzaW9uOwogICAgICAgY3UtPmN1X2No dW5rID0gY3VfY2h1bms7CisgICAgICBjdS0+Y3VfdHlwZV9zaWduYXR1cmUgPSB0eXBlX3NpZ25h dHVyZTsKICAgICAgIGlmICh1bmxpa2VseSAob3BfbXVsdGlmaWxlIHx8IGxvd19tZW0pKQogCWN1 LT5jdV9hYmJyZXYgPSBhYmJyZXY7CiAgICAgICBkaWVwID0gJmN1LT5jdV9kaWU7CkBAIC02OTk2 LDcgKzcwMDIsMTAgQEAgcmVhZF9kZWJ1Z19pbmZvIChEU08gKmRzbywgaW50IGtpbmQsIHVuc2ln bmVkIGludCAqZGllX2NvdW50KQogCSAgICAgIG1lbXNldCAoZGllLCAnXDAnLCBvZmZzZXRvZiAo c3RydWN0IGR3X2RpZSwgZGllX2R1cCkpOwogCSAgICB9CiAJICAqZGllcCA9IGRpZTsKLQkgIGRp ZS0+ZGllX3RhZyA9IHQtPnRhZzsKKwkgIGlmICh0LT50YWcgPT0gRFdfVEFHX3R5cGVfdW5pdCkK KwkgICAgZGllLT5kaWVfdGFnID0gRFdfVEFHX3BhcnRpYWxfdW5pdDsKKwkgIGVsc2UKKwkgICAg ZGllLT5kaWVfdGFnID0gdC0+dGFnOwogCSAgZGllLT5kaWVfYWJicmV2ID0gdDsKIAkgIGRpZS0+ ZGllX29mZnNldCA9IGRpZV9vZmZzZXQ7CiAJICBpZiAocGFyZW50KQpAQCAtMTA3NTAsNiArMTA3 NTksNyBAQCBidWlsZF9hYmJyZXZzX2Zvcl9kaWUgKGh0YWJfdCBoLCBkd19jdV9yZWYgY3UsIGR3 X2RpZV9yZWYgZGllLAogCSAgICBjYXNlIERXX0ZPUk1fcmVmNDoKIAkgICAgY2FzZSBEV19GT1JN X3JlZjg6CiAJICAgIGNhc2UgRFdfRk9STV9yZWZfdWRhdGE6CisJICAgIGNhc2UgRFdfRk9STV9y ZWZfc2lnODoKIAkgICAgY2FzZSBEV19GT1JNX2luZGlyZWN0OgogCSAgICAgIGkgPSAtMlU7CiAJ ICAgICAgYnJlYWs7CkBAIC0xMTAxMCw2ICsxMTAyMCwxMyBAQCBidWlsZF9hYmJyZXZzX2Zvcl9k aWUgKGh0YWJfdCBoLCBkd19jdV9yZWYgY3UsIGR3X2RpZV9yZWYgZGllLAogCQkgIHB0ciArPSA4 OwogCQkgIGJyZWFrOwogCQljYXNlIERXX0ZPUk1fcmVmX3NpZzg6CisJCSAgaWYgKHJlZmN1LT5j dV92ZXJzaW9uID4gNCkKKwkJICAgIHsKKwkJICAgICAgdC0+YXR0cltqXS5hdHRyID0gcmVmdC0+ YXR0cltpXS5hdHRyOworCQkgICAgICB0LT5hdHRyW2orK10uZm9ybSA9IERXX0ZPUk1fcmVmX2Fk ZHI7CisJCSAgICAgIGRpZS0+ZGllX3NpemUgKz0gNDsKKwkJICAgICAgY29udGludWU7CisJCSAg ICB9CiAJCSAgcHRyICs9IDg7CiAJCSAgYnJlYWs7CiAJCWNhc2UgRFdfRk9STV9kYXRhMTY6CkBA IC0xMjY5Miw2ICsxMjcwOSwyMyBAQCB3cml0ZV9kaWUgKHVuc2lnbmVkIGNoYXIgKnB0ciwgZHdf Y3VfcmVmIGN1LCBkd19kaWVfcmVmIGRpZSwKIAkgICAgICBpbnB0ciArPSA4OwogCSAgICAgIGJy ZWFrOwogCSAgICBjYXNlIERXX0ZPUk1fcmVmX3NpZzg6CisJICAgICAgaWYgKHQtPmF0dHJbal0u Zm9ybSAhPSByZWZ0LT5hdHRyW2ldLmZvcm0pCisJCXsKKwkJICB2YWx1ZSA9IHJlYWRfNjQgKGlu cHRyKTsKKwkJICBkd19jdV9yZWYgY29tcF91bml0OworCQkgIGZvciAoY29tcF91bml0ID0gZmly c3RfY3U7IGNvbXBfdW5pdDsgY29tcF91bml0ID0gY29tcF91bml0LT5jdV9uZXh0KQorCQkgICAg eworCQkgICAgICBpZiAodmFsdWUgPT0gY29tcF91bml0LT5jdV90eXBlX3NpZ25hdHVyZSkKKwkJ CXsKKwkJCSAgdmFsdWUgPSBjb21wX3VuaXQtPmN1X25ld19vZmZzZXQgKyBjb21wX3VuaXQtPmN1 X2RpZS0+dS5wMi5kaWVfbmV3X29mZnNldAorCQkJCSAgKyBjb21wX3VuaXQtPmN1X2RpZS0+ZGll X3NpemU7CisJCQkgIGJyZWFrOworCQkJfQorCQkgICAgfQorCQkgIHdyaXRlXzMyKHB0ciwgdmFs dWUpOworCQkgIGorKzsKKwkJICBjb250aW51ZTsKKwkJfQogCSAgICAgIGlucHRyICs9IDg7CiAJ ICAgICAgYnJlYWs7CiAJICAgIGNhc2UgRFdfRk9STV9kYXRhMTY6Ci0tIAoyLjE3LjEKCg== --_002_BN9PR12MB52435B7EC2BE869F7023BC8D9AEA9BN9PR12MB5243namp_--