On FreeBSD/amd64A number of changes to DTrace to improve robustness (i.e., don't allow instrumentation of handle_el1h_sync.not panic quickly) on FreeBSD/arm64:
Don't allow FBT to instrument DDB, which makes debugging FBT quite hard.
- Don't allow FBT to instrument memcpy(). This is a bit lazy, but avoidsthe exception handlers used to implement FBT.
several panic variations I've encountered. I need to figure out if it- Don't allow FBT to instrument DDB, which makes debugging FBT even harder.
is because- Don't allow FBT to instrument memcpy() is being substituted by, which may be used by the compiler to optimise parts of the compilerDTrace implementation, or whether thereas well as in exception handlers.
is an undesirable explicit call to memcpy() somewhere in DTrace or its
dependencies- Implement a dtrace_getnanouptime(), modeled on the existing dtrace_getnanotime(), so that we don't have to block FBT instrumentation of getnanouptime().
Blacklist one more exception-handling related function from being instrumented by FBT. With this change, we can now instrument all remaining function entries in the kernel using FBT and not immediately crash in boring operation.(Note: I'm pretty sure that dtrace_gethrtime() should not use getnanouptime(), but I'll change its semantics in some later commit -- this change preserve current semantics.)