]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
debug/111409 - don't generate COMDAT macro sections for split DWARF
authorOmar Sandoval <osandov@osandov.com>
Thu, 14 Sep 2023 06:41:22 +0000 (23:41 -0700)
committerRichard Biener <rguenther@suse.de>
Wed, 20 Sep 2023 06:02:56 +0000 (08:02 +0200)
Split DWARF files aren't processed by the linker, so DW_MACRO_import
offsets aren't relocated and the .debug_macro.dwo sections aren't
deduplicated and merged.  There's no clear way for this to work for
split DWARF, so disable it.

gcc/ChangeLog:

PR debug/111409
* dwarf2out.cc (output_macinfo): Don't call optimize_macinfo_range if
dwarf_split_debug_info.

gcc/testsuite/ChangeLog:

PR debug/111409
* gcc.dg/pr111409.c: New test.

gcc/dwarf2out.cc
gcc/testsuite/gcc.dg/pr111409.c [new file with mode: 0644]

index c4a935d5101b4fe32a4a2aca0f776a6a3ec18ac9..f60a0656d8fe23028d3817e9b2ab893a6840f7ba 100644 (file)
@@ -29247,6 +29247,7 @@ output_macinfo (const char *debug_line_label, bool early_lto_debug)
        case DW_MACINFO_define:
        case DW_MACINFO_undef:
          if ((!dwarf_strict || dwarf_version >= 5)
+             && !dwarf_split_debug_info
              && HAVE_COMDAT_GROUP
              && vec_safe_length (files) != 1
              && i > 0
diff --git a/gcc/testsuite/gcc.dg/pr111409.c b/gcc/testsuite/gcc.dg/pr111409.c
new file mode 100644 (file)
index 0000000..1a79d81
--- /dev/null
@@ -0,0 +1,7 @@
+/* { dg-do compile } */
+/* { dg-skip-if "split DWARF unsupported" { *-*-darwin* } } */
+/* { dg-options "-gsplit-dwarf -g3 -dA" } */
+/* { dg-final { scan-assembler-times {.section\s+.debug_macro} 1 } } */
+/* { dg-final { scan-assembler-not {.byte\s+0x7\s*#\s*Import} } } */
+
+#define foo 1