Hi, I'm modifying DVM for research purpose, and the simple change I made is to add a 4 bytes extra field to the Java object header. (struct Object in dalvik/vm/oo/Object.h) After realizing that I need to adjust all related offset constants, I also modified them. (MTERP_OFFSET in dalvik/vm/mterp/common/asm-constants.h)
When I run the modified emulator, it doesn't complain about offsets, but it crashes during the DVM startup. Following is the crash log. Since the only change I made is adding an extra field to the structure, I guess the crash is due to the wrong offset manipulation. Perhaps there must be some code which uses hard-coded offset manipulation constants. I would appreciate if anybody could point what I am missing. Thanks, Sunghwan /dalvikvm( 571): +++ dvmAddClassToHash '[Ljava/util/Hashtable$Entry;' 0x0 (isnew=1) --> 0x40012168 V/dalvikvm( 571): Created array class '[Ljava/util/Hashtable$Entry;' 0x0 (access=0x6000.0010) V/dalvikvm( 571): +++ dvmAddClassToHash 'Ljava/lang/StringBuilder;' 0x0 (isnew=1) --> 0x400128e8 V/dalvikvm( 571): +++ dvmAddClassToHash 'Ljava/lang/AbstractStringBuilder;' 0x0 (isnew=1) --> 0x40012998 V/dalvikvm( 571): --- LinearRealloc(192) old=196 V/dalvikvm( 571): --- LinearRealloc(324) old=332 V/dalvikvm( 571): ----- type is 0x04 0, ptr=0x4190c468 [0x342440] V/dalvikvm( 571): ----- type is 0x06 7, ptr=0x4190c78e [0x342766] V/dalvikvm( 571): Array class '[Ljava/lang/reflect/Type;' 0x0 not found; creating V/dalvikvm( 571): +++ dvmAddClassToHash '[Ljava/lang/reflect/Type;' 0x0 (isnew=1) --> 0x40012a48 V/dalvikvm( 571): Created array class '[Ljava/lang/reflect/Type;' 0x0 (access=0x6000.0411) V/dalvikvm( 571): ----- type is 0x1c 0, ptr=0x4190211a [0x3380f2] V/dalvikvm( 571): ----- type is 0x18 1, ptr=0x4190211c [0x3380f4] V/dalvikvm( 571): +++ dvmAddClassToHash 'Ljava/lang/SecurityException;' 0x0 (isnew=1) --> 0x40013420 V/dalvikvm( 571): HEY: converting valueObj from [Ljava/lang/Object; to [Ljava/lang/Class; V/dalvikvm( 571): +++ dvmAddClassToHash 'Lorg/apache/harmony/kernel/vm/ReflectionAccess;' 0x0 (isnew=1) --> 0x40013870 V/dalvikvm( 571): Array class '[Ljava/lang/reflect/AccessibleObject;' 0x0 not found; creating V/dalvikvm( 571): +++ dvmAddClassToHash '[Ljava/lang/reflect/AccessibleObject;' 0x0 (isnew=1) --> 0x400139e0 V/dalvikvm( 571): Created array class '[Ljava/lang/reflect/AccessibleObject;' 0x0 (access=0x6000.0011) V/dalvikvm( 571): ----- type is 0x1c 0, ptr=0x4190211a [0x3380f2] V/dalvikvm( 571): ----- type is 0x18 1, ptr=0x4190211c [0x3380f4] V/dalvikvm( 571): HEY: converting valueObj from [Ljava/lang/Object; to [Ljava/lang/Class; I/DEBUG ( 539): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 539): Build fingerprint: 'generic/generic/generic/:1.5/CUPCAKE/eng.sihm.20090728.203725:eng/test-keys' I/DEBUG ( 539): pid: 571, tid: 571 >>> zygote <<< I/DEBUG ( 539): signal 7 (SIGBUS), fault addr 00000000 I/DEBUG ( 539): r0 00000001 r1 fffffffb r2 40013870 r3 00000000 I/DEBUG ( 539): r4 ad0dbe2c r5 fffffffb r6 00000001 r7 00000000 I/DEBUG ( 539): r8 00000876 r9 0000bc60 10 41049cb8 fp 00000000 I/DEBUG ( 539): ip ad0dc110 sp befa6100 lr ad0a08bf pc ad0aa988 cpsr a0000030 I/DEBUG ( 539): #00 pc 000aa988 /system/lib/libdvm.so I/DEBUG ( 539): #01 pc 000a089a /system/lib/libdvm.so I/DEBUG ( 539): #02 pc 000a08ba /system/lib/libdvm.so I/DEBUG ( 539): #03 pc 00082212 /system/lib/libdvm.so I/DEBUG ( 539): #04 pc 00013e20 /system/lib/libdvm.so I/DEBUG ( 539): #05 pc 0001a36c /system/lib/libdvm.so I/DEBUG ( 539): #06 pc 00019960 /system/lib/libdvm.so I/DEBUG ( 539): #07 pc 00096e4c /system/lib/libdvm.so I/DEBUG ( 539): #08 pc 00096e8e /system/lib/libdvm.so I/DEBUG ( 539): #09 pc 000a5f0c /system/lib/libdvm.so I/DEBUG ( 539): #10 pc 000133a4 /system/lib/libdvm.so I/DEBUG ( 539): #11 pc 0001a36c /system/lib/libdvm.so I/DEBUG ( 539): #12 pc 00019960 /system/lib/libdvm.so I/DEBUG ( 539): #13 pc 00096e4c /system/lib/libdvm.so I/DEBUG ( 539): #14 pc 00096e8e /system/lib/libdvm.so I/DEBUG ( 539): #15 pc 000a5f0c /system/lib/libdvm.so I/DEBUG ( 539): #16 pc 000a5e38 /system/lib/libdvm.so I/DEBUG ( 539): #17 pc 000a5e38 /system/lib/libdvm.so I/DEBUG ( 539): #18 pc 000a5e38 /system/lib/libdvm.so I/DEBUG ( 539): #19 pc 000133a4 /system/lib/libdvm.so I/DEBUG ( 539): #20 pc 0001a36c /system/lib/libdvm.so I/DEBUG ( 539): #21 pc 00019960 /system/lib/libdvm.so I/DEBUG ( 539): #22 pc 00096e4c /system/lib/libdvm.so I/DEBUG ( 539): #23 pc 00096e8e /system/lib/libdvm.so I/DEBUG ( 539): #24 pc 000a5f0c /system/lib/libdvm.so I/DEBUG ( 539): #25 pc 000a7480 /system/lib/libdvm.so I/DEBUG ( 539): #26 pc 00010ea8 /system/lib/libdvm.so I/DEBUG ( 539): #27 pc 0001a36c /system/lib/libdvm.so I/DEBUG ( 539): #28 pc 00019960 /system/lib/libdvm.so I/DEBUG ( 539): #29 pc 00096e4c /system/lib/libdvm.so I/DEBUG ( 539): #30 pc 00096e8e /system/lib/libdvm.so I/DEBUG ( 539): #31 pc 000a5f0c /system/lib/libdvm.so I/DEBUG ( 539): stack: I/DEBUG ( 539): befa60c0 400082c8 I/DEBUG ( 539): befa60c4 ad08a383 /system/lib/libdvm.so I/DEBUG ( 539): befa60c8 62aba396 I/DEBUG ( 539): befa60cc ad0a1bb5 /system/lib/libdvm.so I/DEBUG ( 539): befa60d0 ad0fccf8 I/DEBUG ( 539): befa60d4 00000010 I/DEBUG ( 539): befa60d8 ad0dbe2c I/DEBUG ( 539): befa60dc ad0fcd48 I/DEBUG ( 539): befa60e0 ad0dbe2c I/DEBUG ( 539): befa60e4 00000010 I/DEBUG ( 539): befa60e8 ad0dbe2c I/DEBUG ( 539): befa60ec afe0ecd4 /system/lib/libc.so I/DEBUG ( 539): befa60f0 ad0dbe2c I/DEBUG ( 539): befa60f4 ad0dbe2c I/DEBUG ( 539): befa60f8 00000002 I/DEBUG ( 539): befa60fc 41807d70 I/DEBUG ( 539): #00 befa6100 00000007 I/DEBUG ( 539): befa6104 41807d70 I/DEBUG ( 539): befa6108 ad0dbe2c I/DEBUG ( 539): befa610c fffffffb I/DEBUG ( 539): befa6110 00000001 I/DEBUG ( 539): befa6114 ad0a08bf /system/lib/libdvm.so I/DEBUG ( 539): befa6118 4105108c I/DEBUG ( 539): befa611c 41807d70 I/DEBUG ( 539): befa6120 00000001 I/DEBUG ( 539): befa6124 ad0a089d /system/lib/libdvm.so I/DEBUG ( 539): #01 befa6128 ad0dbe2c I/DEBUG ( 539): befa612c ad0a08bf /system/lib/libdvm.so --~--~---------~--~----~------------~-------~--~----~ unsubscribe: [email protected] website: http://groups.google.com/group/android-porting -~----------~----~----~----~------~----~------~--~---
