Instruction punning: Lightweight instrumentation for x86-64
Paper in proceeding, 2017

Existing techniques for injecting probes into running code are limited: they either fail to support probing arbitrary locations, or to support scalable, rapid toggling of probes. We introduce a new technique on x86-64, called instruction punning, which allows scalable probes at any instruction. The key idea is that when we inject a jump instruction, the relative address of the jump serves simultaneously as data and as an instruction sequence. We show that this approach achieves probe invocation overheads of only a few dozen cycles, as well as low probe activation/deactivation costs, even when all threads in the system are both invoking probes and toggling them. Unlike competing systems, the latent overhead when probes are deactivated is exactly zero.

Application profiling

Dynamic instrumentation

Author

B. Chamith

Indiana University

Joel Bo Svensson

Software Technology (Chalmers)

L. Dalessandro

Indiana University

R. Newton

Indiana University

ACM SIGPLAN Notices

1523-2867 (ISSN)

Vol. Part F128414 6 320-332

38th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI 2017
Barcelona, Spain,

Subject Categories

Software Engineering

DOI

10.1145/3062341.3062344

More information

Latest update

11/8/2024