[fpc-devel] Bug: Alignment issue with dwarf debug_info on mipsel(-embedded)?? code
Michael Ring
mail at michael-ring.org
Fri Jul 5 22:23:30 CEST 2013
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?
Michael
More information about the fpc-devel
mailing list