Page MenuHomeFreeBSD

D40283.1789646344.diff
No OneTemporary

Size
982 B
Referenced Files
None
Subscribers
None

D40283.1789646344.diff

diff --git a/sys/cddl/dev/kinst/amd64/kinst_isa.c b/sys/cddl/dev/kinst/amd64/kinst_isa.c
--- a/sys/cddl/dev/kinst/amd64/kinst_isa.c
+++ b/sys/cddl/dev/kinst/amd64/kinst_isa.c
@@ -496,7 +496,8 @@
dtrace_kinst_probedesc_t *pd;
const char *func;
int error, instrsize, n, off;
- uint8_t *instr, *limit;
+ uint8_t *instr, *limit, *tmp;
+ bool found;
pd = opaque;
func = symval->name;
@@ -512,11 +513,17 @@
/*
* Ignore functions not beginning with the usual function prologue.
- * These might correspond to exception handlers with which we should not
- * meddle. This does however exclude functions which can be safely
- * traced, such as cpu_switch().
+ * These might correspond to exception handlers with which we should
+ * not meddle.
*/
- if (*instr != KINST_PUSHL_RBP)
+ tmp = instr;
+ found = false;
+ while (tmp < limit) {
+ if (*tmp == KINST_PUSHL_RBP)
+ found = true;
+ tmp += dtrace_instr_size(tmp);
+ }
+ if (!found)
return (0);
n = 0;

File Metadata

Mime Type
text/plain
Expires
Thu, Sep 17, 11:59 AM (18 h, 15 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29729783
Default Alt Text
D40283.1789646344.diff (982 B)

Event Timeline