From: Ingo Molnar Date: Wed, 14 Apr 2010 09:28:43 GMT Subject: Re: [PATCH] perf: Fix endianness argument compatibility Message-ID: <20100414092843.GD10537@elte.hu> In-Reply-To: <20100413.014821.34906166.davem@davemloft.net> * David Miller wrote: > From: "Ian Munsie" > Date: Tue, 13 Apr 2010 18:37:33 +1000 > > > From: Ian Munsie > > > > Parsing an option from the command line with OPT_BOOLEAN on a bool data > > type would not work on a big-endian machine due to the manner in which > > the boolean was being cast into an int and incremented. For example, > > running 'perf probe --list' on a PowerPC machine would fail to properly > > set the list_events bool and would therefore print out the usage > > information and terminate. > > > > This patch makes OPT_BOOLEAN work as expected with a bool datatype. For > > cases where the original OPT_BOOLEAN was intentionally being used to > > increment an int each time it was passed in on the command line, this > > patch introduces OPT_INCR with the old behaviour of OPT_BOOLEAN (the > > verbose variable is currently the only such example of this). > > > > I have reviewed every use of OPT_BOOLEAN to verify that a true C99 bool > > was passed. Where integers were used, I verified that they were only > > being used for boolean logic and changed them to bools to ensure that > > they would not be mistakenly used as ints. The major exception was the > > verbose variable which now uses OPT_INCR instead of OPT_BOOLEAN. > > > > Signed-off-by: Ian Munsie > > Thanks for finding and fixing this bug. Nice fix! Btw., perf got the option parser from the Git project - i'm wondering how the Git folks solved this endianness problem? Ingo