[llvm-commits] Change DwarfUsesAbsoluteLabelForStmtList to false for X86ELFMCAsmInfo.

Jan Sjodin jan_sjodin at yahoo.com
Tue Mar 8 08:46:52 PST 2011


Ping!

- Jan



----- Original Message ----
> From: Jan Sjodin <jan_sjodin at yahoo.com>
> To: Anton Korobeynikov <anton at korobeynikov.info>
> Cc: llvm-commits at cs.uiuc.edu
> Sent: Sat, February 26, 2011 9:40:31 AM
> Subject: Re: [llvm-commits] Change DwarfUsesAbsoluteLabelForStmtList to false 
>for X86ELFMCAsmInfo.
> 
> 
> 
> 
> ----- Original Message ----
> > From: Anton Korobeynikov <anton at korobeynikov.info>
> >  To: Jan Sjodin <jan_sjodin at yahoo.com>
> > Cc: llvm-commits at cs.uiuc.edu
> >  Sent: Sat, February 26, 2011 7:36:00 AM
> > Subject: Re: [llvm-commits]  Change DwarfUsesAbsoluteLabelForStmtList to 
>false 
>
> >for  X86ELFMCAsmInfo.
> > 
> > Hello Jan,
> > 
> > > Dwarfdump  gives an error and gdb fails when generating  code in memory 
>(but
> >  > happens to accept it in a .o file) in Linux  when
> > >  DwarfUsesAbsoluteLabelForStmtList = true, this patch sets it to  false to 

