Em Fri, Sep 04, 2015 at 04:01:54PM -0700, Petri Gynther escreveu: > On Fri, Sep 4, 2015 at 3:48 PM, Arnaldo Carvalho de Melo > <a...@kernel.org> wrote: > > Em Fri, Sep 04, 2015 at 03:45:03PM -0700, Petri Gynther escreveu: > >> This commit breaks the perf tool MIPS build because MIPS doesn't have > >> CONFIG_PERF_REGS=y in .config-detected: > >> > >> commit bcc84ec65ad1bd9f777a1fade6f8e5e0c5808fa5 > >> Author: Stephane Eranian <eran...@google.com> > >> Date: Mon Aug 31 18:41:12 2015 +0200 > >> > >> perf record: Add ability to name registers to record > > > > There was a fix for another arch that came after this one.. here it is, > > already > > upstream, can you take a look? > > > > commit af4aeadd8c04303c0aa2d112145c3627e2ebd026 > > Author: Stephane Eranian <eran...@google.com> > > Date: Tue Sep 1 11:30:14 2015 +0200 > > > > perf tools: Fix link time error with sample_reg_masks on non x86 > > > > This patch makes perf compile on non x86 platforms by defining a weak > > symbol for sample_reg_masks[] in util/perf_regs.c. > > > > The patch also moves the REG() and REG_END() macros into the > > util/per_regs.h header file. The macros are renamed to > > SMPL_REG/SMPL_REG_END to avoid clashes with other header files. > > > > > > I have the above commit in my tree (as I have the latest Linus' tree > as of right now). > The MIPS build is still broken as I reported.
Stephane, can you please take a look? - Arnaldo > tools/perf/util/perf_regs.c doesn't get compiled on MIPS because: > > CONFIG_PERF_REGS is not set on MIPS > and > tools/perf/util/Build: > libperf-$(CONFIG_PERF_REGS) += perf_regs.o > > Converting the above to: > libperf-y += perf_regs.o > > leads to other build errors: > ... > CC util/perf_regs.o > In file included from util/perf_regs.c:2:0: > util/perf_regs.h:26:48: error: expected ‘;’, ‘,’ or ‘)’ before > ‘__maybe_unused’ > static inline const char *perf_reg_name(int id __maybe_unused) > ^ > util/perf_regs.h:31:44: error: expected ‘;’, ‘,’ or ‘)’ before > ‘__maybe_unused’ > static inline int perf_reg_value(u64 *valp __maybe_unused, > ^ > FLEX util/parse-events-flex.c > util/perf_regs.c:9:5: error: no previous prototype for > ‘perf_reg_value’ [-Werror=missing-prototypes] > int perf_reg_value(u64 *valp, struct regs_dump *regs, int id) > ^ > cc1: all warnings being treated as errors > CC util/intel-pt-decoder/intel-pt-log.o > make[4]: *** [util/perf_regs.o] Error 1 > make[4]: *** Waiting for unfinished jobs.... > CC util/intel-pt-decoder/intel-pt-decoder.o > LD tests/perf-in.o > CC util/intel-pt-decoder/intel-pt-insn-decoder.o > LD perf-in.o > LD util/intel-pt-decoder/libperf-in.o > make[3]: *** [util] Error 2 > make[2]: *** [libperf-in.o] Error 2 > make[1]: *** [all] Error 2 > make: *** [perf] Error 2 > > > >> On Fri, Sep 4, 2015 at 3:19 PM, Petri Gynther <pgynt...@google.com> wrote: > >> > I see that this patch is now in upstream. However, something else has > >> > now broken the perf tool MIPS build: > >> > > >> > linux/tools$ git describe > >> > v4.2-7656-g51e771c > >> > > >> > linux/tools$ make ARCH=mips CROSS_COMPILE=mipsel-linux- perf > >> > mkdir -p . > >> > make --no-print-directory -C perf O= subdir= > >> > BUILD: Doing 'make -j12' parallel build > >> > > >> > Auto-detecting system features: > >> > ... dwarf: [ OFF ] > >> > ... glibc: [ on ] > >> > ... gtk2: [ OFF ] > >> > ... libaudit: [ OFF ] > >> > ... libbfd: [ OFF ] > >> > ... libelf: [ OFF ] > >> > ... libnuma: [ OFF ] > >> > ... libperl: [ OFF ] > >> > ... libpython: [ OFF ] > >> > ... libslang: [ OFF ] > >> > ... libunwind: [ OFF ] > >> > ... libdw-dwarf-unwind: [ OFF ] > >> > ... zlib: [ OFF ] > >> > ... lzma: [ OFF ] > >> > > >> > ... > >> > > >> > AR libperf.a > >> > LINK perf > >> > libperf.a(libperf-in.o): In function `parse_regs': > >> > (.text+0x9f5b4): undefined reference to `sample_reg_masks' > >> > libperf.a(libperf-in.o): In function `parse_regs': > >> > (.text+0x9f604): undefined reference to `sample_reg_masks' > >> > libperf.a(libperf-in.o): In function `parse_regs': > >> > (.text+0x9f708): undefined reference to `sample_reg_masks' > >> > collect2: error: ld returned 1 exit status > >> > make[2]: *** [perf] Error 1 > >> > make[1]: *** [all] Error 2 > >> > make: *** [perf] Error 2 > >> > > >> > On Tue, Aug 4, 2015 at 5:38 PM, Petri Gynther <pgynt...@google.com> > >> > wrote: > >> >> linux/tools$ make ARCH=mips CROSS_COMPILE=mipsel-linux- perf > >> >> ... > >> >> config/Makefile:256: *** No gnu/libc-version.h found, please install > >> >> glibc-dev[el]. Stop. > >> >> make[1]: *** [all] Error 2 > >> >> make: *** [perf] Error 2 > >> >> > >> >> ... > >> >> In file included from builtin-sched.c:13:0: > >> >> util/cloexec.h:8:12: error: redundant redeclaration of ‘sched_getcpu’ > >> >> [-Werror=redundant-decls] > >> >> extern int sched_getcpu(void) __THROW; > >> >> > >> >> mipsel-buildroot-linux-uclibc/sysroot/usr/include/bits/sched.h:88:12: > >> >> note: previous declaration of ‘sched_getcpu’ was here > >> >> extern int sched_getcpu (void) __THROW; > >> >> > >> >> uclibc info: > >> >> sysroot/usr/include/bits/uClibc_config.h > >> >> __UCLIBC_MAJOR__ 0 > >> >> __UCLIBC_MINOR__ 9 > >> >> __UCLIBC_SUBLEVEL__ 33 > >> >> > >> >> sysroot/usr/include/features.h > >> >> __UCLIBC__ 1 > >> >> __GLIBC__ 2 > >> >> __GLIBC_MINOR__ 2 > >> >> > >> >> Signed-off-by: Petri Gynther <pgynt...@google.com> > >> >> --- > >> >> tools/build/feature/test-glibc.c | 11 +++++++++++ > >> >> tools/perf/util/cloexec.h | 2 +- > >> >> 2 files changed, 12 insertions(+), 1 deletion(-) > >> >> > >> >> diff --git a/tools/build/feature/test-glibc.c > >> >> b/tools/build/feature/test-glibc.c > >> >> index b082034..9367f75 100644 > >> >> --- a/tools/build/feature/test-glibc.c > >> >> +++ b/tools/build/feature/test-glibc.c > >> >> @@ -1,8 +1,19 @@ > >> >> +#include <stdlib.h> > >> >> + > >> >> +#if !defined(__UCLIBC__) > >> >> #include <gnu/libc-version.h> > >> >> +#else > >> >> +#define XSTR(s) STR(s) > >> >> +#define STR(s) #s > >> >> +#endif > >> >> > >> >> int main(void) > >> >> { > >> >> +#if !defined(__UCLIBC__) > >> >> const char *version = gnu_get_libc_version(); > >> >> +#else > >> >> + const char *version = XSTR(__GLIBC__) "." XSTR(__GLIBC_MINOR__); > >> >> +#endif > >> >> > >> >> return (long)version; > >> >> } > >> >> diff --git a/tools/perf/util/cloexec.h b/tools/perf/util/cloexec.h > >> >> index 68888c2..3bee677 100644 > >> >> --- a/tools/perf/util/cloexec.h > >> >> +++ b/tools/perf/util/cloexec.h > >> >> @@ -4,7 +4,7 @@ > >> >> unsigned long perf_event_open_cloexec_flag(void); > >> >> > >> >> #ifdef __GLIBC_PREREQ > >> >> -#if !__GLIBC_PREREQ(2, 6) > >> >> +#if !__GLIBC_PREREQ(2, 6) && !defined(__UCLIBC__) > >> >> extern int sched_getcpu(void) __THROW; > >> >> #endif > >> >> #endif > >> >> -- > >> >> 2.5.0.rc2.392.g76e840b > >> >> -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/