mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
perf/urgent fixes:
. Fix perf to use non-executable stack, again (Mathias Krause) . Remove extra '/' character in events file path (Xia Kaixu) . Search for modules in %s/lib/modules/%s (Richard Yao) . Build related fixies plus static build test (Jiri Olsa) . Fix stack map lookup in dwarf unwind test (Jiri Olsa) Signed-off-by: Jiri Olsa <jolsa@kernel.org> -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJTYRD/AAoJEPZqUSBWB3s9LkwP/R0KGNG34F50GKF9nmWsUmKh HUN+omhZeN8B0ZQj9i88Mr4pim2H9heNNlyMUzXt0kmbyteCOnH1sJj8dhhalZ6f wroBjUJL5RI26u8TKlD9muOi42+YdhjL194FJsvRTqPGRWknVeop/w9S7yZbKRtp XAeYNrj2fHa58xfPwaJ4PWXcgQXr/dGED56rpya3NkfbCDn7h7vvZyClJoXqRdXO 6gVdS/DoPuNnFPcYSgdyNBYz3Ojp8urwDU11dV741e0ZQjLnY1j/ENN5O3kXi88c 8lf2xR9KZdP2iFDnZ+cvuFH4TucHvegmwwI1ZdFUXrlI2mVeKBLh9jFasZUx4SR8 FEt4o5uUyJjrTY2fnbv7PaF2J/hZXzC0hDZJdiC9PXgwn/JPjg4Wr5N/Wld3tZD9 RVGudpPLSozRYBdmqr8qUBk5gdCqo9TLy60pZWVk38HQ8nERZoKhnuBtzoeLFF5J YEFOgh+ka2jdi5XdAMt8x+ZuLccY8rdc8WtlyctGwJ/Om5wRViDHl8jfEBlN/iHe A9m7kjSQIJPFtU7novc9ZjHpYfA/PD6OALyGZEr6OSho7NcVlMOTNij1tQDXyPhS 6sk01hXabHBZVQLtkIdHHUI/Dq82SH+y4ox2V7Ewy/iG0nc5Qy5nFLozUWpvqoud GbAFlvgFiX/NODLjweCl =FCkp -----END PGP SIGNATURE----- Merge tag 'perf-urgent-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf into perf/urgent Pull perf/urgent fixes from Jiri Olsa: * Fix perf to use non-executable stack, again (Mathias Krause) * Remove extra '/' character in events file path (Xia Kaixu) * Search for modules in %s/lib/modules/%s (Richard Yao) * Build related fixies plus static build test (Jiri Olsa) * Fix stack map lookup in dwarf unwind test (Jiri Olsa) Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
399f0c220a
@ -12,8 +12,8 @@
|
||||
char debugfs_mountpoint[PATH_MAX + 1] = "/sys/kernel/debug";
|
||||
|
||||
static const char * const debugfs_known_mountpoints[] = {
|
||||
"/sys/kernel/debug/",
|
||||
"/debug/",
|
||||
"/sys/kernel/debug",
|
||||
"/debug",
|
||||
0,
|
||||
};
|
||||
|
||||
|
@ -589,7 +589,7 @@ $(GTK_OBJS): $(OUTPUT)%.o: %.c $(LIB_H)
|
||||
$(QUIET_CC)$(CC) -o $@ -c -fPIC $(CFLAGS) $(GTK_CFLAGS) $<
|
||||
|
||||
$(OUTPUT)libperf-gtk.so: $(GTK_OBJS) $(PERFLIBS)
|
||||
$(QUIET_LINK)$(CC) -o $@ -shared $(ALL_LDFLAGS) $(filter %.o,$^) $(GTK_LIBS)
|
||||
$(QUIET_LINK)$(CC) -o $@ -shared $(LDFLAGS) $(filter %.o,$^) $(GTK_LIBS)
|
||||
|
||||
$(OUTPUT)builtin-help.o: builtin-help.c $(OUTPUT)common-cmds.h $(OUTPUT)PERF-CFLAGS
|
||||
$(QUIET_CC)$(CC) -o $@ -c $(CFLAGS) \
|
||||
|
@ -23,7 +23,7 @@ static int sample_ustack(struct perf_sample *sample,
|
||||
|
||||
sp = (unsigned long) regs[PERF_REG_X86_SP];
|
||||
|
||||
map = map_groups__find(&thread->mg, MAP__FUNCTION, (u64) sp);
|
||||
map = map_groups__find(&thread->mg, MAP__VARIABLE, (u64) sp);
|
||||
if (!map) {
|
||||
pr_debug("failed to get stack map\n");
|
||||
free(buf);
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
#include <linux/linkage.h>
|
||||
|
||||
#define AX 0
|
||||
@ -90,3 +89,10 @@ ENTRY(perf_regs_load)
|
||||
ret
|
||||
ENDPROC(perf_regs_load)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* We need to provide note.GNU-stack section, saying that we want
|
||||
* NOT executable stack. Otherwise the final linking will assume that
|
||||
* the ELF stack should not be restricted at all and set it RWX.
|
||||
*/
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
|
@ -117,6 +117,10 @@ CFLAGS += -Wall
|
||||
CFLAGS += -Wextra
|
||||
CFLAGS += -std=gnu99
|
||||
|
||||
# Enforce a non-executable stack, as we may regress (again) in the future by
|
||||
# adding assembler files missing the .GNU-stack linker note.
|
||||
LDFLAGS += -Wl,-z,noexecstack
|
||||
|
||||
EXTLIBS = -lelf -lpthread -lrt -lm -ldl
|
||||
|
||||
ifneq ($(OUTPUT),)
|
||||
@ -194,7 +198,10 @@ VF_FEATURE_TESTS = \
|
||||
stackprotector-all \
|
||||
timerfd \
|
||||
libunwind-debug-frame \
|
||||
bionic
|
||||
bionic \
|
||||
liberty \
|
||||
liberty-z \
|
||||
cplus-demangle
|
||||
|
||||
# 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
|
||||
@ -512,7 +519,21 @@ else
|
||||
endif
|
||||
|
||||
ifeq ($(feature-libbfd), 1)
|
||||
EXTLIBS += -lbfd -lz -liberty
|
||||
EXTLIBS += -lbfd
|
||||
|
||||
# call all detections now so we get correct
|
||||
# status in VF output
|
||||
$(call feature_check,liberty)
|
||||
$(call feature_check,liberty-z)
|
||||
$(call feature_check,cplus-demangle)
|
||||
|
||||
ifeq ($(feature-liberty), 1)
|
||||
EXTLIBS += -liberty
|
||||
else
|
||||
ifeq ($(feature-liberty-z), 1)
|
||||
EXTLIBS += -liberty -lz
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifdef NO_DEMANGLE
|
||||
@ -523,15 +544,10 @@ else
|
||||
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
|
||||
else
|
||||
ifneq ($(feature-libbfd), 1)
|
||||
$(call feature_check,liberty)
|
||||
ifeq ($(feature-liberty), 1)
|
||||
EXTLIBS += -lbfd -liberty
|
||||
else
|
||||
$(call feature_check,liberty-z)
|
||||
ifeq ($(feature-liberty-z), 1)
|
||||
EXTLIBS += -lbfd -liberty -lz
|
||||
else
|
||||
$(call feature_check,cplus-demangle)
|
||||
ifneq ($(feature-liberty), 1)
|
||||
ifneq ($(feature-liberty-z), 1)
|
||||
# we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
|
||||
# or any of 'bfd iberty z' trinity
|
||||
ifeq ($(feature-cplus-demangle), 1)
|
||||
EXTLIBS += -liberty
|
||||
CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
|
||||
|
@ -46,6 +46,7 @@ make_install_man := install-man
|
||||
make_install_html := install-html
|
||||
make_install_info := install-info
|
||||
make_install_pdf := install-pdf
|
||||
make_static := LDFLAGS=-static
|
||||
|
||||
# all the NO_* variable combined
|
||||
make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
|
||||
@ -87,6 +88,7 @@ run += make_install_bin
|
||||
# run += make_install_info
|
||||
# run += make_install_pdf
|
||||
run += make_minimal
|
||||
run += make_static
|
||||
|
||||
ifneq ($(call has,ctags),)
|
||||
run += make_tags
|
||||
|
@ -717,7 +717,7 @@ static char *get_kernel_version(const char *root_dir)
|
||||
}
|
||||
|
||||
static int map_groups__set_modules_path_dir(struct map_groups *mg,
|
||||
const char *dir_name)
|
||||
const char *dir_name, int depth)
|
||||
{
|
||||
struct dirent *dent;
|
||||
DIR *dir = opendir(dir_name);
|
||||
@ -742,7 +742,15 @@ static int map_groups__set_modules_path_dir(struct map_groups *mg,
|
||||
!strcmp(dent->d_name, ".."))
|
||||
continue;
|
||||
|
||||
ret = map_groups__set_modules_path_dir(mg, path);
|
||||
/* Do not follow top-level source and build symlinks */
|
||||
if (depth == 0) {
|
||||
if (!strcmp(dent->d_name, "source") ||
|
||||
!strcmp(dent->d_name, "build"))
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = map_groups__set_modules_path_dir(mg, path,
|
||||
depth + 1);
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
} else {
|
||||
@ -786,11 +794,11 @@ static int machine__set_modules_path(struct machine *machine)
|
||||
if (!version)
|
||||
return -1;
|
||||
|
||||
snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s/kernel",
|
||||
snprintf(modules_path, sizeof(modules_path), "%s/lib/modules/%s",
|
||||
machine->root_dir, version);
|
||||
free(version);
|
||||
|
||||
return map_groups__set_modules_path_dir(&machine->kmaps, modules_path);
|
||||
return map_groups__set_modules_path_dir(&machine->kmaps, modules_path, 0);
|
||||
}
|
||||
|
||||
static int machine__create_module(void *arg, const char *name, u64 start)
|
||||
|
Loading…
Reference in New Issue
Block a user