summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2015-03-05 07:40:41 +0000
committerrwatson <rwatson@FreeBSD.org>2015-03-05 07:40:41 +0000
commitd81f712ba9186462357be59602c46a6b0f81e1bf (patch)
tree4e4cd6bd556b92d1eed0f185e170acc7f42359a3
parent1686d13fd74e60d6c7c4f15eb3a9d227b6f2fadc (diff)
downloadFreeBSD-src-d81f712ba9186462357be59602c46a6b0f81e1bf.zip
FreeBSD-src-d81f712ba9186462357be59602c46a6b0f81e1bf.tar.gz
Don't all DTrace's FBT on ARM to instrument undefinedinstruction(), as
this would lead to DTrace reentrance. Sponsored by: DARPA, AFRL
-rw-r--r--sys/cddl/dev/fbt/arm/fbt_isa.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/cddl/dev/fbt/arm/fbt_isa.c b/sys/cddl/dev/fbt/arm/fbt_isa.c
index 99fe067..c6bc0f0 100644
--- a/sys/cddl/dev/fbt/arm/fbt_isa.c
+++ b/sys/cddl/dev/fbt/arm/fbt_isa.c
@@ -105,6 +105,13 @@ fbt_provide_module_function(linker_file_t lf, int symindx,
if (name[0] == '_' && name[1] == '_')
return (0);
+ /*
+ * Architecture-specific exclusion list, largely to do with FBT trap
+ * processing, to prevent reentrance.
+ */
+ if (strcmp(name, "undefinedinstruction") == 0)
+ return (0);
+
instr = (uint32_t *)symval->value;
limit = (uint32_t *)(symval->value + symval->size);
OpenPOWER on IntegriCloud