summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim Keniston <jkenisto@us.ibm.com>2008-11-18 15:15:58 -0800
committerJim Keniston <jkenisto@us.ibm.com>2008-11-18 15:15:58 -0800
commit8590d03dfe106ec860fd1cdbe28d394d61b6a791 (patch)
tree05062a9e1e837f322044381246e9697546ccdb36
parente0b4e89dd8d4ef6e0ebbef60e71dfd92a26e66d0 (diff)
downloadsystemtap-steved-8590d03dfe106ec860fd1cdbe28d394d61b6a791.tar.gz
systemtap-steved-8590d03dfe106ec860fd1cdbe28d394d61b6a791.tar.xz
systemtap-steved-8590d03dfe106ec860fd1cdbe28d394d61b6a791.zip
PR 6879: Apply fix from uprobes to uprobes2.
-rw-r--r--ChangeLog6
-rw-r--r--runtime/uprobes2/uprobes_x86.c11
2 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index d40cc793..0cd00d92 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-18 Jim Keniston <jkenisto@us.ibm.com>
+
+ PR 6879
+ * runtime/uprobes2/uprobes_x86.c: Allow probing of instructions
+ with fs: and gs: prefixes. Apply fix from runtime/uprobes.
+
2008-11-18 Frank Ch. Eigler <fche@elastic.org>
PR6925.
diff --git a/runtime/uprobes2/uprobes_x86.c b/runtime/uprobes2/uprobes_x86.c
index 38c20ba0..45289564 100644
--- a/runtime/uprobes2/uprobes_x86.c
+++ b/runtime/uprobes2/uprobes_x86.c
@@ -48,7 +48,7 @@ static const u64 good_insns_64[256 / 64] = {
W(0x30, 1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0), /* 30 */
W(0x40, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)| /* 40 */
W(0x50, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)| /* 50 */
- W(0x60, 0,0,0,1,0,0,0,0,1,1,1,1,0,0,0,0)| /* 60 */
+ W(0x60, 0,0,0,1,1,1,0,0,1,1,1,1,0,0,0,0)| /* 60 */
W(0x70, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), /* 70 */
W(0x80, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)| /* 80 */
W(0x90, 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1)| /* 90 */
@@ -73,7 +73,7 @@ static const u64 good_insns_32[256 / 64] = {
W(0x30, 1,1,1,1,1,1,0,1,1,1,1,1,1,1,0,1), /* 30 */
W(0x40, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)| /* 40 */
W(0x50, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)| /* 50 */
- W(0x60, 1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0)| /* 60 */
+ W(0x60, 1,1,1,0,1,1,0,0,1,1,1,1,0,0,0,0)| /* 60 */
W(0x70, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1), /* 70 */
W(0x80, 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)| /* 80 */
W(0x90, 1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1)| /* 90 */
@@ -143,7 +143,8 @@ static const u64 good_2byte_insns[256 / 64] = {
* others -- Do we need to support these?
* 0f - (floating-point?) prefetch instructions
* 07, 17, 1f - pop es, pop ss, pop ds
- * 26, 2e, 36, 3e, 64, 65 - es:, cs:, ss:, ds:, fs:, gs: segment prefixes
+ * 26, 2e, 36, 3e - es:, cs:, ss:, ds: segment prefixes --
+ * but 64 and 65 (fs: and gs:) seem to be used, so we support them
* 67 - addr16 prefix
* 9b - wait/fwait
* ce - into
@@ -170,10 +171,10 @@ static inline int check_legacy_prefix(u8 byte)
case 0x2e:
case 0x36:
case 0x3e:
- case 0x64:
- case 0x65:
case 0xf0:
return -1;
+ case 0x64:
+ case 0x65:
case 0x66:
case 0x67:
case 0xf2: