simultaneous 32-bit and 64-bit library support for x64 DR controlling WOW64 app
From derek.br...@gmail.com on February 24, 2009 14:14:20
Today 32-bit DR can control the 32-bit parts of a WOW64 app but to see all of the code including the emulation layer we want 64-bit DR able to run the whole mixed-mode app. Some of the capabilities here also apply to Linux mixed-mod apps but those are much, much rarer.
here is my list of cases that will eventually be separately filed here:
- PR 240257: support 32-bit clients on WOW64? how mix 32 and 64 bit code? like Pin, give stream to separate clients? or give 32-bit code to 64-bit client?
- PR 253431: [wow64] simultaneous 32-bit and 64-bit dll support in 64-bit DR
- PR 314367: re-enable x64 DR controlling WOW64 process once it works
- PR 272553: [x64] late injection must switch from kernel32 to ntdll for wow64 children
- PR 271317: preserve cs changes from far ctis and iret
- PR 283895: [x64][correctness][performance] for x86 code use separate x86 ibl tables and compacted or separate tls
- PR 283152: support high bit preservation across mode changes
- PR 284029: [x64] support syscalls in x86 mode
TODO: reg_spill_dcontext_offs(reg_id_t reg):
/* Use REG_E?? instead of REG_X?? to eventually support 32-bit code
spills in
- mixed 64-bit/32-bit execution. */
- PR 269595: WOW64 context translation failing when at our own post-syscall point
- PR 254193: [x64] inject into different-architecture child: x64 to WOW64, WOW64 to x64 => long-term we'll only support 64-bit-DR in WOW64 following (PR 253431)
- PR 253943: [x64] support sysenter
- PR 255555: [x64] 32-bit drinject options for launching 64-bit exe how know if ilist is 32-bit: instr_get_x86_mode() on each instr, or can assume if 1st then whole is same? shouldn't matter for most ops: IR is rich enough and cross-platform enough
Original issue: http://code.google.com/p/dynamorio/issues/detail?id=49