2012-06-13 15:29:47

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [GIT PULL 0/3] perf/urgent fixes

Hi Ingo,

Please consider pulling,

- Arnaldo

The following changes since commit 9ee6ddc9dada9cc4b2201631bc74fbf203183a10:

Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent (2012-06-08 12:23:22 +0200)

are available in the git repository at:


git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-urgent-for-mingo

for you to fetch changes up to cb9dd49e11f83d548c822d7022ac180b0518b25c:

perf tools: Fix synthesizing tracepoint names from the perf.data headers (2012-06-12 11:28:09 -0300)

----------------------------------------------------------------
Fixes for perf/urgent

. Set name of tracepoints when reading the perf.data headers, so that
we don't end up using the local ones, from /sys.

. Fix default output file for perf stat, from Stephane Eranian.

. Fix endian handling of features bitmask in perf.data header, from David Ahern

Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
perf tools: Fix synthesizing tracepoint names from the perf.data headers

David Ahern (1):
perf tools: Fix endianity swapping for adds_features bitmask

Stephane Eranian (1):
perf stat: Fix default output file

tools/perf/builtin-stat.c | 8 +++++-
tools/perf/util/header.c | 48 +++++++++++++++++++++++++++-----
tools/perf/util/include/linux/bitops.h | 2 ++
tools/perf/util/session.c | 10 +++++++
tools/perf/util/session.h | 1 +
5 files changed, 61 insertions(+), 8 deletions(-)


2012-06-13 15:29:44

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [PATCH 3/3] perf tools: Fix synthesizing tracepoint names from the perf.data headers

From: Arnaldo Carvalho de Melo <[email protected]>

We need to use the per event info snapshoted at record time to
synthesize the events name, so do it just after reading the perf.data
headers, when we already processed the /sys events data, otherwise we'll
end up using the local /sys that only by sheer luck will have the same
tracepoint ID -> real event association.

Example:

# uname -a
Linux felicio.ghostprotocols.net 3.4.0-rc5+ #1 SMP Sat May 19 15:27:11 BRT 2012 x86_64 x86_64 x86_64 GNU/Linux
# perf record -e sched:sched_switch usleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.015 MB perf.data (~648 samples) ]
# cat /t/events/sched/sched_switch/id
279
# perf evlist -v
sched:sched_switch: sample_freq=1, type: 2, config: 279, size: 80, sample_type: 1159, read_format: 7, disabled: 1, inherit: 1, mmap: 1, comm: 1, enable_on_exec: 1, sample_id_all: 1, exclude_guest: 1
#

So on the above machine the sched:sched_switch has tracepoint id 279, but on
the machine were we'll analyse it it has a different id:

$ cat /t/events/sched/sched_switch/id
56
$ perf evlist -i /tmp/perf.data
kmem:mm_balancedirty_writeout
$ cat /t/events/kmem/mm_balancedirty_writeout/id
279

With this fix:

$ perf evlist -i /tmp/perf.data
sched:sched_switch

Reported-by: Dmitry Antipov <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Mike Galbraith <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Link: http://lkml.kernel.org/n/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/header.c | 32 ++++++++++++++++++++++++++++++++
1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 4f9b247..e909d43 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -2093,6 +2093,35 @@ static int read_attr(int fd, struct perf_header *ph,
return ret <= 0 ? -1 : 0;
}

