To test data-offset handling, this patch fleshes out SDT semaphore
support in the dynsdt test program.
It actually required a bit of section gymnastics to figure out the raw
file offset of the semaphore, mainly because of the padding between the
load addresses of the text and data segments.
This code appears to work fine tested on a small executable (the
heapsort example, modified to gate on the semaphore). For unknown
reasons, it doesn't seem to work on the semaphored SDT in libpython.
The semaphore address appears to be computed and value incremented
correctly, but the instrumentation never fires. The semaphore even
appears already incremented with a simultaneous stap -DDEBUG_UPROBES,
and that handler does fire on the python function probes. This may be a
case of dyninst failing silently, as it does with longjmp SDT, but more
investigation is required...