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

Florian Klämpfl florian at freepascal.org
Sun Jul 7 09:26:56 CEST 2013


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?




More information about the fpc-devel mailing list