+static int perf_evsel__set_tracepoint_name(struct perf_evsel *evsel)
+{
+ struct event_format *event = trace_find_event(evsel->attr.config);
+ char bf[128];
+
+ if (event == NULL)
+ return -1;
+
+ snprintf(bf, sizeof(bf), "%s:%s", event->system, event->name);
+ evsel->name = strdup(bf);
+ if (event->name == NULL)
+ return -1;
+
+ return 0;
+}
+
+static int perf_evlist__set_tracepoint_names(struct perf_evlist *evlist)
+{
+ struct perf_evsel *pos;
+
+ list_for_each_entry(pos, &evlist->entries, node) {
+ if (pos->attr.type == PERF_TYPE_TRACEPOINT &&
+ perf_evsel__set_tracepoint_name(pos))
+ return -1;
+ }
+
+ return 0;
+}
+
int perf_session__read_header(struct perf_session *session, int fd)
{
struct perf_header *header = &session->header;
@@ -2174,6 +2203,9 @@ int perf_session__read_header(struct perf_session *session, int fd)

lseek(fd, header->data_offset, SEEK_SET);

+ if (perf_evlist__set_tracepoint_names(session->evlist))
+ goto out_delete_evlist;
+
header->frozen = 1;
return 0;
out_errno:
--
1.7.1

2012-06-13 15:29:42

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [PATCH 2/3] perf stat: Fix default output file

From: Stephane Eranian <[email protected]>

The following commit:

commit 56f3bae70638b33477a6015fd362ccfe354fd3ee
Author: Jim Cromie <[email protected]>
Date: Wed Sep 7 17:14:00 2011 -0600

perf stat: Add --log-fd <N> option to redirect stderr elsewhere

introduced a bug in the way perf stat outputs the results by default,
i.e., without the --log-fd or --output option. It would default to
writing to file descriptor 0, i.e., stdin. Writing to stdin is allowed
and is equivalent to writing to stdout. However, there is a major
difference for any script that was already capturing the output of perf
stat via redirection:

perf stat >/tmp/log .... or perf stat 2>/tmp/log ....

They would not capture anything anymore. They would have to do:
perf stat 0>/tmp/log ...

This breaks compatibility with existing scripts and does not look very
natural.

This patch fixes the problem by looking at output_fd only when it was
modified by user (> 0). It also checks that the value if positive.
Passing --log-fd 0 is ignored.

I would also argue that defaulting to stderr for the results is not the
right thing to do, though this patch does not address this specific
issue.

Signed-off-by: Stephane Eranian <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Jim Cromie <[email protected]>
Link: http://lkml.kernel.org/r/20120515111111.GA9870@quad
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/builtin-stat.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
index 2625899..07b5c77 100644
--- a/tools/perf/builtin-stat.c
+++ b/tools/perf/builtin-stat.c
@@ -1179,6 +1179,12 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
fprintf(stderr, "cannot use both --output and --log-fd\n");
usage_with_options(stat_usage, options);
}
+
+ if (output_fd < 0) {
+ fprintf(stderr, "argument to --log-fd must be a > 0\n");
+ usage_with_options(stat_usage, options);
+ }
+
if (!output) {
struct timespec tm;
mode = append_file ? "a" : "w";
@@ -1190,7 +1196,7 @@ int cmd_stat(int argc, const char **argv, const char *prefix __used)
}
clock_gettime(CLOCK_REALTIME, &tm);
fprintf(output, "# started on %s\n", ctime(&tm.tv_sec));
- } else if (output_fd != 2) {
+ } else if (output_fd > 0) {
mode = append_file ? "a" : "w";
output = fdopen(output_fd, mode);
if (!output) {
--
1.7.1

2012-06-13 15:30:34

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: [PATCH 1/3] perf tools: Fix endianity swapping for adds_features bitmask

From: David Ahern <[email protected]>

Based on Jiri's latest attempt:
https://lkml.org/lkml/2012/5/16/61

Basically, adds_features should be byte swapped assuming unsigned
longs are either 8-bytes (u64) or 4-bytes (u32).

Fixes 32-bit ppc dumping 64-bit x86 feature data:
========
captured on: Sun May 20 19:23:23 2012
hostname : nxos-vdc-dev3
os release : 3.4.0-rc7+
perf version : 3.4.rc4.137.g978da3
arch : x86_64
nrcpus online : 16
nrcpus avail : 16
cpudesc : Intel(R) Xeon(R) CPU E5540 @ 2.53GHz
cpuid : GenuineIntel,6,26,5
total memory : 24680324 kB
...

Verified 64-bit x86 can still dump feature data for 32-bit ppc.

Signed-off-by: David Ahern <[email protected]>
Reviewed-by: Jiri Olsa <[email protected]>
Cc: Corey Ashford <[email protected]>
Cc: Frederic Weisbecker <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/header.c | 16 +++++++++-------
tools/perf/util/include/linux/bitops.h | 2 ++
tools/perf/util/session.c | 10 ++++++++++
tools/perf/util/session.h | 1 +
4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
index 2dd5edf..4f9b247 100644
--- a/tools/perf/util/header.c
+++ b/tools/perf/util/header.c
@@ -1942,7 +1942,6 @@ int perf_file_header__read(struct perf_file_header *header,
else
return -1;
} else if (ph->needs_swap) {
- unsigned int i;
/*
* feature bitmap is declared as an array of unsigned longs --
* not good since its size can differ between the host that
@@ -1958,14 +1957,17 @@ int perf_file_header__read(struct perf_file_header *header,
* file), punt and fallback to the original behavior --
* clearing all feature bits and setting buildid.
*/
- for (i = 0; i < BITS_TO_LONGS(HEADER_FEAT_BITS); ++i)
- header->adds_features[i] = bswap_64(header->adds_features[i]);
+ mem_bswap_64(&header->adds_features,
+ BITS_TO_U64(HEADER_FEAT_BITS));

if (!test_bit(HEADER_HOSTNAME, header->adds_features)) {
- for (i = 0; i < BITS_TO_LONGS(HEADER_FEAT_BITS); ++i) {
- header->adds_features[i] = bswap_64(header->adds_features[i]);
- header->adds_features[i] = bswap_32(header->adds_features[i]);
- }
+ /* unswap as u64 */
+ mem_bswap_64(&header->adds_features,
+ BITS_TO_U64(HEADER_FEAT_BITS));
+
+ /* unswap as u32 */
+ mem_bswap_32(&header->adds_features,
+ BITS_TO_U32(HEADER_FEAT_BITS));
}

if (!test_bit(HEADER_HOSTNAME, header->adds_features)) {
diff --git a/tools/perf/util/include/linux/bitops.h b/tools/perf/util/include/linux/bitops.h
index f158483..587a230 100644
--- a/tools/perf/util/include/linux/bitops.h
+++ b/tools/perf/util/include/linux/bitops.h
@@ -8,6 +8,8 @@
#define BITS_PER_LONG __WORDSIZE
#define BITS_PER_BYTE 8
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
+#define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64))
+#define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))

#define for_each_set_bit(bit, addr, size) \
for ((bit) = find_first_bit((addr), (size)); \
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 2600916..c3e399b 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -442,6 +442,16 @@ static void perf_tool__fill_defaults(struct perf_tool *tool)
tool->finished_round = process_finished_round_stub;
}
}
+
+void mem_bswap_32(void *src, int byte_size)
+{
+ u32 *m = src;
+ while (byte_size > 0) {
+ *m = bswap_32(*m);
+ byte_size -= sizeof(u32);
+ ++m;
+ }
+}

void mem_bswap_64(void *src, int byte_size)
{
diff --git a/tools/perf/util/session.h b/tools/perf/util/session.h
index 7a5434c..0c702e3 100644
--- a/tools/perf/util/session.h
+++ b/tools/perf/util/session.h
@@ -80,6 +80,7 @@ struct branch_info *machine__resolve_bstack(struct machine *self,
bool perf_session__has_traces(struct perf_session *self, const char *msg);

void mem_bswap_64(void *src, int byte_size);
+void mem_bswap_32(void *src, int byte_size);
void perf_event__attr_swap(struct perf_event_attr *attr);

int perf_session__create_kernel_maps(struct perf_session *self);
--
1.7.1

2012-06-14 10:07:18

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes


* Arnaldo Carvalho de Melo <[email protected]> wrote:

> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit 9ee6ddc9dada9cc4b2201631bc74fbf203183a10:
>
> Merge branch 'tip/perf/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent (2012-06-08 12:23:22 +0200)
>
> are available in the git repository at:
>
>
> git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux tags/perf-urgent-for-mingo
>
> for you to fetch changes up to cb9dd49e11f83d548c822d7022ac180b0518b25c:
>
> perf tools: Fix synthesizing tracepoint names from the perf.data headers (2012-06-12 11:28:09 -0300)
>
> ----------------------------------------------------------------
> Fixes for perf/urgent
>
> . Set name of tracepoints when reading the perf.data headers, so that
> we don't end up using the local ones, from /sys.
>
> . Fix default output file for perf stat, from Stephane Eranian.
>
> . Fix endian handling of features bitmask in perf.data header, from David Ahern
>
> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (1):
> perf tools: Fix synthesizing tracepoint names from the perf.data headers
>
> David Ahern (1):
> perf tools: Fix endianity swapping for adds_features bitmask
>
> Stephane Eranian (1):
> perf stat: Fix default output file
>
> tools/perf/builtin-stat.c | 8 +++++-
> tools/perf/util/header.c | 48 +++++++++++++++++++++++++++-----
> tools/perf/util/include/linux/bitops.h | 2 ++
> tools/perf/util/session.c | 10 +++++++
> tools/perf/util/session.h | 1 +
> 5 files changed, 61 insertions(+), 8 deletions(-)

Hm, fails to build here:

CC util/parse-events-bison.o
util/parse-events.l: In function ‘__value’:
util/parse-events.l:18:10: error: ‘PE_ERROR’ undeclared (first
use in this function)
util/parse-events.l:18:10: note: each undeclared identifier is
reported only once for each function it appears in
util/parse-events.l:20:2: error: ‘parse_events_lval’ undeclared
(first use in this function)
util/parse-events.l: In function ‘value’:
util/parse-events.l:26:42: error: ‘PE_VALUE’ undeclared (first
use in this function)
util/parse-events.l: In function ‘raw’:
util/parse-events.l:31:44: error: ‘PE_RAW’ undeclared (first use
in this function)
util/parse-events.l: In function ‘str’:

stock Fedora 17 install. 25f42985825d builds fine.

Thanks,

Ingo

2012-06-14 15:11:56

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes

Em Thu, Jun 14, 2012 at 12:07:10PM +0200, Ingo Molnar escreveu:
> * Arnaldo Carvalho de Melo <[email protected]> wrote:
> Hm, fails to build here:
>
> CC util/parse-events-bison.o
> util/parse-events.l: In function ‘__value’:
> util/parse-events.l:18:10: error: ‘PE_ERROR’ undeclared (first
> use in this function)
> util/parse-events.l:18:10: note: each undeclared identifier is
> reported only once for each function it appears in
> util/parse-events.l:20:2: error: ‘parse_events_lval’ undeclared
> (first use in this function)
> util/parse-events.l: In function ‘value’:
> util/parse-events.l:26:42: error: ‘PE_VALUE’ undeclared (first
> use in this function)
> util/parse-events.l: In function ‘raw’:
> util/parse-events.l:31:44: error: ‘PE_RAW’ undeclared (first use
> in this function)
> util/parse-events.l: In function ‘str’:
>
> stock Fedora 17 install. 25f42985825d builds fine.

Oops, fixing...

- Arnaldo

2012-06-15 17:13:24

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes

Em Thu, Jun 14, 2012 at 12:07:10PM +0200, Ingo Molnar escreveu:
> Hm, fails to build here:
>
> CC util/parse-events-bison.o
> util/parse-events.l: In function ‘__value’:
> util/parse-events.l:18:10: error: ‘PE_ERROR’ undeclared (first
> use in this function)
> util/parse-events.l:18:10: note: each undeclared identifier is
> reported only once for each function it appears in
> util/parse-events.l:20:2: error: ‘parse_events_lval’ undeclared
> (first use in this function)
> util/parse-events.l: In function ‘value’:
> util/parse-events.l:26:42: error: ‘PE_VALUE’ undeclared (first
> use in this function)
> util/parse-events.l: In function ‘raw’:
> util/parse-events.l:31:44: error: ‘PE_RAW’ undeclared (first use
> in this function)
> util/parse-events.l: In function ‘str’:
>
> stock Fedora 17 install. 25f42985825d builds fine.

Is this 32-bit? I'm installing another VM now, but on Fedora 17 x86_64:

[acme@fedora17 linux]$ mkdir -p ../build/perf
[acme@fedora17 linux]$ make -j2 O=/home/acme/git/build/perf -C tools/perf/
make: Entering directory `/home/acme/git/linux/tools/perf'
MKDIR /home/acme/git/build/perf/arch/x86/util/
MKDIR /home/acme/git/build/perf/bench/
MKDIR /home/acme/git/build/perf/scripts/python/Perf-Trace-Util/
MKDIR /home/acme/git/build/perf/ui/
MKDIR /home/acme/git/build/perf/ui/browsers/
MKDIR /home/acme/git/build/perf/ui/gtk/
MKDIR /home/acme/git/build/perf/ui/tui/
MKDIR /home/acme/git/build/perf/util/
MKDIR /home/acme/git/build/perf/util/scripting-engines/
PERF_VERSION = 3.5.rc1.87.gcb9dd4
make: Leaving directory `/home/acme/git/linux/tools/perf'
make: Entering directory `/home/acme/git/linux/tools/perf'
GEN /home/acme/git/build/perf/common-cmds.h
* new build flags or prefix
CC /home/acme/git/build/perf/bench/mem-memcpy-x86-64-asm.o
CC /home/acme/git/build/perf/bench/mem-memset-x86-64-asm.o
CC /home/acme/git/build/perf/bench/mem-memcpy.o
CC /home/acme/git/build/perf/bench/mem-memset.o
CC /home/acme/git/build/perf/builtin-diff.o
CC /home/acme/git/build/perf/builtin-evlist.o
CC /home/acme/git/build/perf/builtin-help.o
CC /home/acme/git/build/perf/builtin-sched.o
CC /home/acme/git/build/perf/builtin-buildid-list.o
CC /home/acme/git/build/perf/builtin-buildid-cache.o
CC /home/acme/git/build/perf/builtin-list.o
CC /home/acme/git/build/perf/builtin-record.o
CC /home/acme/git/build/perf/builtin-report.o
CC /home/acme/git/build/perf/builtin-stat.o
CC /home/acme/git/build/perf/builtin-timechart.o
CC /home/acme/git/build/perf/builtin-top.o
CC /home/acme/git/build/perf/builtin-script.o
CC /home/acme/git/build/perf/builtin-probe.o
CC /home/acme/git/build/perf/builtin-kmem.o
CC /home/acme/git/build/perf/builtin-lock.o
CC /home/acme/git/build/perf/builtin-kvm.o
CC /home/acme/git/build/perf/builtin-test.o
CC /home/acme/git/build/perf/builtin-inject.o
CC /home/acme/git/build/perf/util/abspath.o
CC /home/acme/git/build/perf/util/alias.o
CC /home/acme/git/build/perf/util/annotate.o
CC /home/acme/git/build/perf/util/build-id.o
CC /home/acme/git/build/perf/util/config.o
CC /home/acme/git/build/perf/util/ctype.o
CC /home/acme/git/build/perf/util/debugfs.o
CC /home/acme/git/build/perf/util/sysfs.o
FLEX /home/acme/git/build/perf/util/pmu-flex.c
BISON /home/acme/git/build/perf/util/pmu-bison.c
CC /home/acme/git/build/perf/util/environment.o
CC /home/acme/git/build/perf/util/event.o
CC /home/acme/git/build/perf/util/evlist.o
CC /home/acme/git/build/perf/util/evsel.o
CC /home/acme/git/build/perf/util/exec_cmd.o
CC /home/acme/git/build/perf/util/help.o
CC /home/acme/git/build/perf/util/levenshtein.o
CC /home/acme/git/build/perf/util/parse-options.o
FLEX /home/acme/git/build/perf/util/parse-events-flex.c
BISON /home/acme/git/build/perf/util/parse-events-bison.c
CC /home/acme/git/build/perf/util/parse-events-test.o
CC /home/acme/git/build/perf/util/path.o
CC /home/acme/git/build/perf/util/rbtree.o
CC /home/acme/git/build/perf/util/bitmap.o
CC /home/acme/git/build/perf/util/hweight.o
CC /home/acme/git/build/perf/util/run-command.o
CC /home/acme/git/build/perf/util/quote.o
CC /home/acme/git/build/perf/util/strbuf.o
CC /home/acme/git/build/perf/util/string.o
CC /home/acme/git/build/perf/util/strlist.o
CC /home/acme/git/build/perf/util/strfilter.o
CC /home/acme/git/build/perf/util/top.o
CC /home/acme/git/build/perf/util/usage.o
CC /home/acme/git/build/perf/util/wrapper.o
CC /home/acme/git/build/perf/util/sigchain.o
CC /home/acme/git/build/perf/util/symbol.o
CC /home/acme/git/build/perf/util/color.o
CC /home/acme/git/build/perf/util/pager.o
CC /home/acme/git/build/perf/util/header.o
CC /home/acme/git/build/perf/util/callchain.o
CC /home/acme/git/build/perf/util/values.o
CC /home/acme/git/build/perf/util/debug.o
CC /home/acme/git/build/perf/util/map.o
CC /home/acme/git/build/perf/util/pstack.o
CC /home/acme/git/build/perf/util/session.o
CC /home/acme/git/build/perf/util/thread.o
CC /home/acme/git/build/perf/util/thread_map.o
CC /home/acme/git/build/perf/util/trace-event-parse.o
CC /home/acme/git/build/perf/util/parse-events-flex.o
CC /home/acme/git/build/perf/util/parse-events-bison.o
CC /home/acme/git/build/perf/util/pmu-flex.o
CC /home/acme/git/build/perf/util/pmu-bison.o
CC /home/acme/git/build/perf/util/trace-event-read.o
CC /home/acme/git/build/perf/util/trace-event-info.o
CC /home/acme/git/build/perf/util/trace-event-scripting.o
CC /home/acme/git/build/perf/util/svghelper.o
CC /home/acme/git/build/perf/util/sort.o
CC /home/acme/git/build/perf/util/hist.o
CC /home/acme/git/build/perf/util/probe-event.o
CC /home/acme/git/build/perf/util/util.o
CC /home/acme/git/build/perf/util/xyarray.o
CC /home/acme/git/build/perf/util/cpumap.o
CC /home/acme/git/build/perf/util/cgroup.o
CC /home/acme/git/build/perf/util/target.o
CC /home/acme/git/build/perf/arch/x86/util/dwarf-regs.o
CC /home/acme/git/build/perf/arch/x86/util/header.o
CC /home/acme/git/build/perf/util/probe-finder.o
CC /home/acme/git/build/perf/util/dwarf-aux.o
CC /home/acme/git/build/perf/ui/setup.o
CC /home/acme/git/build/perf/ui/browser.o
CC /home/acme/git/build/perf/ui/browsers/annotate.o
CC /home/acme/git/build/perf/ui/browsers/hists.o
CC /home/acme/git/build/perf/ui/browsers/map.o
CC /home/acme/git/build/perf/ui/helpline.o
CC /home/acme/git/build/perf/ui/progress.o
CC /home/acme/git/build/perf/ui/util.o
CC /home/acme/git/build/perf/ui/tui/setup.o
CC /home/acme/git/build/perf/ui/gtk/browser.o
CC /home/acme/git/build/perf/ui/gtk/setup.o
CC /home/acme/git/build/perf/util/scripting-engines/trace-event-python.o
CC /home/acme/git/build/perf/scripts/python/Perf-Trace-Util/Context.o
make[1]: Entering directory `/home/acme/git/linux/tools/lib/traceevent'
make[2]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
GEN perf-archive
CC FPIC event-parse.o
GEN /home/acme/git/build/perf/python/perf.so
CC FPIC trace-seq.o
CC FPIC parse-filter.o
CC FPIC parse-utils.o
BUILD STATIC LIB libtraceevent.a
make[1]: Leaving directory `/home/acme/git/linux/tools/lib/traceevent'
CC /home/acme/git/build/perf/perf.o
CC /home/acme/git/build/perf/builtin-annotate.o
CC /home/acme/git/build/perf/builtin-bench.o
CC /home/acme/git/build/perf/bench/sched-messaging.o
CC /home/acme/git/build/perf/bench/sched-pipe.o
CC /home/acme/git/build/perf/util/pmu.o
CC /home/acme/git/build/perf/util/parse-events.o
AR /home/acme/git/build/perf/libperf.a
LINK /home/acme/git/build/perf/perf
make: Leaving directory `/home/acme/git/linux/tools/perf'
[acme@fedora17 linux]$ cat /etc/fedora-release
Fedora release 17 (Beefy Miracle)
[acme@fedora17 linux]$
[acme@fedora17 linux]$ git describe
perf-urgent-for-mingo
[acme@fedora17 linux]$ git describe --match 'v[0-9].[0-9]*'
v3.5-rc1-87-gcb9dd49
[acme@fedora17 linux]$ git branch | grep '*'
* perf/urgent
[acme@fedora17 linux]$ uname -a
Linux fedora17.ghostprotocols.net 3.4.0-1.fc17.x86_64 #1 SMP Sun Jun 3 06:35:17 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
[acme@fedora17 linux]$

2012-06-15 18:28:25

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes


* Arnaldo Carvalho de Melo <[email protected]> wrote:

> Em Thu, Jun 14, 2012 at 12:07:10PM +0200, Ingo Molnar escreveu:
> > Hm, fails to build here:
> >
> > CC util/parse-events-bison.o
> > util/parse-events.l: In function ‘__value’:
> > util/parse-events.l:18:10: error: ‘PE_ERROR’ undeclared (first
> > use in this function)
> > util/parse-events.l:18:10: note: each undeclared identifier is
> > reported only once for each function it appears in
> > util/parse-events.l:20:2: error: ‘parse_events_lval’ undeclared
> > (first use in this function)
> > util/parse-events.l: In function ‘value’:
> > util/parse-events.l:26:42: error: ‘PE_VALUE’ undeclared (first
> > use in this function)
> > util/parse-events.l: In function ‘raw’:
> > util/parse-events.l:31:44: error: ‘PE_RAW’ undeclared (first use
> > in this function)
> > util/parse-events.l: In function ‘str’:
> >
> > stock Fedora 17 install. 25f42985825d builds fine.
>
> Is this 32-bit? I'm installing another VM now, but on Fedora 17 x86_64:

No, 64-bit - I'll send you more info off-list.

Thanks,

Ingo

2012-06-15 18:35:11

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes


The build does not want to fail anymore :-/

I have no idea what state my tree was in - but I re-applied your
patches and the failure happened again in 'make -j':

CC builtin-help.o
CC builtin-timechart.o
util/parse-events.l: In function ‘__value’:
util/parse-events.l:18:10: error: ‘PE_ERROR’ undeclared (first
use in this function)
util/parse-events.l:18:10: note: each undeclared identifier is
reported only once for each function it appears in
util/parse-events.l:20:2: error: ‘parse_events_lval’ undeclared
(first use in this function)
util/parse-events.l: In function ‘value’:
util/parse-events.l:26:42: error: ‘PE_VALUE’ undeclared (first
use in this function)

then I took off the last patch and did a 'make' - and the bug
did not re-trigger, even after applying your patches again.

It could be some sort of build dependency problem with the flex
files.

Thanks,

Ingo

2012-06-15 19:03:45

by Ingo Molnar

[permalink] [raw]
Subject: Re: [GIT PULL 0/3] perf/urgent fixes


so, the build dependency bug is hard to trigger and I've pulled
your fixes for the time being because they seem to be unrelated.

Thanks,

Ingo