[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