Package: zsh
Version: 4.3.2-8
Severity: wishlist
Tags: patch

Hi!

Just updated the valgrind completion to conform to version 3.1.1. I
am enclosing the patch with this mail. In particular, the code to
find the tools available was not working. This patch fixes that, but
I would still consider it a very hackish solution. Well, the best I
could find! :)

--- _valgrind.orig	2006-05-21 22:42:40.294438336 +0530
+++ _valgrind	2006-05-21 05:55:17.804093544 +0530
@@ -1,7 +1,8 @@
 #compdef valgrind -value-,VALGRIND_OPTS,-default-
 
-local curcontext="$curcontext" state line common cmd
-local -a args args_{memcheck,addrcheck,cachegrind,helgrind,massif}
+local curcontext="$curcontext" state line
+local -a cmd common common_mem_null \
+  args args_{addrcheck,memcheck,cachegrind,helgrind,lackey,massif,none}
 
 cmd=(
   '1:command name:_command_names -e'
@@ -16,12 +17,17 @@
 fi
 
 common=(
-  '--sloppy-malloc=-[round malloc sizes to multiple of 4]:enable:(yes no)'
   '--alignment=-[set minimum alignment of allocations]:number'
 )
 
+common_mem_null=(
+  '--xml=-[output everything in XML]:enable:(yes no)'
+  '--xml-user-comment=-[copy specified string verbatim to XML output]:string'
+)
+
 args_addrcheck=(
   $common
+  $common_mem_null
   '--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)'
@@ -32,7 +38,6 @@
 
 args_memcheck=(
   $args_addrcheck
-  '--avoid-strlen-errors=-[suppress errs from inlined strlen]:enable:(yes no)'
 )
 
 args_cachegrind=(
@@ -47,6 +52,11 @@
   '--show-last-access=-[show location of last word access on error]:locations:(no some all)'
 )
 
+args_lackey=(
+  '--fnname=-[count calls to specified name]:name'
+  '--detailed-counts=-[count loads, stores and alu ops]:enable:(yes no)'
+)
+
 args_massif=(
   $common
   '--heap=-[profile heap blocks]:enable:(yes no)'
@@ -57,10 +67,14 @@
   '--format=-[specify format of textual output]:format:(text html)'
 )
 
-args="args_${${words[(r)--(skin|tool)=*]#*=}:-memcheck}"
+args_none=(
+  $common_mem_null
+)
+
+args="args_${${words[(r)--tool=*]#*=}:-memcheck}"
 
 _arguments -C ${(P)args} $cmd \
-  '(--tool --skin)'{--tool,--skin}'=-[specify valgrind tool]:valgrind tool:->tools' \
+  '--tool=-[specify valgrind tool]:valgrind tool:->tools' \
   '(-h --help)'{-h,--help}'[show help information]' \
   '--help-debug[show help info including debugging options]' \
   '--version[show version]' \
@@ -69,15 +83,15 @@
   '--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-file=-[log messages to specified file with pid appended]:file:_files' \
+  '--log-file-exactly=-[log messages to specified file]:file:_files' \
+  '--log-file-qualifier=-[log messages to filename given by specified environment variable]:variable:_parameters -g "*scalar*"' \
   '--log-socket=-[log messages to socket]:ipaddr\:port' \
+  '--run-libc-freeres=-[free up glibc memory at exit]:enable:(yes no)' \
+  '--sim-hints=-[enable hint]:hint:(lax-ioctls enable-outer)' \
+  '--show-emwarns=-[show warnings about emulation limits]:enable:(yes no)' \
+  '--kernel-variant=-[handle non-standard kernel variants]:kernel variant:_values -s , kernel\ variant bproc' \
   '--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)' \
@@ -86,11 +100,20 @@
   '--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
+  '--input-fd=-[specify file descriptor for input]:file descriptor:_file_descriptors' \
+  '--max-stackframe=-[assume stack switch for SP changes larger than specified number of bytes]:bytes' \
+  && return
+
+typeset -a tools
 
 if [[ -n "$state" ]]; then
-  _wanted tools exl 'valgrind tool' compadd ${=${${(f)"$(_call_program \
-      tools valgrind --tool= 2>&1)"}[(r)Available*,-1]}[2,-1]} && return
+  # `valgrind --tool=` no longer works.
+  # The method below is even more hackish, but the only one I could find.
+  # Basically uses debug output to find out the directory where the tools are
+  # present and lists all executables in that directory.
+  # Hope the program provides a neater interface some day!
+  tools=(${${${(M)${(f)"$(_call_program tools valgrind --tool=something -d 2> /dev/null)"}:#*launcher launching *something}##*launcher launching }%%something}*(*:t))
+  _wanted tools exl 'valgrind tool' compadd $tools && return
 fi
 
 return 1
Regards,
Ramkumar.

-- System Information:
Debian Release: testing/unstable
  APT prefers testing
  APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.16-beyond2
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)

Versions of packages zsh depends on:
ii  debconf [debconf-2.0]         1.5.0      Debian configuration management sy
ii  libc6                         2.3.6-7    GNU C Library: Shared libraries
ii  libncurses5                   5.5-1.1    Shared libraries for terminal hand

Versions of packages zsh recommends:
ii  libcap1                       1:1.10-14  support for getting/setting POSIX.
ii  libpcre3                      6.4-2      Perl 5 Compatible Regular Expressi

-- no debconf information

-- 
WARN_(accel)("msg null; should hang here to be win compatible\n");
                                   -- WINE source code

Reply via email to