[fpc-devel] .long values in DWARF Symbols

Michael Ring mail at michael-ring.org
Mon May 23 17:51:40 CEST 2016


I have started again to work on pic32 (mipsel-embedded) target and found 
an issue in the Dwarf Debug Info:


(Please also refer to this old discussion on the problem: 
http://lists.freepascal.org/fpc-devel/2013-July/032447.html )

The problem is that .long should be replaced with .4byte for debug 
symbols to be correctly interpreted on mips. I manually replaced all 
.long with .4bytes in system.s and can now do symbolic debugging of the 
startup code

There wrong entries always follow the pattern that they include an 
offset the the varname:

Example:

# Symbol THREADID

         .long   U_$SYSTEM_$$_THREADID+4

--> wrong, offset is "+4"


# Symbol UTF8COMPARELOCALE
         .4byte  U_$SYSTEM_$$_UTF8COMPARELOCALE

--> no offset, correct


Can anybody help?

Michael

# Symbol UTF8COMPARELOCALE
         .uleb128        3
         .ascii  "UTF8COMPARELOCALE\000"
         .byte   1
         .byte   5
         .byte   3
         .4byte  U_$SYSTEM_$$_UTF8COMPARELOCALE
         .4byte  DBG_$SYSTEM_$$_WORD
# Symbol THREADID
         .uleb128        3
         .ascii  "THREADID\000"
         .byte   1
         .byte   5
         .byte   3
         .long   U_$SYSTEM_$$_THREADID+4
         .4byte  DBG_$SYSTEM_$$_LONGINT
# Symbol ERROUTPUT
         .uleb128        3
         .ascii  "ERROUTPUT\000"
         .byte   1
         .byte   5
         .byte   3
         .long   U_$SYSTEM_$$_ERROUTPUT+4
         .4byte  DBG_$SYSTEM_$$_TEXT




More information about the fpc-devel mailing list