lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 15 Mar 2012 12:14:32 +0000
From:	"Jan Beulich" <JBeulich@...e.com>
To:	"Arnaldo Carvalho de Melo" <acme@...stprotocols.net>
Cc:	<a.p.zijlstra@...llo.nl>, <mingo@...e.hu>, <paulus@...ba.org>,
	<linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] perf: adjust make rules

>>> On 14.03.12 at 20:17, Arnaldo Carvalho de Melo <acme@...stprotocols.net>
wrote:
> Em Thu, Mar 08, 2012 at 09:29:28AM +0000, Jan Beulich escreveu:
>> Add rules to generate pre-processed files (just like are available for
>> the normal kernel build), and adjust the rule to create assembly files
>> from C ones to produce its output in the output directory rather than
>> in the source tree.
>> 
>> Signed-off-by: Jan Beulich <jbeulich@...e.com>
> 
> I'm trying to use it but hit this:
> 
> [acme@...dy linux]$ make -C tools/perf/ O=/home/git/build/perf 
> /home/git/build/perf/perf.s
> make: Entering directory `/home/git/linux/tools/perf'
>     CC /home/git/build/perf/perf.s
> perf.c: In function ‘handle_options’:
> perf.c:111: error: ‘PERF_HTML_PATH’ undeclared (first use in this function)
> perf.c:111: error: (Each undeclared identifier is reported only once
> perf.c:111: error: for each function it appears in.)
> perf.c: At top level:
> perf.c:238: error: ‘PERF_VERSION’ undeclared here (not in a function)
> make: *** [/home/git/build/perf/perf.s] Error 1
> make: Leaving directory `/home/git/linux/tools/perf'
> [acme@...dy linux]
> 
> Do I have to go to tools/perf and do it from there, trying...

No. perf.c just is a bad example - perf.o has a special make rule,
and hence the pattern rule for perf.s fails because the symbols
defined for perf.o don't get also defined for perf.s. Those special
rules look pretty strange anyway - as long as using GNU make is a
requirement, they could be re-written to use the pattern rule, and
then would be much easier to extend to cover .i and .s generation
as well.

Using the rules added in this patch works fine for me for any of the
source files that don't have custom .o rules (which is what I needed
when I came up with this patch).

Jan

> [acme@...dy perf]$ make O=/home/git/build/perf /home/git/build/perf/perf.s
>     CC /home/git/build/perf/perf.s
> perf.c: In function ‘handle_options’:
> perf.c:111: error: ‘PERF_HTML_PATH’ undeclared (first use in this function)
> perf.c:111: error: (Each undeclared identifier is reported only once
> perf.c:111: error: for each function it appears in.)
> perf.c: At top level:
> perf.c:238: error: ‘PERF_VERSION’ undeclared here (not in a function)
> make: *** [/home/git/build/perf/perf.s] Error 1
> [acme@...dy perf]$ make O=/home/git/build/perf perf.s
> make: *** No rule to make target `perf.s'.  Stop.
> [acme@...dy perf]$
> 
> Same result, what am I doing wrong?
> 
> - Arnaldo
>  
>> ---
>>  tools/perf/Makefile |    6 +++++-
>>  1 file changed, 5 insertions(+), 1 deletion(-)
>> 
>> --- 3.3-rc6/tools/perf/Makefile
>> +++ 3.3-rc6-perf-make-rules/tools/perf/Makefile
>> @@ -706,10 +706,14 @@ $(OUTPUT)perf.o perf.spec \
>>  
>>  $(OUTPUT)%.o: %.c $(OUTPUT)PERF-CFLAGS
>>  	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
>> +$(OUTPUT)%.i: %.c $(OUTPUT)PERF-CFLAGS
>> +	$(QUIET_CC)$(CC) -o $@ -E $(ALL_CFLAGS) $<
>>  $(OUTPUT)%.s: %.c $(OUTPUT)PERF-CFLAGS
>> -	$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<
>> +	$(QUIET_CC)$(CC) -o $@ -S $(ALL_CFLAGS) $<
>>  $(OUTPUT)%.o: %.S
>>  	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $<
>> +$(OUTPUT)%.s: %.S
>> +	$(QUIET_CC)$(CC) -o $@ -E $(ALL_CFLAGS) $<
>>  
>>  $(OUTPUT)util/exec_cmd.o: util/exec_cmd.c $(OUTPUT)PERF-CFLAGS
>>  	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) \
>> 
>> 


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