DynamoRIO / drmemory

Memory Debugger for Windows, Linux, Mac, and Android
Other
2.45k stars 262 forks source link

64-bit container case #111

Open derekbruening opened 9 years ago

derekbruening commented 9 years ago

From derek.br...@gmail.com on December 10, 2010 17:57:41

PR 408518

filing a container case to cover 64-bit porting of Dr. Memory. the major task is re-designing the shadow memory structure and rewriting all of the hand-coded machine instruction sequences for accessing shadow memory. we'll need more indirection with some kind of page-table-style structure, and may end up needing caches to achieve good performance: much more complex than 32-bit.

xref PR 575713

Original issue: http://code.google.com/p/drmemory/issues/detail?id=111

derekbruening commented 9 years ago

From bruen...@google.com on May 16, 2012 08:45:59

issue #889 covers porting pattern mode to 64-bit

derekbruening commented 9 years ago

From bruen...@google.com on June 17, 2012 14:13:10

filling in some notes:


from years ago:

On Linux need to maintain 128-byte stack redzone marked as undefined as stack pointer moves around


frontend notes from recent discussion:

there are 3 approaches: 1) one is DR's approach, which makes you run bin32/drrun or bin64/drrun. although can use -32 or -64 params to override. 2) another is valgrind, which auto-detects bitwidth from one frontend. 3) 3rd is to have some flag (btw I would not use "lib64": why "lib"?).

autodetect is by far the most usable for users. for scripts, assume native kernel bitwidth.

note that we have to automatically detect on child injection anyway (xref DRi#147 on clients registering both 32 and 64 and DR picking the right one on cross-arch child)

maybe we should solve DRi#147 first. if the soln there is to make DR auto-detect then we don't have to do anything: could specify both bitwidths to DR and frontend is done

problem: frontend is used with -results or -nudge where no app is specified and thus there's no easy way for the front-end to know the bitwidth. (-results could read file I guess, and -nudge could could go examine /proc/pid/)


and more xrefs: issue #825 issue #906 issue #916 issue #917 issue #919

Labels: -Priority-Low -Type-Defect Priority-Medium Type-Enhancement OpSys-x64

derekbruening commented 9 years ago

From bruen...@google.com on July 19, 2012 11:12:26

issue #945 issue #946

derekbruening commented 9 years ago

From bruen...@google.com on February 04, 2013 08:41:00

we'll need 64-bit nudges from DR: https://code.google.com/p/dynamorio/issues/detail?id=119

Owner: zhao...@google.com

derekbruening commented 9 years ago

From bruen...@google.com on May 01, 2013 12:22:51

issue #1205 split out

derekbruening commented 9 years ago

From bruen...@google.com on May 21, 2013 10:51:09

\ TODO how shadow registers

for byte-to-byte, plus additional 8 GPR's, we'd need 16 slots instead of the current 2 for GPR's!

options:

xref DRi#1163: out of TLS slots in win8 as it is

xref issue #471 : need to shadow floating-point regs too -- but these are too big to expect to fit in TLS. I think we just live w/ indirection here. I don't think giving up granularity is a good idea for cases where data is moved in and out.

derekbruening commented 9 years ago

From bruen...@google.com on August 01, 2014 10:54:45

Taking over

Owner: bruen...@google.com

derekbruening commented 9 years ago

From bruen...@google.com on September 18, 2014 07:36:08

byte-to-byte split out as issue #1632 as the initial port will be 1B-2b

derekbruening commented 9 years ago

From bruen...@google.com on September 18, 2014 07:42:27

xref issue #1633

derekbruening commented 8 years ago

Pattern support is complete and light mode is now officially supported and present in the release package.

1782 is a blocker for shadow modes

derekbruening commented 7 years ago

Recent commits that did not include a proper xref for auto-linking: 3c0371c i#111 x64: heap mismatch generalization (#2026) 3d8834e i#111 x64: 64-bit shadow slowpath (#2024) e521af6 i#111 x64: stack slowpath and redzone handling (#2023)

derekbruening commented 7 years ago

a83d8f30d02f56e09f528a607d19b8665488821b enables 64-bit full mode on Linux though we're still missing push/pop and esp fastpaths.