This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed] dwarf2out.c patch to handle subroutines with disjointblocks


This fixes PR 20268, which is a complaint about the debug info emitted
for inlined subroutines when optimizing.  Instruction scheduling and
other optimizations can cause an inlined subroutine to be split into
multiple disjoint address ranges.  We were only emitting debug info for
one of these address ranges, which led to confusing output from
addr2line.

This problem can be solved by using DW_AT_ranges instead of
DW_AT_high_pc and DW_AT_low_pc.  We were already doing this for lexical
blocks.  This patch extracts the code for this from the lexical block
support, and then uses it for both lexical blocks and inlined subroutine
blocks.

This doesn't do much useful without extra binutils and/or gdb support. 
The binutils support has already been implemented, and is awaiting
review.  See
    http://sources.redhat.com/bugzilla/show_bug.cgi?id=806

This was tested with an ia64-linux bootstrap and make check.  There were
no regressions.  This was also tested with an x86_64-linux gdb make
check.  There were no regressions.  (The ia64-linux gdb make check had
too many failures to be useful as a regression check.)

I have added this patch to mainline.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com

Attachment: patch.inline.at-ranges
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]