Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F137414324
D4419.id11639.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D4419.id11639.diff
View Options
Index: head/sys/cddl/dev/fbt/arm/fbt_isa.c
===================================================================
--- head/sys/cddl/dev/fbt/arm/fbt_isa.c
+++ head/sys/cddl/dev/fbt/arm/fbt_isa.c
@@ -35,6 +35,7 @@
#include <sys/param.h>
#include <sys/dtrace.h>
+#include <machine/stack.h>
#include <machine/trap.h>
#include "fbt.h"
@@ -42,6 +43,7 @@
#define FBT_PUSHM 0xe92d0000
#define FBT_POPM 0xe8bd0000
#define FBT_JUMP 0xea000000
+#define FBT_SUBSP 0xe24dd000
#define FBT_ENTRY "entry"
#define FBT_RETURN "return"
@@ -111,12 +113,18 @@
instr = (uint32_t *)symval->value;
limit = (uint32_t *)(symval->value + symval->size);
- for (; instr < limit; instr++)
- if ((*instr & 0xffff0000) == FBT_PUSHM &&
- (*instr & 0x4000) != 0)
- break;
+ /*
+ * va_arg functions has first instruction of
+ * sub sp, sp, #?
+ */
+ if ((*instr & 0xfffff000) == FBT_SUBSP)
+ instr++;
- if (instr >= limit)
+ /*
+ * check if insn is a pushm with LR
+ */
+ if ((*instr & 0xffff0000) != FBT_PUSHM ||
+ (*instr & (1 << LR)) == 0)
return (0);
fbt = malloc(sizeof (fbt_probe_t), M_FBT, M_WAITOK | M_ZERO);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Mon, Nov 24, 5:51 AM (9 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
26010486
Default Alt Text
D4419.id11639.diff (1 KB)
Attached To
Mode
D4419: More restrict on probe function entry. We only check first instruction now. The only expcetion case is when function uses va_args, the first instrction is skipped.
Attached
Detach File
Event Timeline
Log In to Comment