[fpc-devel] Bug: Alignment issue with dwarf debug_info on mipsel(-embedded)?? code
Michael Ring
mail at michael-ring.org
Sat Jul 6 19:30:34 CEST 2013
I have now commited my work to svn on the branch mips_embedded so that
it is easier to reproduce the problem.
For building the target you need to install binutils for pic32mx from
here: https://github.com/chipKIT32/chipKIT-cxx/tree/master/src45x/binutils
Instructions for building the toolchain (only binutils is needed):
https://github.com/chipKIT32/chipKIT-cxx/wiki/HOWTO-Build-the-toolchain
currently xc32 binutils from microchip do not work. latest binutils work
mostly but they cannot create .hex files
To build use the following commandline:
make clean buildbase CROSSINSTALL=1 OS_TARGET=embedded CPU_TARGET=mipsel
SUBARCH=pic32mx OPT="" CROSSOPT="-O-" BINUTILSPREFIX=pic32mx-elf32-
and then
sudo make installbase CROSSINSTALL=1 OS_TARGET=embedded
CPU_TARGET=mipsel SUBARCH=pic32mx OPT="" CROSSOPT="-O-"
BINUTILSPREFIX=pic32mx-elf32-
to compile use:
ppcrossmipsel -MObjFPC -Scghi -Ch1024 -Cs1024 -Tembedded -Pmipsel -gw2
-vewnhix -l -Cppic32mx -WpPIC32MX220F032C -XPpic32mx-elf32-
-FD/usr/local/bin -a -godwarfsets -godwarfmethodclassprefix hello.pas
-al -ar
Michael
Am 05.07.13 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?
>
> Michael
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
More information about the fpc-devel
mailing list