diff options
author | Jakub Jelinek <jakub@redhat.com> | 2021-03-02 18:25:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2021-03-02 18:25:45 +0100 |
commit | 5a233ae4d8c978a3c863c8199d6c3050389a84d1 (patch) | |
tree | f850f62980437e2caaf2c4383ca815d495065871 /libcpp/line-map.c | |
parent | 168b75ff54b4e70650b8709816edff13f93e737a (diff) | |
download | gcc-5a233ae4d8c978a3c863c8199d6c3050389a84d1.zip gcc-5a233ae4d8c978a3c863c8199d6c3050389a84d1.tar.gz gcc-5a233ae4d8c978a3c863c8199d6c3050389a84d1.tar.bz2 |
dwarf2out: Fix up split-dwarf .debug_macro handling [PR99319]
The -gsplit-dwarf changes came a few months after .debug_macro
and the r0-120109 changes just changed the 2nd operand of
DW_MACRO_GNU_{define,undef}_indirect from the usual .debug_str
section offset argument to leb128 index into .debug_str_offsets
without changing the opcodes.
DWARF5 standardized different opcodes for those, but GCC hasn't been changed
yet for that.
This patch starts using DW_MACRO_define_strx and DW_MACRO_undef_strx
instead of DW_MACRO_define_strp and DW_MACRO_undef_strp when -gsplit-dwarf
-gdwarf-5 -g3. I'm not sure what to do if anything with the -gdwarf-4
-gsplit-dwarf -g3 -gno-strict-dwarf case, we've been emitting it that way
for 8 years and it is an extension, so presumably the consumers that cared
have already hacks to handle DW_MACRO_GNU_{define,undef}_indirect
differently in .debug_macro 4 sections depending on if it is
.debug_macro.dwo or .debug_macro.
Another change the patch does is that it will use
DW_MACRO_{define,undef}_str{p,x} even with -gdwarf-5 -gstrict-dwarf -g3,
for DWARF 4 we were doing that only for -gno-strict-dwarf as we've emitted
.debug_macro section only in that case.
2021-03-02 Jakub Jelinek <jakub@redhat.com>
PR debug/99319
* dwarf2out.c (output_macinfo_op): Use DW_MACRO_*_str* even with
-gdwarf-5 -gstrict-dwarf. For -gsplit-dwarf -gdwarf-5 use
DW_MACRO_*_strx instead of DW_MACRO_*_strp. Handle
DW_MACRO_define_strx and DW_MACRO_undef_strx.
(save_macinfo_strings): Use DW_MACRO_*_str* even with
-gdwarf-5 -gstrict-dwarf. Handle DW_MACRO_define_strx and
DW_MACRO_undef_strx.
Diffstat (limited to 'libcpp/line-map.c')
0 files changed, 0 insertions, 0 deletions