From: Wang Nan <wangnan0@huawei.com>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>, Ingo Molnar <mingo@redhat.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
<lizefan@huawei.com>, Arnaldo Carvalho de Melo <acme@kernel.org>,
Jiri Olsa <jolsa@kernel.org>
Subject: Re: [PATCH] perf: fix building error in x86_64 when dwarf unwind is on
Date: Thu, 8 Jan 2015 09:30:23 +0800 [thread overview]
Message-ID: <54ADDDAF.8060704@huawei.com> (raw)
In-Reply-To: <CAM9d7chGXX68B54igX5O+3ZEu322cW-Xfoz6Wen8=D8iQpyH6g@mail.gmail.com>
On 2015/1/7 21:50, Namhyung Kim wrote:
> On Wed, Jan 7, 2015 at 9:28 PM, Wang Nan <wangnan0@huawei.com> wrote:
>> On 2015/1/7 16:39, Jiri Olsa wrote:
>>> On Wed, Jan 07, 2015 at 02:40:04PM +0900, Namhyung Kim wrote:
>>>> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
>>>> index 67a03a825b3c..eb3e2f3e14b4 100644
>>>> --- a/tools/perf/Makefile.perf
>>>> +++ b/tools/perf/Makefile.perf
>>>> @@ -462,10 +462,12 @@ BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
>>>> # Benchmark modules
>>>> BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o
>>>> BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o
>>>> +ifeq ($(ARCH),x86)
>>>> ifeq ($(RAW_ARCH),x86_64)
>>>> BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o
>>>> BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o
>>>> endif
>>>> +endif
>>>
>>> isn't the check for x86 superfluous here? the x86_64 check is stronger
>>>
>>> otherwise it looks ok to me.. Wang Nan, could you please check
>>> if it fixes the issue for you?
>>>
>>
>> Sorry, although Namhyung Kim's patch solves my ARCH=x86 problem, it breaks ARM building:
>>
>> ...
>> | bench/../../../arch/x86/lib/memcpy_64.S: Assembler messages:
>> | bench/../../../arch/x86/lib/memcpy_64.S:27: Error: junk at end of line, first unrecognized character is `,'
>> | bench/../../../arch/x86/lib/memcpy_64.S:29: Error: bad instruction `movq %rdi,%rax'
>> | bench/../../../arch/x86/lib/memcpy_64.S:30: Error: bad instruction `movq %rdx,%rcx'
>> | bench/../../../arch/x86/lib/memcpy_64.S:31: Error: bad instruction `shrq $3,%rcx'
>> | bench/../../../arch/x86/lib/memcpy_64.S:32: Error: bad instruction `andl $7,%edx'
>> ...
>
> Strange.. this code is included only if ARCH=x86 in config/Makefile:
>
> # Additional ARCH settings for x86
> ifeq ($(ARCH),x86)
> ifeq (${IS_64_BIT}, 1)
> CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT
> ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
> LIBUNWIND_LIBS = -lunwind -lunwind-x86_64
> else
> LIBUNWIND_LIBS = -lunwind -lunwind-x86
> endif
> NO_PERF_REGS := 0
> endif
>
> Did your original patch build it without a problem?
>
My original patch is free from this problem.
bench/mem-memset-x86-64-asm.S doesn't use ARCH_INCLUDE, it direct include "../../../arch/x86/lib/memset_64.S".
>
>>
>> It builds x86_64 bench when I corss compiling perf for arm (use ARCH=arm). This is caused by Makefile.perf:
>>
>> ...
>> BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o
>> ifeq ($(RAW_ARCH),x86_64)
>> BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o
>> BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o
>> endif
>> BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o
>> ...
>>
>> Which rely on RAW_ARCH, but RAW_ARCH is not a cross-compiling-friendly variable now.
>
> That's why I added the extra ARCH check.
>
With your additional ARCH check, ARM compiling is passed. However I suggest you not to
use $(RAW_ARCH) directly, because it is get from "uname -m", which reflects the arch of
build machine, not the arch of host machine (the machine perf will run on).
What about this:
---
diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
index 67a03a82..1f71a32 100644
--- a/tools/perf/Makefile.perf
+++ b/tools/perf/Makefile.perf
@@ -462,10 +462,12 @@ BUILTIN_OBJS += $(OUTPUT)builtin-bench.o
# Benchmark modules
BUILTIN_OBJS += $(OUTPUT)bench/sched-messaging.o
BUILTIN_OBJS += $(OUTPUT)bench/sched-pipe.o
-ifeq ($(RAW_ARCH),x86_64)
+ifeq ($(ARCH), x86)
+ifeq ($(IS_64_BIT), 1)
BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy-x86-64-asm.o
BUILTIN_OBJS += $(OUTPUT)bench/mem-memset-x86-64-asm.o
endif
+endif
BUILTIN_OBJS += $(OUTPUT)bench/mem-memcpy.o
BUILTIN_OBJS += $(OUTPUT)bench/futex-hash.o
BUILTIN_OBJS += $(OUTPUT)bench/futex-wake.o
> Thanks,
> Namhyung
>
next prev parent reply other threads:[~2015-01-08 1:30 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-27 1:26 [PATCH] perf: fix building error in x86_64 when dwarf unwind is on Wang Nan
2014-12-29 7:56 ` Namhyung Kim
2014-12-29 8:14 ` Wang Nan
2015-01-07 2:53 ` Wang Nan
2015-01-07 5:40 ` Namhyung Kim
2015-01-07 8:39 ` Jiri Olsa
2015-01-07 12:28 ` Wang Nan
2015-01-07 13:50 ` Namhyung Kim
2015-01-08 1:30 ` Wang Nan [this message]
2015-01-08 5:09 ` Namhyung Kim
2015-01-09 14:43 ` Jiri Olsa
2015-01-12 2:20 ` Wang Nan
2015-01-12 3:28 ` Namhyung Kim
2015-01-12 10:36 ` Jiri Olsa
2015-01-17 10:10 ` [tip:perf/urgent] perf tools: Fix " tip-bot for Namhyung Kim
-- strict thread matches above, loose matches on Subject: below --
2015-02-03 19:58 [PATCH] perf: fix " Christopher Covington
2015-02-03 19:58 ` Christopher Covington
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54ADDDAF.8060704@huawei.com \
--to=wangnan0@huawei.com \
--cc=acme@kernel.org \
--cc=jolsa@kernel.org \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.