[LLVMdev] [cfe-dev] Debug information on multiple files

Jonas Maebe jonas.maebe at elis.ugent.be
Thu Aug 26 01:56:56 PDT 2010


On 25 Aug 2010, at 23:11, Renato Golin wrote:

> As far as I understood, there is nothing wrong with the way clang
> deals with stmt_list. The encoding is correct (AFAIK) and the offsets
> are always zero in every object file, as there is only one line table
> and one debug_info.

Are you taking into account the relocation information? Use "objdump - 
Dr" on an the object file compiled by gcc -gdwarf-2, and you will see  
something like this (on x86-64):

0000000000000000 <.debug_info>:
    0:   aa                      stos   %al,%es:(%rdi)
    1:   00 00                   add    %al,(%rax)
    3:   00 02                   add    %al,(%rdx)
    5:   00 00                   add    %al,(%rax)
                         6: R_X86_64_32  .debug_abbrev
    7:   00 00                   add    %al,(%rax)
    9:   00 08                   add    %cl,(%rax)
    b:   01 00                   add    %eax,(%rax)
                         c: R_X86_64_32  .debug_line

Note the R_X86_64_32 relocations. At link time, these relocations will  
be replaced by the absolute address of the symbol/section they point  
to (limited to 32 bits), added to the value stored in the object file.

With Clang, these relocations will be missing and hence the linker  
will just copy the data.


Jonas





More information about the llvm-dev mailing list