Op 30-06-18 om 21:51 schreef Christo:
I'm trying to figure out how to fix bug 33914. This bug causes gdb to read 
variable addresses
from flash, not RAM.  Looking at the DWARF info, the address of a variable is 
written as a word,
while gdb expects a prefixed address ($800000 + address) to indicate a RAM 
address, so the size
of the address needs to be larger than 16 bits.  In dbgdwarf.pas it appears as 
if the size of
addresses are taken from pint/puint in globtype.pas and aitconst_ptr_unaligned 
in aasmtai.pas,
all of which are 16 bit sizes for AVR.

Of course all instances pint/puint types and aitconst_ptr_unaligned constants 
are appended with
"_d" as part of this indirection.  A patch with this approach is attached to 
the bug report.

This appears to work correctly, but I'm not sure this is an elegant way of 
fixing the problem.
Any comments or hints on how to fix the issue more elegantly?

Has been a long time ago, but my guess is that in some DWARF-header there is an offset for the memory-locations. (The unit-info maybe?)

You should have a look at the Dwarf-specs. And maybe have a look at other platforms, what is generated there.

Regards,

Joost.


_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to