[Mono-devel-list] [PATCH][RFC] debugger: 32 bit address bug

Hans Kratz kratz at omnicore.com
Tue Jun 7 10:45:02 EDT 2005


Addresses are communicated from the Mono VM as a platform-specific 
pointer, however Mono.Debugger.TargetBinaryReader.PeekAddress() and 
ReadAddress() read the pointer as a 32 bit *signed* int on 32 bit 
architectures and return a sign-extended 64 bit signed int. This causes 
problems if the communicated address is > 2**31 which is frequently the 
case. When that happens the debugger library is for example unable to 
find the containing method correctly given a program location.

Attached patch fixes this by reading a 32 bit uint from the Mono VM 
instead. However I think all the APIs should be sanitized to use 64 bit 
*unsigned* longs (ulongs) for addresses as well, using signed longs does 
not make much sense.

Best regards,

Hans Kratz
Omnicore Software
-------------- next part --------------
A non-text attachment was scrubbed...
Name: debugger-32bitaddress-unsigned.patch
Type: text/x-patch
Size: 565 bytes
Desc: not available
Url : http://lists.ximian.com/pipermail/mono-devel-list/attachments/20050607/1214fab8/attachment.bin 

More information about the Mono-devel-list mailing list