From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id F05DF3858429 for ; Tue, 14 May 2024 11:34:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F05DF3858429 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F05DF3858429 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715686479; cv=none; b=Lh1AAQEphzinFjthbNmWuvzDF4O8cAHySymazVJ/N4klEYqvxj0is3GR6jtUD1ETBqiXHTRqS8I9qa6D84iXi3MXnQfooX/b542dINiU8S4RlWpWrBMTTuvqzpFJoBfddd0XcqMalEWsqaOHIvJJcBfC6H/jHRmt2+bxMZTXJi8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715686479; c=relaxed/simple; bh=S7sx2l+EFhjugnWqYAg1t1g9/J95aMmSp+NyTwDb/U0=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=KOE/U2cLD1PLdRj9HwBFJ7HiFA0WEsWqqjxJN7HX3g6xpfshhVxNRGtDLycXrvD+8ftVCqBq3qpOc2/bZDa3kbOaw1NSzPRyw41rHklamrwdKxMnVnAspK/hZn2OXj9C9nW3+Q6bpZZLfaSlZ9O6tFuAJxRRhOMlJzi7rBjrnXs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 912933E9EE for ; Tue, 14 May 2024 11:34:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1715686476; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=aKS5Xe/aAFwZ7zf2x83h4iEr8GfdblPj18PGvhLbxpo=; b=fRFgQ/X9YQgPgtrk5otp+oY/2gDxt6nz8aZ4ILMrfQhZtYGTphQOPnlvDWk6iNVARGQBZV ZJdO0TwovLDfDwjW5Th6P9uJdKe7m+ljZ/e6AprMROALw/L8mXWYRxMXFEcKarUUUGaDvO /6BCqAoWYjIGjaU8ag2NhlUouoorgAc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1715686476; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=aKS5Xe/aAFwZ7zf2x83h4iEr8GfdblPj18PGvhLbxpo=; b=czGE73ZVAP+LZ879ez4Q6KPOTxaOrkIPdODXZ1ZGW+wLcmdhDCk+28BxsnhNYY7tZCA8D4 yfyKF/KomyCskpBw== Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b="fRFgQ/X9"; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=czGE73ZV DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1715686476; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=aKS5Xe/aAFwZ7zf2x83h4iEr8GfdblPj18PGvhLbxpo=; b=fRFgQ/X9YQgPgtrk5otp+oY/2gDxt6nz8aZ4ILMrfQhZtYGTphQOPnlvDWk6iNVARGQBZV ZJdO0TwovLDfDwjW5Th6P9uJdKe7m+ljZ/e6AprMROALw/L8mXWYRxMXFEcKarUUUGaDvO /6BCqAoWYjIGjaU8ag2NhlUouoorgAc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1715686476; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=aKS5Xe/aAFwZ7zf2x83h4iEr8GfdblPj18PGvhLbxpo=; b=czGE73ZVAP+LZ879ez4Q6KPOTxaOrkIPdODXZ1ZGW+wLcmdhDCk+28BxsnhNYY7tZCA8D4 yfyKF/KomyCskpBw== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 75F41137C3 for ; Tue, 14 May 2024 11:34:36 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 7pb3GkxMQ2biBwAAD6G6ig (envelope-from ) for ; Tue, 14 May 2024 11:34:36 +0000 From: Tom de Vries To: gcc-patches@gcc.gnu.org Subject: [PATCH] [debug] Fix dwarf v4 .debug_macro.dwo Date: Tue, 14 May 2024 13:35:30 +0200 Message-Id: <20240514113530.19808-1-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Score: -3.01 X-Rspamd-Action: no action X-Rspamd-Queue-Id: 912933E9EE X-Spam-Level: X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [-3.01 / 50.00]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MIME_GOOD(-0.10)[text/plain]; MX_GOOD(-0.01)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_ALL(0.00)[]; ARC_NA(0.00)[]; FROM_HAS_DN(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; PREVIOUSLY_DELIVERED(0.00)[gcc-patches@gcc.gnu.org]; RCVD_COUNT_TWO(0.00)[2]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,imap1.dmz-prg2.suse.org:helo,imap1.dmz-prg2.suse.org:rdns]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FUZZY_BLOCKED(0.00)[rspamd.com]; TO_DN_NONE(0.00)[]; DWL_DNSWL_BLOCKED(0.00)[suse.de:dkim]; MIME_TRACE(0.00)[0:+]; DKIM_TRACE(0.00)[suse.de:+] X-Spam-Status: No, score=-12.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Consider a hello world, compiled with -gsplit-dwarf and dwarf version 4, and -g3: ... $ gcc -gdwarf-4 -gsplit-dwarf /data/vries/hello.c -g3 -save-temps -dA ... In section .debug_macro.dwo, we have: ... .Ldebug_macro0: .value 0x4 # DWARF macro version number .byte 0x2 # Flags: 32-bit, lineptr present .long .Lskeleton_debug_line0 .byte 0x3 # Start new file .uleb128 0 # Included from line number 0 .uleb128 0x1 # file /data/vries/hello.c .byte 0x5 # Define macro strp .uleb128 0 # At line number 0 .uleb128 0x1d0 # The macro: "__STDC__ 1" ... Given that we use a DW_MACRO_define_strp, we'd expect 0x1d0 to be an offset into a .debug_str.dwo section. But in fact, 0x1d0 is an index into the string offset table in .debug_str_offsets.dwo: ... .long 0x34f0 # indexed string 0x1d0: __STDC__ 1 ... Add asserts that catch this inconsistency, and fix this by using DW_MACRO_define_strx instead. Tested on x86_64. PR debug/115066 --- gcc/dwarf2out.cc | 20 ++++++++++++++------ gcc/testsuite/gcc.dg/pr115066.c | 8 ++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr115066.c diff --git a/gcc/dwarf2out.cc b/gcc/dwarf2out.cc index eedb13bb069..70b7f5f42cd 100644 --- a/gcc/dwarf2out.cc +++ b/gcc/dwarf2out.cc @@ -29045,7 +29045,7 @@ output_macinfo_op (macinfo_entry *ref) && !DWARF2_INDIRECT_STRING_SUPPORT_MISSING_ON_TARGET && (debug_str_section->common.flags & SECTION_MERGE) != 0) { - if (dwarf_split_debug_info && dwarf_version >= 5) + if (dwarf_split_debug_info) ref->code = ref->code == DW_MACINFO_define ? DW_MACRO_define_strx : DW_MACRO_undef_strx; else @@ -29097,12 +29097,20 @@ output_macinfo_op (macinfo_entry *ref) HOST_WIDE_INT_PRINT_UNSIGNED, ref->lineno); if (node->form == DW_FORM_strp) - dw2_asm_output_offset (dwarf_offset_size, node->label, - debug_str_section, "The macro: \"%s\"", - ref->info); + { + gcc_assert (ref->code == DW_MACRO_define_strp + || ref->code == DW_MACRO_undef_strp); + dw2_asm_output_offset (dwarf_offset_size, node->label, + debug_str_section, "The macro: \"%s\"", + ref->info); + } else - dw2_asm_output_data_uleb128 (node->index, "The macro: \"%s\"", - ref->info); + { + gcc_assert (ref->code == DW_MACRO_define_strx + || ref->code == DW_MACRO_undef_strx); + dw2_asm_output_data_uleb128 (node->index, "The macro: \"%s\"", + ref->info); + } break; case DW_MACRO_import: dw2_asm_output_data (1, ref->code, "Import"); diff --git a/gcc/testsuite/gcc.dg/pr115066.c b/gcc/testsuite/gcc.dg/pr115066.c new file mode 100644 index 00000000000..645757df209 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr115066.c @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-skip-if "split DWARF unsupported" { hppa*-*-hpux* powerpc*-ibm-aix* *-*-darwin* } } */ +/* { dg-options "-gsplit-dwarf -g3 -dA -gdwarf-4" } */ +/* { dg-final { scan-assembler-times {\.section\t"?\.debug_macro} 1 } } */ +/* { dg-final { scan-assembler-not {\.byte\t0x5\t# Define macro strp} } } */ +/* { dg-final { scan-assembler {\.byte\t0xb\t# Define macro strx} } } */ + +#define foo 1 base-commit: 2d0eeb529d400e61197a09c56011be976dd81ef0 -- 2.35.3