[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): 

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-" 

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


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