[PATCH] Set correct source location for deallocator calls

Dehao Chen dehao@google.com
Sat Sep 15 16:09:00 GMT 2012


I tried the up-to-date addr2line on any "gcc -g" generated code, it
does not work either. This is because in the new dwarf, the
DW_AT_high_pc now actually means the size. e.g.

 <1><9b>: Abbrev Number: 2 (DW_TAG_subprogram)
    <9c>   DW_AT_external    : 1	
    <9c>   DW_AT_name        : bar	
    <a0>   DW_AT_decl_file   : 1	
    <a1>   DW_AT_decl_line   : 8	
    <a2>   DW_AT_linkage_name: (indirect string, offset: 0x7b): _Z3barv	
    <a6>   DW_AT_type        : <0x8d>	
    <aa>   DW_AT_low_pc      : 0x400583	
    <b2>   DW_AT_high_pc     : 0x37 0x0	
    <ba>   DW_AT_frame_base  : 1 byte block: 9c 	(DW_OP_call_frame_cfa)
    <bc>   DW_AT_GNU_all_call_sites: 1	
    <bc>   DW_AT_sibling     : <0xff>	

However, addr2line still thinks DW_AT_high_pc means "high_pc". I think
we should wait for binutil to catch up with gcc.

Thanks,
Dehao

On Sat, Sep 15, 2012 at 8:55 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Fri, Sep 14, 2012 at 9:27 PM, Andrew Pinski <pinskia@gmail.com> wrote:
>> On Fri, Sep 14, 2012 at 9:25 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
>>> On Sat, Sep 8, 2012 at 2:42 PM, Dehao Chen <dehao@google.com> wrote:
>>>> Hi,
>>>>
>>>> I've added a libjava unittest which verifies that this patch will not
>>>> break Java debug info. I've also incorporated Richard's review in the
>>>> previous mail. Attached is the new patch, which passed bootstrap and
>>>> all gcc/libjava testsuites on x86.
>>>>
>>>> Is it ok for trunk?
>>>>
>>>> Thanks,
>>>> Dehao
>>>>
>>>> gcc/ChangeLog:
>>>> 2012-09-08  Dehao Chen  <dehao@google.com>
>>>>
>>>>          * tree-eh.c (goto_queue_node): New field.
>>>>         (record_in_goto_queue): New parameter.
>>>>         (record_in_goto_queue_label): New parameter.
>>>>         (lower_try_finally_dup_block): New parameter.
>>>>         (maybe_record_in_goto_queue): Update source location.
>>>>         (lower_try_finally_copy): Likewise.
>>>>         (honor_protect_cleanup_actions): Likewise.
>>>>         * gimplify.c (gimplify_expr): Reset the location to unknown.
>>>>
>>>> gcc/testsuite/ChangeLog:
>>>> 2012-09-08  Dehao Chen  <dehao@google.com>
>>>>
>>>>         * g++.dg/debug/dwarf2/deallocator.C: New test.
>>>>
>>>> libjava/ChangeLog:
>>>> 2012-09-08  Dehao Chen  <dehao@google.com>
>>>>
>>>>         * testsuite/libjava.lang/sourcelocation.java: New cases.
>>>>         * testsuite/libjava.lang/sourcelocation.out: New cases.
>>>
>>> On Linux/x86, I got
>>>
>>> FAIL: sourcelocation -O3 -findirect-dispatch output - source compiled test
>>> FAIL: sourcelocation -O3 output - source compiled test
>>> FAIL: sourcelocation -findirect-dispatch output - source compiled test
>>> FAIL: sourcelocation output - source compiled test
>>>
>>> spawn [open ...]^M
>>> -1
>>> -1
>>> -1
>>> PASS: sourcelocation -findirect-dispatch execution - source compiled test
>>> FAIL: sourcelocation -findirect-dispatch output - source compiled test
>>
>> I bet you have an older addr2line installed.
>>
>
> I am using  addr2line from binutils 20120914.
>
>
> --
> H.J.



More information about the Java mailing list