diff options
author | jistone <jistone> | 2006-03-14 01:00:34 +0000 |
---|---|---|
committer | jistone <jistone> | 2006-03-14 01:00:34 +0000 |
commit | 3519ee2a4a1bd00afe919b24628220711cdfc5ab (patch) | |
tree | 60c24352ef88b663d7559d9843f9745c9bd5af08 /safety | |
parent | 62efd5e271d742d082975a3775b63d65df0dfd4e (diff) | |
download | systemtap-steved-3519ee2a4a1bd00afe919b24628220711cdfc5ab.tar.gz systemtap-steved-3519ee2a4a1bd00afe919b24628220711cdfc5ab.tar.xz systemtap-steved-3519ee2a4a1bd00afe919b24628220711cdfc5ab.zip |
2006-03-13 Josh Stone <joshua.i.stone@intel.com>
* safety/safety.py: Support IA64 disassembly matching.
* safety/data/opcodes-ia64: new opcode rules for IA64.
* safety/data/references: Add references used by example scripts
when compiled for IA64.
Diffstat (limited to 'safety')
-rw-r--r-- | safety/data/opcodes-ia64 | 89 | ||||
-rw-r--r-- | safety/data/references | 12 | ||||
-rwxr-xr-x | safety/safety.py | 9 |
3 files changed, 108 insertions, 2 deletions
diff --git a/safety/data/opcodes-ia64 b/safety/data/opcodes-ia64 new file mode 100644 index 00000000..edb1792e --- /dev/null +++ b/safety/data/opcodes-ia64 @@ -0,0 +1,89 @@ +add[sl]? +addp4 +alloc +and +andcm +br(?:\.cond)?(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.cond(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.call(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.ret(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.cloop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.ctop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.cexit(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.wtop(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +br\.wexit(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +brl(?:\.cond)?(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +brl\.call(?:\.(?:spnt|sptk|dpnt|dptk))?(?:\.(?:few|many))?(?:\.clr)? +brp(?:\.(?:sptk|loop|exit|dptk))(?:\.imp)? +brp\.ret(?:\.(?:sptk|loop|exit|dptk))(?:\.imp)? +chk\.s(?:\.[im])? +chk\.a\.(?:clr|nc) +clrrrb +cmp\.(?:eq|ne|l[te]u?|g[te]u?)(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))? +cmp4\.(?:eq|ne|l[te]u?|g[te]u?)(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))? +cmpxchg[1248]\.(?:acq|rel)(?:\.nt[1a])? +cmp8xchg16\.(?:acq|rel)(?:\.nt[1a])? +cover +czx[12]\.[lr] +dep(?:\.z)? +extr(?:\.u)? +fetchadd[48]\.(?:acq|rel)(?:\.nt[1a])? +getf\.(?:s|d|exp|sig) +hint(?:\.[ibmfx])? +ld[1248](?:\.(?:s|a|sa|c\.nc|c\.clr|c\.clr\.acq|acq|bias))?(?:\.nt[1a])? +ld8\.fill(?:\.nt[1a])? +ld16(?:\.acq)?(?:\.nt[1a])? +ldf8(?:\.(?:s|a|sa|c\.nc|c\.clr))?(?:\.nt[1a])? +lfetch(?:.fault)?(?:\.excl)?(?:\.nt[12a])? +mf +mix[124]\.[lr] +mov(?:\.[im])? +mov(?:\.ret)?(?:\.sptk|\.dptk)?(?:\.imp)? +movl +mux[12] +nop(?:\.[ibmfx])? +or +pack2\.[us]ss +pack4.sss +padd[124] +padd[12]\.(?:sss|uus|uuu) +pavg[12](?:\.raz) +pavgsub[12] +pcmp[124]\.(?:eq|gt) +pmax1\.u +pmax2 +pmin1\.u +pmin2 +pmpy2\.[rl] +pmpyshr2(?:\.u)? +popcnt +psad1 +pshl[24] +pshladd2 +pshr[24](?:\.u)? +pshradd2 +psub[124] +psub[12]\.(?:sss|uus|uuu) +rsm +setf\.(?:s|d|exp|sig) +shl +shladd +shladdp4 +shr(?:\.u)? +shrp +srlz\.[id] +ssm +st[1248](?:\.rel)?(?:\.nta)? +st16(?:\.rel)?(?:\.nta)? +st8\.spill(?:\.nta)? +stf8(?:\.nta)? +sub +sxt[124] +tbit\.n?z(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))? +tnat\.n?z(?:\.(?:unc|or|and|or.andcm|orcm|andcm|and.orcm))? +unpack[124]\.[hl] +xchg[1248](?:\.nt[1a])? +xma\.[lh]u? +xmpy\.[lh]u? +xor +zxt[124] diff --git a/safety/data/references b/safety/data/references index dc674417..bfea8e86 100644 --- a/safety/data/references +++ b/safety/data/references @@ -6,6 +6,7 @@ __const_udelay copy_from_user __copy_from_user_ll copy_to_user +__copy_user copy_user_generic cpu_callout_map cpu_online_map @@ -13,8 +14,10 @@ cpu_possible_map cpu_to_node create_proc_entry del_timer_sync +__divdi3 do_gettimeofday __down_failed +__find_next_bit find_next_bit finish_wait free_percpu @@ -29,8 +32,10 @@ kmalloc_node kmem_cache_alloc malloc_sizes memcmp +memcpy memset __might_sleep +__moddi3 __mod_timer mod_timer msleep @@ -41,6 +46,7 @@ param_get_string param_set_copystring param_set_int param_set_long +per_cpu__cpu_info prepare_to_wait printk proc_mkdir @@ -67,13 +73,19 @@ sprintf strcmp strlcat strlcpy +strlen strncmp strncpy +__strncpy_from_user strsep +__udivdi3 +__umoddi3 unregister_kprobe unregister_kretprobe unregister_profile_notifier unregister_timer_hook +unw_init_running +unw_unwind __up_wakeup vscnprintf vsnprintf diff --git a/safety/safety.py b/safety/safety.py index f02c30b3..8607ce75 100755 --- a/safety/safety.py +++ b/safety/safety.py @@ -173,8 +173,13 @@ class StaticSafety: skip_ud2a = [0] ignore_re = compile(r'^$|^\s+\.{3}$|^.*Disassembly of section|^.*file format') - opc = r'(?:(?:lock )|(?:repn?[ze]? )|(?:rex\w+ ))*(\w+)\b' - opc_re = compile(r'^[A-Fa-f\d]+ <([^>]+)> %s' % opc) + if self.__arch == 'ia64': + opc = r'(?:\[[IBFLMX]{3}\]\s+)?(?:\(p\d\d\)\s+)?([\w.]+)\b' + elif self.__arch == 'x86_64' or self.__arch == 'i686': + opc = r'(?:lock\s+)?|(?:repn?[ze]?\s+)?|(?:rex\w+\s+)?(\w+)\b' + else: + opc = r'(\w+)\b' + opc_re = compile(r'^[A-Fa-f\d]+\s+<([^>]+)>\s+%s' % opc) def check(line): m = ignore_re.match(line) if m: |