> fix
> > > this issue. I don't know if this is true for other  targets,  but the 
>change 
>
> >is
> > > limited to  X86ELFMCAsmInfo.
> > How the patch was  tested? How we might be sure  this won't break non JIT 
>case?
> > 
> > -- 
> > With  best  regards, Anton Korobeynikov
> > Faculty of Mathematics and Mechanics,  Saint  Petersburg State University
> >
> 
> The question you are  really asking is if there is a bug in dwarfdump or a bug 
>in 
>
> llvm, because  dwarfdump always complains. I tried this on Linux 64-bit with 
> clang and llvm  trunk:
> 
> file  empty.c:
> ---------------------------------------------------------------
> 
> int  main()
> {
>   return  42;
> }
> ---------------------------------------------------------------
> 
> Compile  and run  dwarfdump:
> ---------------------------------------------------------------
> >  clang -c -g -emit-llvm -o empty.bc empty.c
> > llc -filetype=obj  empty.bc
> > dwarfdump empty.o 
> 
> .debug_info
> 
> COMPILE_UNIT<header overall offset =  0>:
> <0><   11>    DW_TAG_compile_unit
>          DW_AT_producer               clang version 2.9 (trunk 126545)
>          DW_AT_language               DW_LANG_C99
>         DW_AT_name                   empty.c
>          DW_AT_entry_pc              0x0
>          DW_AT_stmt_list              0x0
>         DW_AT_comp_dir                
>/home/jsjodin/Work/LLVM/Sandboxes/TOT/test
> 
> LOCAL_SYMBOLS:
> <1><   114>    DW_TAG_base_type
>          DW_AT_encoding               DW_ATE_signed
>         DW_AT_name                   int
>          DW_AT_byte_size              4
> <1><  121>    DW_TAG_subprogram
>          DW_AT_name                   main
>         DW_AT_decl_file              1
>         DW_AT_decl_line              2
>          DW_AT_type                   <114>
>         DW_AT_external               yes(1)
>          DW_AT_low_pc                 0x0
>         DW_AT_high_pc                0xe
>         DW_AT_frame_base             DW_OP_reg7
> AT of 16359 (0x3fe7) is unknown  to dwarfdump. Continuing. 
>         <Unknown AT value  0x3fe7>   yes(1)
> 
> .debug_line: line number info for a single  cu
> dwarfdump ERROR:  dwarf_srclines:  DW_DLE_ATTR_FORM_BAD  (114)
> ---------------------------------------------------------------
> 
> dwarfdump  cleary doesn't like what llc has produced. With the patch applied we 
>
> try  again:
> 
> ---------------------------------------------------------------
> .debug_info
> 
> COMPILE_UNIT<header  overall offset = 0>:
> <0><   11>     DW_TAG_compile_unit
>         DW_AT_producer               clang version 2.9 (trunk 126545)
>          DW_AT_language               DW_LANG_C99
>         DW_AT_name                   empty.c
>          DW_AT_entry_pc              0x0
>          DW_AT_stmt_list              0
>         DW_AT_comp_dir                
>/home/jsjodin/Work/LLVM/Sandboxes/TOT/test
> 
> LOCAL_SYMBOLS:
> <1><   110>    DW_TAG_base_type
>          DW_AT_encoding               DW_ATE_signed
>         DW_AT_name                   int
>          DW_AT_byte_size              4
> <1><  117>    DW_TAG_subprogram
>          DW_AT_name                   main
>         DW_AT_decl_file              1 
> /home/jsjodin/Work/LLVM/Sandboxes/TOT/test/empty.c
>          DW_AT_decl_line             2
>          DW_AT_type                   <110>
>         DW_AT_external               yes(1)
>          DW_AT_low_pc                 0x0
>         DW_AT_high_pc                0xe
>         DW_AT_frame_base             DW_OP_reg7
> AT of 16359 (0x3fe7) is unknown  to dwarfdump. Continuing. 
>         <Unknown AT value  0x3fe7>   yes(1)
> 
> .debug_line: line number info for a single  cu
> Source lines (from CU-DIE at .debug_info offset  11):
> <source>    [row,column]    <pc>     //<new statement or basic  block
> /home/jsjodin/Work/LLVM/Sandboxes/TOT/test/empty.c:     [  2,-1]    0x0    // 
>new 
>
> statement
> /home/jsjodin/Work/LLVM/Sandboxes/TOT/test/empty.c:     [  3, 3]    0xd    // 
>new 
>
> statement
> /home/jsjodin/Work/LLVM/Sandboxes/TOT/test/empty.c:     [  3, 3]    0xe    // 
>new 
>
> statement     // end of text sequence
> 
> .debug_pubnames
> global main             die-in-sect 117, cu-in-sect 11, die-in-cu  117, 
> cu-header-in-sect 0
> 
> .debug_macinfo
> 
> .debug_loc format  <i o b e l> means index section-offset begin-addr end-addr 
> length-of-block-entry
> 
> .debug_abbrev
> <   1><     0><code:  1> DW_TAG_compile_unit DW_children_yes
>        <    3>    DW_AT_producer               DW_FORM_string
>        <    5>    DW_AT_language               DW_FORM_data2
>       <     7>    DW_AT_name                   DW_FORM_string
>       <     9>    DW_AT_entry_pc               DW_FORM_addr
>       <   11>     DW_AT_stmt_list              DW_FORM_data4
>       <   13>     DW_AT_comp_dir               DW_FORM_string
> <   2><   17><code:  2>  DW_TAG_base_type    DW_children_no
>       <    20>    DW_AT_encoding               DW_FORM_data1
>       <   22>     DW_AT_name                   DW_FORM_string
>       <   24>     DW_AT_byte_size              DW_FORM_data1
> <   3><   28><code:  3>  DW_TAG_subprogram   DW_children_no
>       <    31>    DW_AT_name                   DW_FORM_string
>       <   33>     DW_AT_decl_file              DW_FORM_data1
>       <   35>     DW_AT_decl_line              DW_FORM_data1
>       <   37>     DW_AT_type                   DW_FORM_ref4
>       <   39>     DW_AT_external               DW_FORM_flag
>       <   41>     DW_AT_low_pc                 DW_FORM_addr
>       <   43>     DW_AT_high_pc                DW_FORM_addr
>       <   45>     DW_AT_frame_base             DW_FORM_block1
>       <   47>    AT of  16359 (0x3fe7) is unknown to dwarfdump. Continuing. 
> <Unknown AT value  0x3fe7>   DW_FORM_flag
> <   4><    52><code:  0> null .debug_abbrev  entry
> 
> .debug_string
> 
> .debug_aranges
> 
> .debug_frame
> 
> fde:
> <   0><0x0:0xe><main><fde offset 0x14 length: 0x14><eh  offset none>
>     0x00000000:    <off cfa=08(r7)  > <off r16=-8(cfa) > 
> 
> .debug_static_func
> 
> .debug_static_vars
> 
> .debug_pubtypes
> 
> .debug_weaknames
> ---------------------------------------------------------------
> 



More information about the llvm-commits mailing list