summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tapset/ChangeLog4
-rw-r--r--tapset/aux_syscalls.stp9
2 files changed, 10 insertions, 3 deletions
diff --git a/tapset/ChangeLog b/tapset/ChangeLog
index f263c81f..d51e186a 100644
--- a/tapset/ChangeLog
+++ b/tapset/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-19 Zhaolei <zhaolei@cn.fujitsu.com>
+
+ * aux_syscalls.stp: Output unknown bits in _stp_lookup_or_str.
+
2008-06-17 Zhaolei <zhaolei@cn.fujitsu.com>
* syscalls.stp: Add sys_linkat.
diff --git a/tapset/aux_syscalls.stp b/tapset/aux_syscalls.stp
index 502b0ff8..f79acaf0 100644
--- a/tapset/aux_syscalls.stp
+++ b/tapset/aux_syscalls.stp
@@ -1548,7 +1548,7 @@ void _stp_lookup_str(const _stp_val_array * const array, long val, char *ptr, in
}
void _stp_lookup_or_str(const _stp_val_array * const array, long val, char *ptr, int len)
{
- int i = 0, flag = 0;
+ int i = 0, flag = 0, slen;
if (val == 0) {
_stp_lookup_str(array, val, ptr, len);
@@ -1560,12 +1560,15 @@ void _stp_lookup_or_str(const _stp_val_array * const array, long val, char *ptr,
if (flag)
strlcat(ptr, "|", len);
strlcat(ptr, array[i].name, len);
+ val &= (~array[i].val);
flag = 1;
}
i++;
}
- if (flag == 0) {
- int slen = strlen(ptr);
+ if (val) {
+ if (flag)
+ strlcat(ptr, "|", len);
+ slen = strlen(ptr);
_stp_snprintf(ptr + slen, len - slen, "0x%lx", val);
}
}