From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20041.outbound.protection.outlook.com [40.107.2.41]) by sourceware.org (Postfix) with ESMTPS id 75B323857C68 for ; Tue, 9 Aug 2022 11:12:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 75B323857C68 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OoIyt1L9lQ3tyQiLwgnryBPZI3Et+mcW9R0OWL1NPK399wwtF3UUBxxkwsdMdpm4ocWRWzQAMbxiwx91iAU7eBKxm8KNqjmn02MZTUP7ylY+V7B8sCpAcZpoxV3UL4HRxt02ZMHXhVADWIRK/nyC+IyWaLrKKsjedC1d/GrNrt+6utbGEHVcle45shiifEATZZtlhgfY11CcPu1H3vpeazEAVtOxcQtnoFzOnwwTwvFadoS1gOkbqiCLWZ1Xu2YA6vUu6aEn8w97CNFgBHJ0Nt9Gjn4F2XvJhKzhFAdRwgBVfkAkgEYCfJuH4rlqg6/e5kwZXsevo0/9A3bnwdgspg== 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=Mk3hBUV3CXR/1dYBXFuMjjax4cg5gyAR7SM03y9vkxA=; b=RIWnJ18A65rLP4n5y7D9n8fgogJ19R3jcJ2zzUNAeVUm6ExLqul24Hb2UFbSh/R+kDE+EExQ6zkIoz/lI/G7tuRk2ydOn5qHFj3PmEDb7VYfhyPzIY5sNQzQYlJVH+1xkxd/PNk6Xlx8O/sdb6YleugpFBaGJr5BZ6D4qL2UwBgUl8GQPw7HzQCIoEPtqB3IB2YmDRakvLCbUrzqcSys+YYjh3684wy/6pvyFmdBzeSdrunrCBAcXDzy30uhqO0zejtbmCr3YPWg6dsuI748M9oXxBlzNDxNcY0sMjTciQM0CC1nGQ2G1aGx3qpqfY/NcrBwaf9CgrrbE2HN1L0uOg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by PAXPR04MB9185.eurprd04.prod.outlook.com (2603:10a6:102:231::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.20; Tue, 9 Aug 2022 11:12:07 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::fcd7:eaf7:5345:210f]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::fcd7:eaf7:5345:210f%6]) with mapi id 15.20.5504.019; Tue, 9 Aug 2022 11:12:05 +0000 Message-ID: Date: Tue, 9 Aug 2022 13:12:03 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.12.0 Content-Language: en-US To: Binutils From: Jan Beulich Subject: [PATCH] gas/Dwarf: properly skip zero-size functions Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0115.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a3::10) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: de52eacb-d779-4b5d-9422-08da79f7fe0e X-MS-TrafficTypeDiagnostic: PAXPR04MB9185:EE_ X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BjF6GWrF810ANbKjfW1BDoGGM5L8pKfJG2W++Q6n1NXRhzGS3H7scymv1xiHxqpHuyquScM2qNAimyx65fwX1Qvy4KZm37M7+LtvDpGeAKZLyf5aFHINshUY+PFXLvuOofkVsoBsS3JlxJGaZNQE1ZS03AdYyMkF9qBXedW6E9unQe1kuwI3fWZAbPE81o5zZKADKoill8XuinEPYNUwyEoTxlQN7u3TG7+tBntDu+05MtZeA+YiZIBSfaaWc2TMMIOTi06i1bn6NHd+fUxeAoYPdyMDdwiQfLV/TrowdcMmP/t8tEu9ATX/vlVRUwCf6E0gfW7QA/0S0B4Jyy8YCHwsCu2kTyy4v3P8JeKsMnQo6En9wt9R/NpllCrMvL3QO3cBFEDuDF1pFxdNFOWKxf4pZY9Rh2PSI0PYkMrl67R3kAPYJXyQBLFtFh0pPmjWt5Mf4lWzw1xHIvF3qVwIvMLF4qiSjsjnlOKu7ZgymDDIDLRecgUagapr3wN2ravGmPLm96bNzuhDqaC/CiykKJ49t7b3pLPea+IkYSLN2TRH0zjwEI3cGis6ZjsCX8mPs+LZQLfcu0s9SGWg6bKH9WoiJSyJtfyU1gnDVcIsQ+T+SnUMeTGE1ZRs2nBNV+ewREC8h7qkVdH/q/gqr1ylnJoMhzabzyueCYZcoEXVjg4O6CDXliFvYkJJDYUkBNzrayUEdNE1hhdPp/Pmks6svebslWkoaz6yKdWmVVV55q9q+3Kh0kMi1SMTmK01tF0g17V357wxDkCSPfMsVInSYVOlkjFVnjjDQjUnroVSJRD9PSWIGk4AbwTsTD102KkkDrmXh8gWE4FzD/OjLUJMjQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR04MB6560.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(346002)(366004)(376002)(39860400002)(396003)(136003)(83380400001)(86362001)(31696002)(38100700002)(6486002)(66476007)(478600001)(8676002)(66556008)(2906002)(66946007)(316002)(6916009)(6512007)(26005)(2616005)(6506007)(36756003)(186003)(41300700001)(31686004)(8936002)(5660300002)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OGFJUThCZlRNSW5GRUNXV2F6cDI2YXZuRW9CcWF0bGVuYk85Y0l0SGUxQ1BF?= =?utf-8?B?UGJtVklSRlV4bWNhYktoUUltaTFDMmJJQ3UyY2V0TDlkTm40WEVpVFlWd3ZJ?= =?utf-8?B?aG81dC9nVFZCdkdDQW0yUjRxYVVsU29uZkRwRWdzQjhGeG9tS1BmcXJpbmdQ?= =?utf-8?B?MmI4blJVaFBpSUFUN0hvZ1luM3dQbGpyblB6M2lhQ1hnZFNMZnhKYkgwenZR?= =?utf-8?B?b0FMczdEbTRYcGxROUcwYkFyRE80ZWltWjBzQnhPNWxGdm5nenIxb01qbE84?= =?utf-8?B?SWFDRjlKUTlJbWZFbWNxeDQ2a2d4WjlsVjdQQ0QvcnlGWjBGdWNpenNFRHlF?= =?utf-8?B?VEpvcE4wMWZZb28vVEgzZGxueFlWQmphenVGeVBXYVRDTk5QY2xUUzdoQURL?= =?utf-8?B?ZVI5OEt5TzFGdzlWanZVTitWN3JWdWhUb0p5TUhhN092SDMzRmQwaEVRcEpC?= =?utf-8?B?NEZLTDVSSkJHRm0xbHRWN0d6Q3hKamQvNkJ3cFhaQnN4bVhVSHdSa0xMQWRW?= =?utf-8?B?cEd0ajNGZXROYU1aMzR3WjgxWXZwWEwvdlBlVXo0WFJ4ZGZNc3V0QncxSEo3?= =?utf-8?B?bXJRMzhSNmRFM21zWU5Eb3IvZWFJTlZIUU5Sb0hxdVlXSW5oR2RlSGpDTkJP?= =?utf-8?B?d21IakxrMlZ1eWRBK1RrMFlzenZHVnJ4RXJoQ2FNQ0FRMjFBZG9QcnhmWWVv?= =?utf-8?B?UzhqQnRqNzF4NmtncGFHWm5PV2MyeEZDQ3FpREZRRDdUUHpTVU5FMlhybFcx?= =?utf-8?B?SUFMcXpsVWdnL3RkcTEzZVhnbStQOUg5cm5zQ21ueWs4OXhReDhvOUJzSVJr?= =?utf-8?B?ZFc1U2Y1QXpZSlFQdVU2ZEpoR3RoM3g5RGpyNnZGOUoxZElIbC9qM2M4WGlx?= =?utf-8?B?NllOeWplRE85TkQxTnViNXVjYm84anRtNzVSblQzQzVJVXdUVFZ1V0tSa0Nu?= =?utf-8?B?UXQ3V2tjeEVVVkIvek9hdHEwa2haRnBGeGY3VVJkeXdoZnEwdzV3ZFdPdGtD?= =?utf-8?B?Sk1RdCt6UkVHS1R2bUIyVXlMeG83R3hKVWRYMHh2a1EvL0xKeTg2R2NxK0xM?= =?utf-8?B?SXIxNkRhbVpGbUFaMmRjWURFRnBKdXJhMWJYY0g5NHdYZ3ROdTVzTVlUck8z?= =?utf-8?B?dUZ3R3JjWjc2NENJKzkvS1dRODMwVjZYQUJZSXZMdE5PNC9qTmZpamdCbDNH?= =?utf-8?B?WXR5WFNXWTRVUGpEZjNNZVQ3MUFndk4xVXZLL3pqL3RJemFiR1o3R3FkU2JD?= =?utf-8?B?ZmcwT0NweUlyMzNmUXgxN3F5Y3lNdW9xU1dRRDFRcW1VUm1nMGMzU28vWk5Y?= =?utf-8?B?cUJRcEl2QTFOSG9TVHdRQy9QTGwvSm0wQzBpSXUxM1o2UmpERUp6dlZEL2Jy?= =?utf-8?B?MHY0aTJWTXpncXVnamNqZHRKYk1LcURWcGNHUFpsaWRmdnlOTzVXWlc4VWpG?= =?utf-8?B?NEZJcy9KemxhaEwzZWtqNTBmN0lXV0JERXN2TVBRbEFPVFlMREhWS0RkaUt2?= =?utf-8?B?TGtsMzNRb3RrNU5GOGhnTmNDclRiTURiSkxsY0MvWGRwRFdhNEJ1LytINDZq?= =?utf-8?B?T1kyM2JaYjVrUmNENHNQYWw2ZHRCaVRVMFlBc0J4eUZ1NStoNVdwb1M0Qmdi?= =?utf-8?B?RC83U0FJcDczSC96SGo5dTNoY2tyazlBYUo2WGx0S2R6NTBHd1hXL1Q4STFm?= =?utf-8?B?WEdTOURQSXphTExwcHphSjE2VVZidGtETkJFTGVBbEtxcTcrOGQ0N2ZoMVVv?= =?utf-8?B?NE5rcHMrekFHKzFObmRKUmJqdVdOYUJ0Wi9SMEZsd3lvWWQ4RmhrZngvRkJm?= =?utf-8?B?aENPdkZYcUkydjZ2MU43SlNyVlREWGw0NXhXcUNPQ2hwSXFQbnZWUXNsM3FK?= =?utf-8?B?RGE2MjBmbFpiSFdVaVMxM201OWZVNGkxT1RLR2ZrTE9GbWZ2VXdUYXdQakQ4?= =?utf-8?B?YXp0eEZ0R1NaSlVPUTB6U3ljeUNLY2E0TVNkL21sRU1mTE5nV3NjQTd1ZmtB?= =?utf-8?B?RVFVSitDeldYZVIrNk91RnVjdEdVU3c1Nno1Q1phOWY3ZXBJY0wxVElVOFVu?= =?utf-8?B?c2V2ZHMyYnkxRUZTZ2F3bEVwNmJkbklmeFIrd1ZQVzVZNmJYUXZvM2dPLzNa?= =?utf-8?Q?RDdOKAnz4M1Nx+9dZtDcgAqHo?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: de52eacb-d779-4b5d-9422-08da79f7fe0e X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Aug 2022 11:12:05.4628 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: h4F/YDqt1BT7tukJfXnrjrQVStmu0xhyu3RRkda2q6uiG4kY6SF1nemllNMLyQ+T7zOIX32jk24XHKuKciCGpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR04MB9185 X-Spam-Status: No, score=-3030.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, 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-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: Tue, 09 Aug 2022 11:12:11 -0000 PR gas/29451 While out_debug_abbrev() properly skips such functions, out_debug_info() mistakenly didn't. It needs to calculate the high_pc expression ahead of time, in order to skip emitting any data for the function if the value is zero. The one case which would still leave a zero-size entry is when symbol_get_obj(symp)->size ends up evaluating to zero. I hope we can expect that to not be the case, otherwise we'd need to have a way to post-process .debug_info contents between resolving expressions and actually writing the data out to the file. Even then it wouldn't be entirely obvious in which way to alter the data. --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -2882,6 +2882,7 @@ out_debug_info (segT info_seg, segT abbr { const char *name; size_t len; + expressionS size = { .X_op = O_constant }; /* Skip warning constructs (see above). */ if (symbol_get_bfdsym (symp)->flags & BSF_WARNING) @@ -2895,6 +2896,18 @@ out_debug_info (segT info_seg, segT abbr if (!S_IS_DEFINED (symp) || !S_IS_FUNCTION (symp)) continue; +#if defined (OBJ_ELF) /* || defined (OBJ_MAYBE_ELF) */ + size.X_add_number = S_GET_SIZE (symp); + if (size.X_add_number == 0 && IS_ELF + && symbol_get_obj (symp)->size != NULL) + { + size.X_op = O_add; + size.X_op_symbol = make_expr_symbol (symbol_get_obj (symp)->size); + } +#endif + if (size.X_op == O_constant && size.X_add_number == 0) + continue; + subseg_set (str_seg, 0); name_sym = symbol_temp_new_now_octets (); name = S_GET_NAME (symp); @@ -2920,29 +2933,17 @@ out_debug_info (segT info_seg, segT abbr emit_expr (&exp, sizeof_address); /* DW_AT_high_pc */ - exp.X_op = O_constant; -#if defined (OBJ_ELF) /* || defined (OBJ_MAYBE_ELF) */ - exp.X_add_number = S_GET_SIZE (symp); - if (exp.X_add_number == 0 && IS_ELF - && symbol_get_obj (symp)->size != NULL) - { - exp.X_op = O_add; - exp.X_op_symbol = make_expr_symbol (symbol_get_obj (symp)->size); - } -#else - exp.X_add_number = 0; -#endif if (DWARF2_VERSION < 4) { - if (exp.X_op == O_constant) - exp.X_op = O_symbol; - exp.X_add_symbol = symp; - emit_expr (&exp, sizeof_address); + if (size.X_op == O_constant) + size.X_op = O_symbol; + size.X_add_symbol = symp; + emit_expr (&size, sizeof_address); } - else if (exp.X_op == O_constant) - out_uleb128 (exp.X_add_number); + else if (size.X_op == O_constant) + out_uleb128 (size.X_add_number); else - emit_leb128_expr (symbol_get_value_expression (exp.X_op_symbol), 0); + emit_leb128_expr (symbol_get_value_expression (size.X_op_symbol), 0); } /* End of children. */