linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Adrian Hunter <adrian.hunter@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	David Ahern <dsahern@gmail.com>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@gmail.com>,
	Paul Mackerras <paulus@samba.org>,
	Stephane Eranian <eranian@google.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] perf tools: Build programs to copy 32-bit compatibility VDSOs
Date: Thu, 24 Jul 2014 10:56:33 -0300	[thread overview]
Message-ID: <20140724135633.GR20303@kernel.org> (raw)
In-Reply-To: <1406196354-7139-1-git-send-email-adrian.hunter@intel.com>

Em Thu, Jul 24, 2014 at 01:05:54PM +0300, Adrian Hunter escreveu:
> perf tools copy VDSO out of memory.  However, on 64-bit
> machines there may be 32-bit compatibility VDOs also.  To
> copy those requires separate 32-bit executables.  This
> patch adds to the build additional programs perf-read-vdso32
> and perf-read-vdsox32 for 32-bit and x32 respectively.
> 
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> ---
> 
> 
> V2:
> 	Move -m32/-mx32 checks under config/features/
> 
> 	Put duplicated find_vdso_map() function into a
> 	separate source file and #include it
> 
> 	Support static build of perf-read-vdso32 and
> 	perf-read-vdsox32

Haven't tested, but from quick look seems OK, Jiri?

- Arnaldo
 
