On Mon, Aug 30, 2010 at 8:42 PM, Blue Swirl <blauwir...@gmail.com> wrote: > On Mon, Aug 30, 2010 at 8:10 PM, malc <av1...@comtv.ru> wrote: >> On Mon, 30 Aug 2010, Blue Swirl wrote: >> >>> On Mon, Aug 30, 2010 at 1:27 PM, Stefan Hajnoczi >>> <stefa...@linux.vnet.ibm.com> wrote: >>> > This patch introduces the trace-events file where trace events can be >>> > declared like so: >>> > >>> > qemu_malloc(size_t size) "size %zu" >>> > qemu_free(void *ptr) "ptr %p" >>> > >>> > These trace event declarations are processed by a new tool called >>> > tracetool to generate code for the trace events. Trace event >>> > declarations are independent of the backend tracing system (LTTng User >>> > Space Tracing, ftrace markers, DTrace). >>> >>> I think the tool does not work if 'sh' is not 'bash'. For example, on >>> OpenBSD I got: >> >> Well, it does work with ash. >> >>> >>> config-host.mak is out-of-date, running configure >>> >>> Error: invalid trace backend >>> Please choose a supported trace backend. >>> >>> GEN trace.h >>> /src/qemu/tracetool[176]: no closing quote >>> >>> This shows the problem: >>> sh -x ../tracetool --nop --check-backend >>> + set -f >>> ../tracetool[176]: no closing quote >> >> `set -f' is a valid construct according to: >> http://www.opengroup.org/onlinepubs/009695399/utilities/set.html >> >> The problem is likely elsewhere. > > Right, the offending lines are: > echo ${1%%(*} > and > args=${1#*(} > > If I remove both of those, the errors are gone. >
This patch fixes the problem. Double quotes do not help. diff --git a/tracetool b/tracetool index d640100..01de580 100755 --- a/tracetool +++ b/tracetool @@ -29,14 +29,14 @@ EOF # Get the name of a trace event get_name() { - echo ${1%%(*} + echo ${1%%\(*} } # Get the argument list of a trace event, including types and names get_args() { local args - args=${1#*(} + args=${1#*\(} args=${args%)*} echo "$args" }