Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f7d5564 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull perf fixes from Thomas Gleixner:
 "This update contains:

   - a fix for the bpf tools to use the new EM_BPF code

   - a fix for the module parser of perf to retrieve the
     proper text start address

   - add str_error_c to libapi to avoid linking against
     tools/lib/str_error_r.o"

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  tools lib api: Add str_error_c to libapi
  perf s390: Fix 'start' address of module's map
  tools lib bpf: Use official ELF e_machine value
parents 228ffba2 9ecabede
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -2,3 +2,8 @@ libapi-y += fd/
libapi-y += fs/
libapi-y += cpu.o
libapi-y += debug.o
libapi-y += str_error_r.o

$(OUTPUT)str_error_r.o: ../str_error_r.c FORCE
	$(call rule_mkdir)
	$(call if_changed_dep,cc_o_c)
+6 −1
Original line number Diff line number Diff line
@@ -37,6 +37,10 @@
#include "libbpf.h"
#include "bpf.h"

#ifndef EM_BPF
#define EM_BPF 247
#endif

#define __printf(a, b)	__attribute__((format(printf, a, b)))

__printf(1, 2)
@@ -439,7 +443,8 @@ static int bpf_object__elf_init(struct bpf_object *obj)
	}
	ep = &obj->efile.ehdr;

	if ((ep->e_type != ET_REL) || (ep->e_machine != 0)) {
	/* Old LLVM set e_machine to EM_NONE */
	if ((ep->e_type != ET_REL) || (ep->e_machine && (ep->e_machine != EM_BPF))) {
		pr_warning("%s is not an eBPF object file\n",
			obj->path);
		err = -LIBBPF_ERRNO__FORMAT;
+2 −0
Original line number Diff line number Diff line
@@ -2,3 +2,5 @@ libperf-y += header.o
libperf-y += kvm-stat.o

libperf-$(CONFIG_DWARF) += dwarf-regs.o

libperf-y += machine.o
+19 −0
Original line number Diff line number Diff line
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include "util.h"
#include "machine.h"
#include "api/fs/fs.h"

int arch__fix_module_text_start(u64 *start, const char *name)
{
	char path[PATH_MAX];

	snprintf(path, PATH_MAX, "module/%.*s/sections/.text",
				(int)strlen(name) - 2, name + 1);

	if (sysfs__read_ull(path, (unsigned long long *)start) < 0)
		return -1;

	return 0;
}
+0 −5
Original line number Diff line number Diff line
@@ -70,7 +70,6 @@ libperf-y += stat.o
libperf-y += stat-shadow.o
libperf-y += record.o
libperf-y += srcline.o
libperf-y += str_error_r.o
libperf-y += data.o
libperf-y += tsc.o
libperf-y += cloexec.o
@@ -176,10 +175,6 @@ $(OUTPUT)util/libstring.o: ../lib/string.c FORCE
	$(call rule_mkdir)
	$(call if_changed_dep,cc_o_c)

$(OUTPUT)util/str_error_r.o: ../lib/str_error_r.c FORCE
	$(call rule_mkdir)
	$(call if_changed_dep,cc_o_c)

$(OUTPUT)util/hweight.o: ../lib/hweight.c FORCE
	$(call rule_mkdir)
	$(call if_changed_dep,cc_o_c)
Loading