> 
>  tools/perf/Makefile.perf                        | 38 ++++++++++++++++++++++---
>  tools/perf/config/Makefile                      | 25 +++++++++++++++-
>  tools/perf/config/Makefile.arch                 |  8 ++++++
>  tools/perf/config/feature-checks/Makefile       | 10 ++++++-
>  tools/perf/config/feature-checks/test-compile.c |  4 +++
>  tools/perf/perf-read-vdso.c                     | 34 ++++++++++++++++++++++
>  tools/perf/util/find-vdso-map.c                 | 30 +++++++++++++++++++
>  tools/perf/util/vdso.c                          | 37 ++++--------------------
>  8 files changed, 149 insertions(+), 37 deletions(-)
>  create mode 100644 tools/perf/config/feature-checks/test-compile.c
>  create mode 100644 tools/perf/perf-read-vdso.c
>  create mode 100644 tools/perf/util/find-vdso-map.c
> 
> diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
> index 9b1f05d..cd31be6 100644
> --- a/tools/perf/Makefile.perf
> +++ b/tools/perf/Makefile.perf
> @@ -60,6 +60,12 @@ include config/utilities.mak
>  #
>  # Define NO_LIBDW_DWARF_UNWIND if you do not want libdw support
>  # for dwarf backtrace post unwind.
> +#
> +# Define NO_PERF_READ_VDSO32 if you do not want to build perf-read-vdso32
> +# for reading the 32-bit compatibility VDSO in 64-bit mode
> +#
> +# Define NO_PERF_READ_VDSOX32 if you do not want to build perf-read-vdsox32
> +# for reading the x32 mode 32-bit compatibility VDSO in 64-bit mode
>  
>  ifeq ($(srctree),)
>  srctree := $(patsubst %/,%,$(dir $(shell pwd)))
> @@ -171,11 +177,16 @@ $(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS)
>  
>  SCRIPTS = $(patsubst %.sh,%,$(SCRIPT_SH))
>  
> -#
> -# Single 'perf' binary right now:
> -#
>  PROGRAMS += $(OUTPUT)perf
>  
> +ifndef NO_PERF_READ_VDSO32
> +PROGRAMS += $(OUTPUT)perf-read-vdso32
> +endif
> +
> +ifndef NO_PERF_READ_VDSOX32
> +PROGRAMS += $(OUTPUT)perf-read-vdsox32
> +endif
> +
>  # what 'all' will build and 'install' will install, in perfexecdir
>  ALL_PROGRAMS = $(PROGRAMS) $(SCRIPTS)
>  
> @@ -305,6 +316,7 @@ LIB_H += util/data.h
>  LIB_H += util/kvm-stat.h
>  LIB_H += util/thread-stack.h
>  LIB_H += util/db-export.h
> +LIB_H += util/find-vdso-map.c
>  
>  LIB_OBJS += $(OUTPUT)util/abspath.o
>  LIB_OBJS += $(OUTPUT)util/alias.o
> @@ -732,6 +744,16 @@ $(OUTPUT)scripts/python/Perf-Trace-Util/Context.o: scripts/python/Perf-Trace-Uti
>  $(OUTPUT)perf-%: %.o $(PERFLIBS)
>  	$(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS)
>  
> +ifndef NO_PERF_READ_VDSO32
> +$(OUTPUT)perf-read-vdso32: perf-read-vdso.c util/find-vdso-map.c
> +	$(QUIET_CC)$(CC) -m32 $(findstring -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
> +endif
> +
> +ifndef NO_PERF_READ_VDSOX32
> +$(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c
> +	$(QUIET_CC)$(CC) -mx32 $(findstring -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
> +endif
> +
>  $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
>  $(patsubst perf-%,%.o,$(PROGRAMS)): $(LIB_H) $(wildcard */*.h)
>  
> @@ -876,6 +898,14 @@ install-bin: all install-gtk
>  		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'; \
>  		$(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)'; \
>  		$(LN) '$(DESTDIR_SQ)$(bindir_SQ)/perf' '$(DESTDIR_SQ)$(bindir_SQ)/trace'
> +ifndef NO_PERF_READ_VDSO32
> +	$(call QUIET_INSTALL, perf-read-vdso32) \
> +		$(INSTALL) $(OUTPUT)perf-read-vdso32 '$(DESTDIR_SQ)$(bindir_SQ)';
> +endif
> +ifndef NO_PERF_READ_VDSOX32
> +	$(call QUIET_INSTALL, perf-read-vdsox32) \
> +		$(INSTALL) $(OUTPUT)perf-read-vdsox32 '$(DESTDIR_SQ)$(bindir_SQ)';
> +endif
>  	$(call QUIET_INSTALL, libexec) \
>  		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
>  	$(call QUIET_INSTALL, perf-archive) \
> @@ -928,7 +958,7 @@ config-clean:
>  
>  clean: $(LIBTRACEEVENT)-clean $(LIBAPIKFS)-clean config-clean
>  	$(call QUIET_CLEAN, core-objs)  $(RM) $(LIB_OBJS) $(BUILTIN_OBJS) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(OUTPUT)perf.o $(LANG_BINDINGS) $(GTK_OBJS)
> -	$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf
> +	$(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32
>  	$(call QUIET_CLEAN, core-gen)   $(RM)  *.spec *.pyc *.pyo */*.pyc */*.pyo $(OUTPUT)common-cmds.h TAGS tags cscope* $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)PERF-CFLAGS $(OUTPUT)PERF-FEATURES $(OUTPUT)util/*-bison* $(OUTPUT)util/*-flex*
>  	$(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
>  	$(python-clean)
> diff --git a/tools/perf/config/Makefile b/tools/perf/config/Makefile
> index 1f67aa0..81c44cb 100644
> --- a/tools/perf/config/Makefile
> +++ b/tools/perf/config/Makefile
> @@ -211,7 +211,9 @@ VF_FEATURE_TESTS =			\
>  	bionic				\
>  	liberty				\
>  	liberty-z			\
> -	cplus-demangle
> +	cplus-demangle			\
> +	compile-32			\
> +	compile-x32
>  
>  # Set FEATURE_CHECK_(C|LD)FLAGS-all for all CORE_FEATURE_TESTS features.
>  # If in the future we need per-feature checks/flags for features not
> @@ -604,6 +606,27 @@ ifdef HAVE_KVM_STAT_SUPPORT
>      CFLAGS += -DHAVE_KVM_STAT_SUPPORT
>  endif
>  
> +ifeq (${IS_64_BIT}, 1)
> +  ifndef NO_PERF_READ_VDSO32
> +    $(call feature_check,compile-32)
> +    ifneq ($(feature-compile-32), 1)
> +      NO_PERF_READ_VDSO32 := 1
> +    endif
> +  endif
> +  ifneq (${IS_X86_64}, 1)
> +    NO_PERF_READ_VDSOX32 := 1
> +  endif
> +  ifndef NO_PERF_READ_VDSOX32
> +    $(call feature_check,compile-x32)
> +    ifneq ($(feature-compile-x32), 1)
> +      NO_PERF_READ_VDSOX32 := 1
> +    endif
> +  endif
> +else
> +  NO_PERF_READ_VDSO32 := 1
> +  NO_PERF_READ_VDSOX32 := 1
> +endif
> +
>  # Among the variables below, these:
>  #   perfexecdir
>  #   template_dir
> diff --git a/tools/perf/config/Makefile.arch b/tools/perf/config/Makefile.arch
> index 4b06719..851cd01 100644
> --- a/tools/perf/config/Makefile.arch
> +++ b/tools/perf/config/Makefile.arch
> @@ -21,3 +21,11 @@ ifeq ($(ARCH),x86_64)
>      RAW_ARCH := x86_64
>    endif
>  endif
> +
> +ifeq (${IS_X86_64}, 1)
> +  IS_64_BIT := 1
> +else ifeq ($(ARCH),x86)
> +  IS_64_BIT := 0
> +else
> +  IS_64_BIT := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
> +endif
> diff --git a/tools/perf/config/feature-checks/Makefile b/tools/perf/config/feature-checks/Makefile
> index 6088f8d..8065dc5 100644
> --- a/tools/perf/config/feature-checks/Makefile
> +++ b/tools/perf/config/feature-checks/Makefile
> @@ -27,7 +27,9 @@ FILES=					\
>  	test-libunwind-debug-frame.bin	\
>  	test-stackprotector-all.bin	\
>  	test-timerfd.bin		\
> -	test-libdw-dwarf-unwind.bin
> +	test-libdw-dwarf-unwind.bin	\
> +	test-compile-32.bin		\
> +	test-compile-x32.bin
>  
>  CC := $(CROSS_COMPILE)gcc -MD
>  PKG_CONFIG := $(CROSS_COMPILE)pkg-config
> @@ -145,6 +147,12 @@ test-libdw-dwarf-unwind.bin:
>  test-sync-compare-and-swap.bin:
>  	$(BUILD) -Werror
>  
> +test-compile-32.bin:
> +	$(CC) -m32 -o $(OUTPUT)$@ test-compile.c
> +
> +test-compile-x32.bin:
> +	$(CC) -mx32 -o $(OUTPUT)$@ test-compile.c
> +
>  -include *.d
>  
>  ###############################
> diff --git a/tools/perf/config/feature-checks/test-compile.c b/tools/perf/config/feature-checks/test-compile.c
> new file mode 100644
> index 0000000..31dbf45
> --- /dev/null
> +++ b/tools/perf/config/feature-checks/test-compile.c
> @@ -0,0 +1,4 @@
> +int main(void)
> +{
> +	return 0;
> +}
> diff --git a/tools/perf/perf-read-vdso.c b/tools/perf/perf-read-vdso.c
> new file mode 100644
> index 0000000..764e254
> --- /dev/null
> +++ b/tools/perf/perf-read-vdso.c
> @@ -0,0 +1,34 @@
> +#include <stdio.h>
> +#include <string.h>
> +
> +#define VDSO__MAP_NAME "[vdso]"
> +
> +/*
> + * Include definition of find_vdso_map() also used in util/vdso.c for
> + * building perf.
> + */
> +#include "util/find-vdso-map.c"
> +
> +int main(void)
> +{
> +	void *start, *end;
> +	size_t size, written;
> +
> +	if (find_vdso_map(&start, &end))
> +		return 1;
> +
> +	size = end - start;
> +
> +	while (size) {
> +		written = fwrite(start, 1, size, stdout);
> +		if (!written)
> +			return 1;
> +		start += written;
> +		size -= written;
> +	}
> +
> +	if (fflush(stdout))
> +		return 1;
> +
> +	return 0;
> +}
> diff --git a/tools/perf/util/find-vdso-map.c b/tools/perf/util/find-vdso-map.c
> new file mode 100644
> index 0000000..95ef1cf
> --- /dev/null
> +++ b/tools/perf/util/find-vdso-map.c
> @@ -0,0 +1,30 @@
> +static int find_vdso_map(void **start, void **end)
> +{
> +	FILE *maps;
> +	char line[128];
> +	int found = 0;
> +
> +	maps = fopen("/proc/self/maps", "r");
> +	if (!maps) {
> +		fprintf(stderr, "vdso: cannot open maps\n");
> +		return -1;
> +	}
> +
> +	while (!found && fgets(line, sizeof(line), maps)) {
> +		int m = -1;
> +
> +		/* We care only about private r-x mappings. */
> +		if (2 != sscanf(line, "%p-%p r-xp %*x %*x:%*x %*u %n",
> +				start, end, &m))
> +			continue;
> +		if (m < 0)
> +			continue;
> +
> +		if (!strncmp(&line[m], VDSO__MAP_NAME,
> +			     sizeof(VDSO__MAP_NAME) - 1))
> +			found = 1;
> +	}
> +
> +	fclose(maps);
> +	return !found;
> +}
> diff --git a/tools/perf/util/vdso.c b/tools/perf/util/vdso.c
> index a9300f8..36151e6 100644
> --- a/tools/perf/util/vdso.c
> +++ b/tools/perf/util/vdso.c
> @@ -15,6 +15,12 @@
>  #include "linux/string.h"
>  #include "debug.h"
>  
> +/*
> + * Include definition of find_vdso_map() also used in perf-read-vdso.c for
> + * building perf-read-vdso32 and perf-read-vdsox32.
> + */
> +#include "find-vdso-map.c"
> +
>  #define VDSO__TEMP_FILE_NAME "/tmp/perf-vdso.so-XXXXXX"
>  
>  struct vdso_file {
> @@ -40,37 +46,6 @@ static struct vdso_info *vdso_info__new(void)
>  	return memdup(&vdso_info_init, sizeof(vdso_info_init));
>  }
>  
> -static int find_vdso_map(void **start, void **end)
> -{
> -	FILE *maps;
> -	char line[128];
> -	int found = 0;
> -
> -	maps = fopen("/proc/self/maps", "r");
> -	if (!maps) {
> -		pr_err("vdso: cannot open maps\n");
> -		return -1;
> -	}
> -
> -	while (!found && fgets(line, sizeof(line), maps)) {
> -		int m = -1;
> -
> -		/* We care only about private r-x mappings. */
> -		if (2 != sscanf(line, "%p-%p r-xp %*x %*x:%*x %*u %n",
> -				start, end, &m))
> -			continue;
> -		if (m < 0)
> -			continue;
> -
> -		if (!strncmp(&line[m], VDSO__MAP_NAME,
> -			     sizeof(VDSO__MAP_NAME) - 1))
> -			found = 1;
> -	}
> -
> -	fclose(maps);
> -	return !found;
> -}
> -
>  static char *get_file(struct vdso_file *vdso_file)
>  {
>  	char *vdso = NULL;
> -- 
> 1.8.3.2

  reply	other threads:[~2014-07-24 13:56 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-22 13:17 [PATCH 00/52] perf tools: More preparation for call graph from Intel BTS Adrian Hunter
2014-07-22 13:17 ` [PATCH 01/52] perf tools: Fix jump label always changing during tracing Adrian Hunter
2014-07-22 14:00   ` Arnaldo Carvalho de Melo
2014-07-22 14:11     ` Peter Zijlstra
2014-07-23  6:07       ` Adrian Hunter
2014-07-23  6:58         ` Peter Zijlstra
2014-07-23  7:15           ` Adrian Hunter
2014-07-23 14:05             ` Arnaldo Carvalho de Melo
2014-07-23  6:07     ` Adrian Hunter
2014-07-28  8:22   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 02/52] perf tools: Identify which comms are from exec Adrian Hunter
2014-07-22 13:17 ` [PATCH 03/52] perf tools: Add machine__thread_exec_comm() Adrian Hunter
2014-07-22 13:17 ` [PATCH 04/52] perf tools: Fix missing label symbols Adrian Hunter
2014-07-22 13:17 ` [PATCH 05/52] perf tools: Add machine__kernel_ip() Adrian Hunter
2014-07-22 13:17 ` [PATCH 06/52] perf script: Improve srcline display for BTS Adrian Hunter
2014-07-28  8:22   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 07/52] perf script: Do not print dangling '=>' " Adrian Hunter
2014-07-28  8:22   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 08/52] perf tools: Fix incorrect fd error comparison Adrian Hunter
2014-07-22 13:17 ` [PATCH 09/52] perf tools: Record whether a dso has data Adrian Hunter
2014-07-28  8:22   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 10/52] perf tools: Add dso__data_status_seen() Adrian Hunter
2014-07-28  8:23   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 11/52] perf tools: Let a user specify a PMU event without any config terms Adrian Hunter
2014-07-22 13:17 ` [PATCH 12/52] perf tools: Let default config be defined for a PMU Adrian Hunter
2014-07-22 13:17 ` [PATCH 13/52] perf tools: Add perf_pmu__scan_file() Adrian Hunter
2014-07-22 19:09   ` Jiri Olsa
2014-07-23  6:24     ` Adrian Hunter
2014-07-23  9:36       ` Jiri Olsa
2014-07-23 14:25         ` Arnaldo Carvalho de Melo
2014-07-24 10:06           ` Jiri Olsa
2014-07-24 14:02             ` Arnaldo Carvalho de Melo
2014-07-22 13:17 ` [PATCH 14/52] perf tools: Add dsos__hit_all() Adrian Hunter
2014-07-28  8:23   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 15/52] perf tools: Add cpu to struct thread Adrian Hunter
2014-07-28  8:23   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 16/52] perf tools: Add ability to record the current tid for each cpu Adrian Hunter
2014-07-23 14:34   ` Arnaldo Carvalho de Melo
2014-07-28  8:23   ` [tip:perf/core] perf machine: " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 17/52] perf evlist: Add perf_evlist__set_tracking_event() Adrian Hunter
2014-07-22 19:22   ` Jiri Olsa
2014-07-23  6:25     ` Adrian Hunter
2014-07-23 11:00       ` [PATCH V2 " Adrian Hunter
2014-07-23 13:20         ` Jiri Olsa
2014-07-22 13:17 ` [PATCH 18/52] perf evlist: Add 'system_wide' option Adrian Hunter
2014-07-22 13:17 ` [PATCH 19/52] perf tools: Add id index Adrian Hunter
2014-07-22 13:17 ` [PATCH 20/52] perf pmu: Let pmu's with no events show up on perf list Adrian Hunter
2014-07-22 13:17 ` [PATCH 21/52] perf session: Add ability to skip 4GiB or more Adrian Hunter
2014-07-23 14:45   ` Arnaldo Carvalho de Melo
2014-07-23 19:19     ` [PATCH 1/2] perf session: Add ability to 'skip' a non-piped event stream Adrian Hunter
2014-07-23 19:19       ` [PATCH 2/2] perf session: Add ability to skip 4GiB or more Adrian Hunter
2014-07-28  8:24         ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-28  8:24       ` [tip:perf/core] perf session: Add ability to 'skip' a non-piped event stream tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 22/52] perf session: Add perf_session__deliver_synth_event() Adrian Hunter
2014-07-22 13:17 ` [PATCH 23/52] perf tools: Move rdtsc() function Adrian Hunter
2014-07-28  8:23   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 24/52] perf evlist: Add perf_evlist__enable_event_idx() Adrian Hunter
2014-07-22 13:17 ` [PATCH 25/52] perf session: Add perf_session__peek_event() Adrian Hunter
2014-07-22 13:17 ` [PATCH 26/52] perf tools: Add dso__data_size() Adrian Hunter
2014-07-28  8:24   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 27/52] perf tools: Add a thread stack for synthesizing call chains Adrian Hunter
2014-07-22 13:17 ` [PATCH 28/52] perf script: Allow callchains if any event samples them Adrian Hunter
2014-07-25 13:27   ` Arnaldo Carvalho de Melo
2014-07-25 15:32     ` David Ahern
2014-07-27  6:31     ` Adrian Hunter
2014-07-28  1:32     ` Namhyung Kim
2014-07-22 13:17 ` [PATCH 29/52] perf inject: Add --kallsyms parameter Adrian Hunter
2014-07-28  8:27   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 30/52] perf tools: Expose 'addr' functions so they can be reused Adrian Hunter
2014-07-28  8:27   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 31/52] perf tools: Add facility to export data in database-friendly way Adrian Hunter
2014-07-22 13:17 ` [PATCH 32/52] perf tools: Add helpers for calling Python objects Adrian Hunter
2014-07-22 13:17 ` [PATCH 33/52] perf tools: Extend Python script interface to export data in a database-friendly way Adrian Hunter
2014-07-22 13:17 ` [PATCH 34/52] perf tools: Add Python script to export to postgresql Adrian Hunter
2014-07-22 13:17 ` [PATCH 35/52] perf tools: Add flags and insn_len to struct sample Adrian Hunter
2014-07-22 13:17 ` [PATCH 36/52] perf tools: Add branch type to db export Adrian Hunter
2014-07-22 13:17 ` [PATCH 37/52] perf tools: Add branch_type and in_tx to Python export Adrian Hunter
2014-07-22 13:17 ` [PATCH 38/52] perf tools: Enhance the thread stack to output call/return data Adrian Hunter
2014-07-22 13:17 ` [PATCH 39/52] perf tools: Add call information to the database export API Adrian Hunter
2014-07-22 13:17 ` [PATCH 40/52] perf tools: Add call information to Python export Adrian Hunter
2014-07-22 13:17 ` [PATCH 41/52] perf tools: Add 'flush' callback to scripting API Adrian Hunter
2014-07-22 13:17 ` [PATCH 42/52] perf tools: Defer export of comms that were not 'set' Adrian Hunter
2014-07-22 13:17 ` [PATCH 43/52] perf tools: Add perf-with-kcore script Adrian Hunter
2014-07-22 13:17 ` [PATCH 44/52] perf tools: Pass machine to vdso__dso_findnew() Adrian Hunter
2014-07-28  8:24   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 45/52] perf tools: Group VDSO global variables into a structure Adrian Hunter
2014-07-28  8:25   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 46/52] perf tools: Fix the lifetime of the VDSO temporary file Adrian Hunter
2014-07-23 11:23   ` [PATCH V2 " Adrian Hunter
2014-07-28  8:25     ` [tip:perf/core] perf machine: " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 47/52] perf tools: Add vdso__new() Adrian Hunter
2014-07-28  8:25   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 48/52] perf tools: Separate the VDSO map name from the VDSO dso name Adrian Hunter
2014-07-28  8:25   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:17 ` [PATCH 49/52] perf tools: Build programs to copy 32-bit compatibility VDSOs Adrian Hunter
2014-07-23 12:48   ` Jiri Olsa
2014-07-23 13:55     ` Adrian Hunter
2014-07-23 20:44       ` Arnaldo Carvalho de Melo
2014-07-24 10:05         ` [PATCH] " Adrian Hunter
2014-07-24 13:56           ` Arnaldo Carvalho de Melo [this message]
2014-07-22 13:17 ` [PATCH 50/52] perf tools: Add dso__type() Adrian Hunter
2014-07-28  8:26   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:18 ` [PATCH 51/52] perf tools: Add thread parameter to vdso__dso_findnew() Adrian Hunter
2014-07-28  8:26   ` [tip:perf/core] " tip-bot for Adrian Hunter
2014-07-22 13:18 ` [PATCH 52/52] perf tools: Add support for 32-bit compatibility VDSOs Adrian Hunter
2014-07-23 13:02   ` Jiri Olsa
2014-07-23 13:59     ` Adrian Hunter
2014-07-23 23:35       ` Namhyung Kim
2014-07-24  7:31         ` [PATCH V2 " Adrian Hunter
2014-07-23 13:05   ` [PATCH " Jiri Olsa
2014-07-23 13:09     ` Arnaldo Carvalho de Melo
2014-07-23 13:10       ` Jiri Olsa

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=20140724135633.GR20303@kernel.org \
    --to=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=dsahern@gmail.com \
    --cc=eranian@google.com \
    --cc=fweisbec@gmail.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@gmail.com \
    --cc=paulus@samba.org \
    --cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).