summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Completion/Linux/Command/_valgrind153
2 files changed, 99 insertions, 57 deletions
diff --git a/ChangeLog b/ChangeLog
index c75df5718..9f2dc1dbd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2005-01-21  Oliver Kiddle  <opk@zsh.org>
 
+	* 20734: Completion/Linux/Command/_valgrind: rewrite to handle
+	version 2.2.0 of valgrind
+
 	* 20730 (modified): Completion/Base/Completer/_expand: fix 
 	suffix style to regard quoted special characters as not special
 
diff --git a/Completion/Linux/Command/_valgrind b/Completion/Linux/Command/_valgrind
index 3d015b217..18778c5a4 100644
--- a/Completion/Linux/Command/_valgrind
+++ b/Completion/Linux/Command/_valgrind
@@ -1,57 +1,96 @@
-#compdef valgrind 
-#Generated by
-#   simple2long.xsl
-#   args.xsl
-#   Post-handedits
-#   For details see:
-#       http://www.geocities.com/f_rosencrantz/xml_completion.htm
-#
-#   This is for valgrind version: 1.0.0
-#   Valgrind URL: http://developer.kde.org/~sewardj/
-
-local context state line
-typeset -A opt_args
-  _arguments   \
-    '--help[show this message]' \
-    '--version[show version]' \
-    '(--quiet)-q[run silently; only print error msgs]' \
-    '(-q)--quiet[run silently; only print error msgs]' \
-    '(--verbose)-v[be more verbose, incl counts of errors]' \
-    '(-v)--verbose[be more verbose, incl counts of errors]' \
-    '--gdb-attach=-:start GDB when errors detected? [no]:(no yes)' \
-    '--demangle=-:automatically demangle C++ names? [yes]:(no yes)' \
-    '--num-callers=-:show <num> callers in stack traces [4]:' \
-    '--error-limit=-:stop showing new errors if too many? [yes]:(no yes)' \
-    '--partial-loads-ok=-:too hard to explain here; see manual [yes]:(no yes)' \
-    '--leak-check=-:search for memory leaks at exit? [no]:(no yes)' \
-    '--leak-resolution=-:amount of bt merging in leak check [low]:(low med high)' \
-    '--show-reachable=-:show reachable blocks in leak check? [no]:(no yes)' \
-    '--sloppy-malloc=-:round malloc sizes to next word? [no]:(no yes)' \
-    '--alignment=-:set minimum alignment of allocations [4]:' \
-    '--trace-children=-:Valgrind-ise child processes? [no]:(no yes)' \
-    '--logfile-fd=-:file descriptor for messages [2=stderr]:_file_descriptors' \
-    '--freelist-vol=-:volume of freed blocks queue [1000000]:' \
-    '--workaround-gcc296-bugs=-:self explanatory [no]:(no yes)' \
-    '--suppressions=-:suppress errors described in suppressions file <filename>:_files' \
-    '--check-addrVs=-:experimental lighterweight checking? [yes]:(no yes)' \
-    '--cachesim=-:do cache profiling? [no]:(no yes)' \
-    '--I1=-:set I1 cache manually(size,assoc,line_size):' \
-    '--D1=-:set D1 cache manually(size,assoc,line_size):' \
-    '--L2=-:set L2 cache manually(size,assoc,line_size):' \
-    '--weird-hacks=-:weird hacks (comma separated)[no hacks selected]:(ioctl-VTIME truncate-writes)' \
-    '--sanity-level=-:level of sanity checking to do [1]:' \
-    '--single-step=-:translate each instr separately? [no]:(no yes)' \
-    '--optimise=-:improve intermediate code? [yes]:(no yes)' \
-    '--instrument=-:actually do memory checks? [yes]:(no yes)' \
-    '--cleanup=-:improve after instrumentation? [yes]:(no yes)' \
-    '--smc-check=-:check writes for s-m-c? [some]:(none some all)' \
-    '--trace-syscalls=-:show all system calls? [no]:(no yes)' \
-    '--trace-signals=-:show signal handling details? [no]:(no yes)' \
-    '--trace-symtab=-:show symbol table details? [no]:(no yes)' \
-    '--trace-malloc=-:show client malloc details? [no]:(no yes)' \
-    '--trace-sched=-:show thread scheduler details? [no]:(no yes)' \
-    '--trace-pthread=-:show pthread event details? [none]:(none some all)' \
-    '--stop-after=-:switch to real CPU after executing <number> basic blocks [infinity]:' \
-    "--dump-error=-:show translation for basic block associated with <number>'th error context [0=don't show any]:" \
-    '1:command name:_command_names -e' \
-    '*::args :_normal'  && return 0
+#compdef valgrind -value-,VALGRIND_OPTS,-default-
+
+local curcontext="$curcontext" state line common cmd
+local -a args args_{memcheck,addrcheck,cachegrind,helgrind,massif}
+
+cmd=(
+  '1:command name:_command_names -e'
+  '*::args :_normal'
+)
+
+if [[ $service = *_OPTS* ]]; then
+  compset -q
+  words=( fake "$words[@]" )
+  (( CURRENT++ ))
+  cmd=()
+fi
+
+common=(
+  '--sloppy-malloc=-[round malloc sizes to multiple of 4]:enable:(yes no)'
+  '--alignment=-[set minimum alignment of allocations]:number'
+)
+
+args_addrcheck=(
+  $common
+  '--partial-loads-ok=-:enable:(yes no)'
+  '--freelist-vol=-[volume of freed blocks queue]:blocks'
+  '--leak-check=-[search for memory leaks at exit]:enable:(yes no)'
+  '--leak-resolution=-[how much bt merging in leak check]:(low med high)'
+  '--show-reachable=-[show reachable blocks in leak check]:enable:(yes no)'
+  '--workaround-gcc296-bugs=-:enable:(yes no)'
+)
+
+args_memcheck=(
+  $args_addrcheck
+  '--avoid-strlen-errors=-[suppress errs from inlined strlen]:enable:(yes no)'
+)
+
+args_cachegrind=(
+  '--I1=-[set I1 cache manually]:size,assoc,line_size'
+  '--D1=-[set D1 cache manually]:size,assoc,line_size'
+  '--L2=-[set L2 cache manually]:size,assoc,line_size'
+)
+
+args_helgrind=(
+  $common
+  '--private-stacks=-[assume thread stacks are used privately]:enable:(yes no)'
+  '--show-last-access=-[show location of last word access on error]:locations:(no some all)'
+)
+
+args_massif=(
+  $common
+  '--heap=-[profile heap blocks]:enable:(yes no)'
+  '--heap-admin=-[specify average admin bytes per heap block]:bytes'
+  '--stacks=-[enable profile stacks]:enable:(yes no)'
+  '--depth=-[depth of contexts]:depth'
+  '--alloc-fn=-[specify alloc function]:function'
+  '--format=-[specify format of textual output]:format:(text html)'
+)
+
+args="args_${${words[(r)--(skin|tool)=*]#*=}:-memcheck}"
+
+_arguments -C ${(P)args} $cmd \
+  '(--tool --skin)'{--tool,--skin}'=-[specify valgrind tool]:valgrind tool:->tools' \
+  '(-h --help)'{-h,--help}'[show help information]' \
+  '--help-debug[show help info including debugging options]' \
+  '--version[show version]' \
+  '(-q --quiet)'{-q,--quiet}'[run silently; only print error msgs]' \
+  '(-v --verbose)'{-v,--verbose}'[be more verbose]' \
+  '--trace-children=-[valgrind-ise child processes]:enable:(yes no)' \
+  '--track-fds=-[track open file descriptors]:enable:(yes no)' \
+  '--time-stamp=-[add timestamps to log messages]:enable:(yes no)' \
+  '--run-libc-freeres=-[free up glibc memory at exit]:enable:(yes no)' \
+  '--weird-hacks=-[enable hack]:hack:(lax-ioctls)' \
+  '--signal-polltime=-[signal poll period (ms)]:period' \
+  '--lowlat-signals=-[improve thread signal wake-up latency]:enable:(yes no)' \
+  '--lowlat-syscalls=-[improve thread syscall wake-up latency]:enable:(yes no)' \
+  '--pointercheck=-[enforce client address space limits]:enable:(yes no)' \
+  '--log-fd=-[log messages to specified file descriptor]:file descriptor:_file_descriptors' \
+  '--log-file=-[log messages to specified file]:file:_files' \
+  '--log-socket=-[log messages to socket]:ipaddr\:port' \
+  '--demangle=-[automatically demangle C++ names]:enable:(yes no)' \
+  '--num-callers=-[specify no of callers to show in stack traces]:number' \
+  '--error-limit=-[stop showing new errors if too many]:enable:(yes no)' \
+  '--show-below-main=-[continue stack traces below main()]:enable:(yes no)' \
+  '--suppressions=-[suppress errors described in specified file]:file:_files' \
+  '--gen-suppressions=-[print suppressions for errors detected]:enable:(yes no)' \
+  '--db-attach=-[start debugger when errors detected]:enable:(yes no)' \
+  '--db-command=-[specify command to start debugger]:command:_command_names -e' \
+  '--input-fd=-[specify file descriptor for input]:file descriptor:_file_descriptors' && return
+
+if [[ -n "$state" ]]; then
+  _wanted tools exl 'valgrind tool' compadd ${=${${(f)"$(_call_program \
+      tools valgrind --tool= 2>&1)"}[(r)Available*,-1]}[2,-1]} && return
+fi
+
+return 1