Fix instrumentation regressions for libc-2.29 on ARM (#653)
authorXiaozhu Meng <mxz297@gmail.com>
Sat, 16 Nov 2019 20:22:31 +0000 (14:22 -0600)
committerTim Haines <thaines.astro@gmail.com>
Sat, 16 Nov 2019 20:22:31 +0000 (14:22 -0600)
commitcf195af6655d688a611e499c43a88efc8dd2e0fb
tree90f140937f31e974737c4e7f1205bdb1da97cb90
parent47336e6ac185bd2134ff9484c55ef62b7d76f9b7
Fix instrumentation regressions for libc-2.29 on ARM (#653)

* Fixes loading pre-instrumentation register values on aarch64
* Fix the handling of trap instruction on ARM for register liveness analysis
* Implement a byte matching heuristic for determining the length of _start
* Implement a spin lock use __atomic_test_and_set on ARM
*   1. Change stop signal from SIGBUS to (SIGRTMIN + 4) in dyninstAPI_RT.
*   2. In dyninstAPI, only do dyninstRT signal check if the signal is indeed (SIGRTMIN + 4)
* Refacotr BPatch and DyninstRT to use breakpoint as the way of communication
13 files changed:
dataflowAPI/src/liveness.C
dyninstAPI/src/dynProcess.C
dyninstAPI/src/dynProcess.h
dyninstAPI/src/emit-aarch64.C
dyninstAPI/src/pcEventHandler.C
dyninstAPI/src/pcEventHandler.h
dyninstAPI_RT/h/dyninstAPI_RT.h
dyninstAPI_RT/src/RTcommon.c
dyninstAPI_RT/src/RTcommon.h
dyninstAPI_RT/src/RTlinux.c
dyninstAPI_RT/src/RTthread-aarch64.c
proccontrol/src/linux.C
stackwalk/src/linuxbsd-swk.C