[fpc-devel] Bug: Alignment issue with dwarf debug_info on mipsel(-embedded)?? code

Michael Ring mail at michael-ring.org
Sun Jul 7 11:00:55 CEST 2013

I guess this applies at least to all dwarf related code in mips targets. 
I found the following post:


there the author says:

A brief look at the contents of your .debug_info section reveals
non-standard usage of platform-specific GAS directives to emit DWARF-2
records.  You should be using .2byte, .4byte, etc., that have been
invented specifically for DWARF records, rather than .short, .long, etc.,
whose behaviour (size, alignment) is target-dependent.

also, .2byte and .4byte and .8byte are already (kind of) implemented in 

       { Generic unaligned pseudo-instructions, seems ELF specific }
       use_ua_elf_systems = 
       ait_ua_elf_const2str : 
         of string[20]=(

Am 07.07.13 09:26, schrieb Florian Klämpfl:
> Am 05.07.2013 22:23, schrieb Michael Ring:
>> I have now found out why debug symbols get discarded by
>> pic32mx-elf32-gdb. The problem is a bug  in the generation of
>> dwarf-debuginfo. My guess is that the problem should also exist in linux
>> target.
>> For mips unaligned data in dward debug info needs to be defined as
>> .4byte and .2byte instead of .long and .short.
>> This is implemented in most places but it seems not everywhere.
>> When I compile this program:
>> program hello;
>> var
>>    i : integer;
>> begin
>> end.
>> the symbol I has one entry with .long, the resulting binary does not
>> load in gdb with the error-message: Dwarf Error: wrong version in
>> compilation unit header (is 10752, should be 2, 3, or 4)
>> # Syms - Begin Staticsymtable
>> # Symbol SYSTEM
>> # Symbol OBJPAS
>> # Symbol PIC32MX2XXFXXXC
>> # Symbol HELLO
>> # Symbol main
>> # Symbol I
>>          .uleb128        2
>>          .ascii  "I\000"
>>          .byte   5
>>          .byte   3
>>          .long   U_$P$HELLO_$$_I
>>          .4byte  _$HELLO$_Ld1
>> # Syms - End Staticsymtable
>> when I replace the '.long' with '.4byte' and recompile then the
>> resulting hello.elf loads fine into gdb. I could see before with readelf
>> that the dwarf info was misaligned compared to the dwarf imfo when I
>> compile the same code for arm-embedded
>> Can anybody help with a fix?
> Do I understand it correctly, that it is sufficient so replace .long by
> .4byte and .short by .2byte at all locations? Does it apply to all targets?
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20130707/7907420f/attachment.html>

More information about the fpc-devel mailing list