Merge branch 'perf/urgent' into perf/core
Conflicts: tools/perf/Makefile Merge reason: resolve the conflict. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
commit
22a4e4c435
|
@ -128,7 +128,6 @@ _GLOBAL(__restore_cpu_power7)
|
||||||
/* place holder */
|
/* place holder */
|
||||||
blr
|
blr
|
||||||
|
|
||||||
#ifdef CONFIG_EVENT_TRACING
|
|
||||||
/*
|
/*
|
||||||
* Get a minimal set of registers for our caller's nth caller.
|
* Get a minimal set of registers for our caller's nth caller.
|
||||||
* r3 = regs pointer, r5 = n.
|
* r3 = regs pointer, r5 = n.
|
||||||
|
@ -154,4 +153,3 @@ _GLOBAL(perf_arch_fetch_caller_regs)
|
||||||
PPC_STL r4,_NIP-STACK_FRAME_OVERHEAD(r3)
|
PPC_STL r4,_NIP-STACK_FRAME_OVERHEAD(r3)
|
||||||
PPC_STL r7,_LINK-STACK_FRAME_OVERHEAD(r3)
|
PPC_STL r7,_LINK-STACK_FRAME_OVERHEAD(r3)
|
||||||
blr
|
blr
|
||||||
#endif /* CONFIG_EVENT_TRACING */
|
|
||||||
|
|
|
@ -2788,12 +2788,11 @@ __weak struct perf_callchain_entry *perf_callchain(struct pt_regs *regs)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_EVENT_TRACING
|
|
||||||
__weak
|
__weak
|
||||||
void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip)
|
void perf_arch_fetch_caller_regs(struct pt_regs *regs, unsigned long ip, int skip)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Output
|
* Output
|
||||||
|
|
|
@ -210,7 +210,7 @@ endif
|
||||||
|
|
||||||
CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
|
CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror $(CFLAGS_OPTIMIZE) -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
|
||||||
EXTLIBS = -lpthread -lrt -lelf -lm
|
EXTLIBS = -lpthread -lrt -lelf -lm
|
||||||
ALL_CFLAGS = $(CFLAGS)
|
ALL_CFLAGS = $(CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
|
||||||
ALL_LDFLAGS = $(LDFLAGS)
|
ALL_LDFLAGS = $(LDFLAGS)
|
||||||
STRIP ?= strip
|
STRIP ?= strip
|
||||||
|
|
||||||
|
@ -505,19 +505,19 @@ ifneq ($(OUTPUT),)
|
||||||
BASIC_CFLAGS += -I$(OUTPUT)
|
BASIC_CFLAGS += -I$(OUTPUT)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
ifeq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
||||||
ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
ifneq ($(shell sh -c "(echo '\#include <gnu/libc-version.h>'; echo 'int main(void) { const char * version = gnu_get_libc_version(); return (long)version; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
||||||
msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
|
msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]/glibc-static);
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
ifneq ($(shell sh -c "(echo '\#include <libelf.h>'; echo 'int main(void) { Elf * elf = elf_begin(0, ELF_C_READ_MMAP, 0); return (long)elf; }') | $(CC) -x c - $(ALL_CFLAGS) -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
||||||
BASIC_CFLAGS += -DLIBELF_NO_MMAP
|
BASIC_CFLAGS += -DLIBELF_NO_MMAP
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
|
msg := $(error No libelf.h/libelf found, please install libelf-dev/elfutils-libelf-devel and glibc-dev[el]);
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(shell sh -c "(echo '\#include <dwarf.h>'; echo '\#include <libdw.h>'; echo 'int main(void) { Dwarf *dbg; dbg = dwarf_begin(0, DWARF_C_READ); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/elfutils -ldw -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
ifneq ($(shell sh -c "(echo '\#include <dwarf.h>'; echo '\#include <libdw.h>'; echo 'int main(void) { Dwarf *dbg; dbg = dwarf_begin(0, DWARF_C_READ); return (long)dbg; }') | $(CC) -x c - $(ALL_CFLAGS) -I/usr/include/elfutils -ldw -lelf -o $(BITBUCKET) $(ALL_LDFLAGS) $(EXTLIBS) "$(QUIET_STDERR)" && echo y"), y)
|
||||||
msg := $(warning No libdw.h found or old libdw.h found, disables dwarf support. Please install elfutils-devel/elfutils-dev);
|
msg := $(warning No libdw.h found or old libdw.h found, disables dwarf support. Please install elfutils-devel/elfutils-dev);
|
||||||
else
|
else
|
||||||
ifndef NO_DWARF
|
ifndef NO_DWARF
|
||||||
|
|
|
@ -208,7 +208,7 @@ static void python_process_event(int cpu, void *data,
|
||||||
int size __unused,
|
int size __unused,
|
||||||
unsigned long long nsecs, char *comm)
|
unsigned long long nsecs, char *comm)
|
||||||
{
|
{
|
||||||
PyObject *handler, *retval, *context, *t;
|
PyObject *handler, *retval, *context, *t, *obj;
|
||||||
static char handler_name[256];
|
static char handler_name[256];
|
||||||
struct format_field *field;
|
struct format_field *field;
|
||||||
unsigned long long val;
|
unsigned long long val;
|
||||||
|
@ -256,16 +256,23 @@ static void python_process_event(int cpu, void *data,
|
||||||
offset &= 0xffff;
|
offset &= 0xffff;
|
||||||
} else
|
} else
|
||||||
offset = field->offset;
|
offset = field->offset;
|
||||||
PyTuple_SetItem(t, n++,
|
obj = PyString_FromString((char *)data + offset);
|
||||||
PyString_FromString((char *)data + offset));
|
|
||||||
} else { /* FIELD_IS_NUMERIC */
|
} else { /* FIELD_IS_NUMERIC */
|
||||||
val = read_size(data + field->offset, field->size);
|
val = read_size(data + field->offset, field->size);
|
||||||
if (field->flags & FIELD_IS_SIGNED) {
|
if (field->flags & FIELD_IS_SIGNED) {
|
||||||
PyTuple_SetItem(t, n++, PyInt_FromLong(val));
|
if ((long long)val >= LONG_MIN &&
|
||||||
|
(long long)val <= LONG_MAX)
|
||||||
|
obj = PyInt_FromLong(val);
|
||||||
|
else
|
||||||
|
obj = PyLong_FromLongLong(val);
|
||||||
} else {
|
} else {
|
||||||
PyTuple_SetItem(t, n++, PyInt_FromLong(val));
|
if (val <= LONG_MAX)
|
||||||
|
obj = PyInt_FromLong(val);
|
||||||
|
else
|
||||||
|
obj = PyLong_FromUnsignedLongLong(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
PyTuple_SetItem(t, n++, obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_PyTuple_Resize(&t, n) == -1)
|
if (_PyTuple_Resize(&t, n) == -1)
|
||||||
|
|
Reference in New Issue