From 86b5fea26a0f868bf348d130cb915c758584e930 Mon Sep 17 00:00:00 2001 From: Naveen Saini Date: Fri, 20 Dec 2019 15:24:38 +0800 Subject: linux-intel: remove 4.14 kernel and related patch Remove support for building with 4.14 kernel as new lts kernel v5.4 alreay introduced. Signed-off-by: Naveen Saini Signed-off-by: Anuj Mittal --- recipes-kernel/linux/linux-intel-rt_4.14.bb | 25 - .../0001-perf-tools-Add-Python-3-support.patch | 917 --------------------- ...01-perf-x86-32-explicitly-include-errno.h.patch | 41 - recipes-kernel/linux/linux-intel_4.14.bb | 23 - 4 files changed, 1006 deletions(-) delete mode 100644 recipes-kernel/linux/linux-intel-rt_4.14.bb delete mode 100644 recipes-kernel/linux/linux-intel/0001-perf-tools-Add-Python-3-support.patch delete mode 100644 recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch delete mode 100644 recipes-kernel/linux/linux-intel_4.14.bb (limited to 'recipes-kernel/linux') diff --git a/recipes-kernel/linux/linux-intel-rt_4.14.bb b/recipes-kernel/linux/linux-intel-rt_4.14.bb deleted file mode 100644 index ddf3a1bc..00000000 --- a/recipes-kernel/linux/linux-intel-rt_4.14.bb +++ /dev/null @@ -1,25 +0,0 @@ -require linux-intel.inc - -# Skip processing of this recipe if it is not explicitly specified as the -# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying -# to build multiple virtual/kernel providers, e.g. as dependency of -# core-image-rt-sdk, core-image-rt. -python () { - if d.getVar("KERNEL_PACKAGE_NAME", True) == "kernel" and d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt": - raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it") -} - -KBRANCH = "4.14/preempt-rt" -KMETA_BRANCH = "yocto-4.14" - -# Fix for 32-bit perf issue. Remove when patch is backported to 4.14. -SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch \ - file://0001-perf-tools-Add-Python-3-support.patch" - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.14.146" -SRCREV_machine ?= "f8e35039bf37038f1cba7b125e3c4fa49745072b" -SRCREV_meta ?= "c8f030fdbf6046dede4b7ce6c94b5b24221c250e" - -LINUX_KERNEL_TYPE = "preempt-rt" diff --git a/recipes-kernel/linux/linux-intel/0001-perf-tools-Add-Python-3-support.patch b/recipes-kernel/linux/linux-intel/0001-perf-tools-Add-Python-3-support.patch deleted file mode 100644 index 74ce61e5..00000000 --- a/recipes-kernel/linux/linux-intel/0001-perf-tools-Add-Python-3-support.patch +++ /dev/null @@ -1,917 +0,0 @@ -From 8804547988bb772a00cd4bb832fe4e1a79f552b7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jaroslav=20=C5=A0karvada?= -Date: Fri, 19 Jan 2018 21:56:41 +0100 -Subject: [PATCH] perf tools: Add Python 3 support -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Added Python 3 support while keeping Python 2.7 compatibility. - -Committer notes: - -This doesn't make it to auto detect python 3, one has to explicitely ask -it to build with python 3 devel files, here are the instructions -provided by Jaroslav: - - --- - $ cp -a tools/perf tools/python3-perf - $ make V=1 prefix=/usr -C tools/perf PYTHON=/usr/bin/python2 all - $ make V=1 prefix=/usr -C tools/python3-perf PYTHON=/usr/bin/python3 all - $ make V=1 prefix=/usr -C tools/python3-perf PYTHON=/usr/bin/python3 DESTDIR=%{buildroot} install-python_ext - $ make V=1 prefix=/usr -C tools/perf PYTHON=/usr/bin/python2 DESTDIR=%{buildroot} install-python_ext - --- - -We need to make this automatic, just like the existing tests for checking if -the python2 devel files are in place, allowing the build with python3 if -available, fallbacking to python2 and then just disabling it if none are -available. - -So, using the PYTHON variable to build it using O= we get: - -Before this patch: - - $ rpm -q python3 python3-devel - python3-3.6.4-7.fc27.x86_64 - python3-devel-3.6.4-7.fc27.x86_64 - $ rm -rf /tmp/build/perf/ ; mkdir -p /tmp/build/perf ; make O=/tmp/build/perf PYTHON=/usr/bin/python3 -C tools/perf install-bin - make: Entering directory '/home/acme/git/linux/tools/perf' - - Makefile.config:670: Python 3 is not yet supported; please set - Makefile.config:671: PYTHON and/or PYTHON_CONFIG appropriately. - Makefile.config:672: If you also have Python 2 installed, then - Makefile.config:673: try something like: - Makefile.config:674: - Makefile.config:675: make PYTHON=python2 - Makefile.config:676: - Makefile.config:677: Otherwise, disable Python support entirely: - Makefile.config:678: - Makefile.config:679: make NO_LIBPYTHON=1 - Makefile.config:680: - Makefile.config:681: *** . Stop. - make[1]: *** [Makefile.perf:212: sub-make] Error 2 - make: *** [Makefile:110: install-bin] Error 2 - make: Leaving directory '/home/acme/git/linux/tools/perf' - $ - -After: - - $ make O=/tmp/build/perf PYTHON=python3 -C tools/perf install-bin - $ ldd ~/bin/perf | grep python - libpython3.6m.so.1.0 => /lib64/libpython3.6m.so.1.0 (0x00007f58a31e8000) - $ rpm -qf /lib64/libpython3.6m.so.1.0 - python3-libs-3.6.4-7.fc27.x86_64 - $ - -Now verify that when using the binding the right ELF file is loaded, -using perf trace: - - $ perf trace -e open* perf test python - 0.051 ( 0.016 ms): perf/3927 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC ) = 3 - - 18: 'import perf' in python : - 8.849 ( 0.013 ms): sh/3929 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC ) = 3 - - 25.572 ( 0.008 ms): python3/3931 openat(dfd: CWD, filename: /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so, flags: CLOEXEC) = 3 - - Ok - - $ - -And using tools/perf/python/twatch.py, to show PERF_RECORD_ metaevents: - - $ python3 tools/perf/python/twatch.py - cpu: 3, pid: 16060, tid: 16060 { type: fork, pid: 5207, ppid: 16060, tid: 5207, ptid: 16060, time: 10798513015459} - cpu: 3, pid: 16060, tid: 16060 { type: fork, pid: 5208, ppid: 16060, tid: 5208, ptid: 16060, time: 10798513562503} - cpu: 0, pid: 5208, tid: 5208 { type: comm, pid: 5208, tid: 5208, comm: grep } - cpu: 2, pid: 5207, tid: 5207 { type: comm, pid: 5207, tid: 5207, comm: ps } - cpu: 2, pid: 5207, tid: 5207 { type: exit, pid: 5207, ppid: 5207, tid: 5207, ptid: 5207, time: 10798551337484} - cpu: 3, pid: 5208, tid: 5208 { type: exit, pid: 5208, ppid: 5208, tid: 5208, ptid: 5208, time: 10798551292153} - cpu: 3, pid: 601, tid: 601 { type: fork, pid: 5209, ppid: 601, tid: 5209, ptid: 601, time: 10801779977324} - ^CTraceback (most recent call last): - File "tools/perf/python/twatch.py", line 68, in - main() - File "tools/perf/python/twatch.py", line 40, in main - evlist.poll(timeout = -1) - KeyboardInterrupt - $ - - # ps ax|grep twatch - 5197 pts/8 S+ 0:00 python3 tools/perf/python/twatch.py - # ls -la /proc/5197/smaps - -r--r--r--. 1 acme acme 0 Feb 19 13:14 /proc/5197/smaps - # grep python /proc/5197/smaps - 558111307000-558111309000 r-xp 00000000 fd:00 3151710 /usr/bin/python3.6 - 558111508000-558111509000 r--p 00001000 fd:00 3151710 /usr/bin/python3.6 - 558111509000-55811150a000 rw-p 00002000 fd:00 3151710 /usr/bin/python3.6 - 7ffad6fc1000-7ffad7008000 r-xp 00000000 00:2d 220196 /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so - 7ffad7008000-7ffad7207000 ---p 00047000 00:2d 220196 /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so - 7ffad7207000-7ffad7208000 r--p 00046000 00:2d 220196 /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so - 7ffad7208000-7ffad7215000 rw-p 00047000 00:2d 220196 /tmp/build/perf/python/perf.cpython-36m-x86_64-linux-gnu.so - 7ffadea77000-7ffaded3d000 r-xp 00000000 fd:00 3151795 /usr/lib64/libpython3.6m.so.1.0 - 7ffaded3d000-7ffadef3c000 ---p 002c6000 fd:00 3151795 /usr/lib64/libpython3.6m.so.1.0 - 7ffadef3c000-7ffadef42000 r--p 002c5000 fd:00 3151795 /usr/lib64/libpython3.6m.so.1.0 - 7ffadef42000-7ffadefa5000 rw-p 002cb000 fd:00 3151795 /usr/lib64/libpython3.6m.so.1.0 - # - -And with this patch, but building normally, without specifying the -PYTHON=python3 part, which will make it use python2 if its devel files are -available, like in this test: - - $ make O=/tmp/build/perf -C tools/perf install-bin - $ ldd ~/bin/perf | grep python - libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007f6a44410000) - $ ldd /tmp/build/perf/python_ext_build/lib/perf.so | grep python - libpython2.7.so.1.0 => /lib64/libpython2.7.so.1.0 (0x00007fed28a2c000) - $ - - [acme@jouet perf]$ tools/perf/python/twatch.py - cpu: 0, pid: 2817, tid: 2817 { type: fork, pid: 2817, ppid: 2817, tid: 8910, ptid: 2817, time: 11126454335306} - cpu: 0, pid: 2817, tid: 2817 { type: comm, pid: 2817, tid: 8910, comm: worker } - $ ps ax | grep twatch.py - 8909 pts/8 S+ 0:00 /usr/bin/python tools/perf/python/twatch.py - $ grep python /proc/8909/smaps - 5579de658000-5579de659000 r-xp 00000000 fd:00 3156044 /usr/bin/python2.7 - 5579de858000-5579de859000 r--p 00000000 fd:00 3156044 /usr/bin/python2.7 - 5579de859000-5579de85a000 rw-p 00001000 fd:00 3156044 /usr/bin/python2.7 - 7f0de01f7000-7f0de023e000 r-xp 00000000 00:2d 230695 /tmp/build/perf/python/perf.so - 7f0de023e000-7f0de043d000 ---p 00047000 00:2d 230695 /tmp/build/perf/python/perf.so - 7f0de043d000-7f0de043e000 r--p 00046000 00:2d 230695 /tmp/build/perf/python/perf.so - 7f0de043e000-7f0de044b000 rw-p 00047000 00:2d 230695 /tmp/build/perf/python/perf.so - 7f0de6f0f000-7f0de6f13000 r-xp 00000000 fd:00 134975 /usr/lib64/python2.7/lib-dynload/_localemodule.so - 7f0de6f13000-7f0de7113000 ---p 00004000 fd:00 134975 /usr/lib64/python2.7/lib-dynload/_localemodule.so - 7f0de7113000-7f0de7114000 r--p 00004000 fd:00 134975 /usr/lib64/python2.7/lib-dynload/_localemodule.so - 7f0de7114000-7f0de7115000 rw-p 00005000 fd:00 134975 /usr/lib64/python2.7/lib-dynload/_localemodule.so - 7f0de7e73000-7f0de8052000 r-xp 00000000 fd:00 3173292 /usr/lib64/libpython2.7.so.1.0 - 7f0de8052000-7f0de8251000 ---p 001df000 fd:00 3173292 /usr/lib64/libpython2.7.so.1.0 - 7f0de8251000-7f0de8255000 r--p 001de000 fd:00 3173292 /usr/lib64/libpython2.7.so.1.0 - 7f0de8255000-7f0de8291000 rw-p 001e2000 fd:00 3173292 /usr/lib64/libpython2.7.so.1.0 - $ - -Signed-off-by: Jaroslav Škarvada -Tested-by: Arnaldo Carvalho de Melo -Cc: Adrian Hunter -Cc: David Ahern -Cc: Jiri Olsa -Cc: Namhyung Kim -Cc: Wang Nan -LPU-Reference: 20180119205641.24242-1-jskarvad@redhat.com -Link: https://lkml.kernel.org/n/tip-8d7dt9kqp83vsz25hagug8fu@git.kernel.org -[ Removed explicit check for python version, allowing it to really build with python3 ] -Signed-off-by: Arnaldo Carvalho de Melo - -Upstream status: Backport [https://github.com/torvalds/linux/commit/66dfdff03d196e51322c6a85c0d8db8bb2bdd655] -Signed-off-by: Naveen Saini ---- - tools/perf/Makefile.config | 23 +-- - tools/perf/Makefile.perf | 4 +- - .../scripts/python/Perf-Trace-Util/Context.c | 34 +++- - tools/perf/util/python.c | 95 ++++++++--- - .../scripting-engines/trace-event-python.c | 147 +++++++++++++----- - tools/perf/util/setup.py | 6 +- - 6 files changed, 221 insertions(+), 88 deletions(-) - -diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config -index f362ee46506a..ecdc3770d899 100644 ---- a/tools/perf/Makefile.config -+++ b/tools/perf/Makefile.config -@@ -622,25 +622,10 @@ else - ifneq ($(feature-libpython), 1) - $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev) - else -- ifneq ($(feature-libpython-version), 1) -- $(warning Python 3 is not yet supported; please set) -- $(warning PYTHON and/or PYTHON_CONFIG appropriately.) -- $(warning If you also have Python 2 installed, then) -- $(warning try something like:) -- $(warning $(and ,)) -- $(warning $(and ,) make PYTHON=python2) -- $(warning $(and ,)) -- $(warning Otherwise, disable Python support entirely:) -- $(warning $(and ,)) -- $(warning $(and ,) make NO_LIBPYTHON=1) -- $(warning $(and ,)) -- $(error $(and ,)) -- else -- LDFLAGS += $(PYTHON_EMBED_LDFLAGS) -- EXTLIBS += $(PYTHON_EMBED_LIBADD) -- LANG_BINDINGS += $(obj-perf)python/perf.so -- $(call detected,CONFIG_LIBPYTHON) -- endif -+ LDFLAGS += $(PYTHON_EMBED_LDFLAGS) -+ EXTLIBS += $(PYTHON_EMBED_LIBADD) -+ LANG_BINDINGS += $(obj-perf)python/perf.so -+ $(call detected,CONFIG_LIBPYTHON) - endif - endif - endif -diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf -index 349ea5133d83..6879321c612d 100644 ---- a/tools/perf/Makefile.perf -+++ b/tools/perf/Makefile.perf -@@ -294,7 +294,7 @@ PYTHON_EXTBUILD_LIB := $(PYTHON_EXTBUILD)lib/ - PYTHON_EXTBUILD_TMP := $(PYTHON_EXTBUILD)tmp/ - export PYTHON_EXTBUILD_LIB PYTHON_EXTBUILD_TMP - --python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT)python/perf.so -+python-clean := $(call QUIET_CLEAN, python) $(RM) -r $(PYTHON_EXTBUILD) $(OUTPUT)python/perf*.so - - PYTHON_EXT_SRCS := $(shell grep -v ^\# util/python-ext-sources) - PYTHON_EXT_DEPS := util/python-ext-sources util/setup.py $(LIBTRACEEVENT) $(LIBAPI) -@@ -444,7 +444,7 @@ $(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_D - $(PYTHON_WORD) util/setup.py \ - --quiet build_ext; \ - mkdir -p $(OUTPUT)python && \ -- cp $(PYTHON_EXTBUILD_LIB)perf.so $(OUTPUT)python/ -+ cp $(PYTHON_EXTBUILD_LIB)perf*.so $(OUTPUT)python/ - - please_set_SHELL_PATH_to_a_more_modern_shell: - $(Q)$$(:) -diff --git a/tools/perf/scripts/python/Perf-Trace-Util/Context.c b/tools/perf/scripts/python/Perf-Trace-Util/Context.c -index fcd1dd667906..1a0d27757eec 100644 ---- a/tools/perf/scripts/python/Perf-Trace-Util/Context.c -+++ b/tools/perf/scripts/python/Perf-Trace-Util/Context.c -@@ -23,7 +23,17 @@ - #include "../../../perf.h" - #include "../../../util/trace-event.h" - -+#if PY_MAJOR_VERSION < 3 -+#define _PyCapsule_GetPointer(arg1, arg2) \ -+ PyCObject_AsVoidPtr(arg1) -+ - PyMODINIT_FUNC initperf_trace_context(void); -+#else -+#define _PyCapsule_GetPointer(arg1, arg2) \ -+ PyCapsule_GetPointer((arg1), (arg2)) -+ -+PyMODINIT_FUNC PyInit_perf_trace_context(void); -+#endif - - static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args) - { -@@ -34,7 +44,7 @@ static PyObject *perf_trace_context_common_pc(PyObject *obj, PyObject *args) - if (!PyArg_ParseTuple(args, "O", &context)) - return NULL; - -- scripting_context = PyCObject_AsVoidPtr(context); -+ scripting_context = _PyCapsule_GetPointer(context, NULL); - retval = common_pc(scripting_context); - - return Py_BuildValue("i", retval); -@@ -50,7 +60,7 @@ static PyObject *perf_trace_context_common_flags(PyObject *obj, - if (!PyArg_ParseTuple(args, "O", &context)) - return NULL; - -- scripting_context = PyCObject_AsVoidPtr(context); -+ scripting_context = _PyCapsule_GetPointer(context, NULL); - retval = common_flags(scripting_context); - - return Py_BuildValue("i", retval); -@@ -66,7 +76,7 @@ static PyObject *perf_trace_context_common_lock_depth(PyObject *obj, - if (!PyArg_ParseTuple(args, "O", &context)) - return NULL; - -- scripting_context = PyCObject_AsVoidPtr(context); -+ scripting_context = _PyCapsule_GetPointer(context, NULL); - retval = common_lock_depth(scripting_context); - - return Py_BuildValue("i", retval); -@@ -82,7 +92,25 @@ static PyMethodDef ContextMethods[] = { - { NULL, NULL, 0, NULL} - }; - -+#if PY_MAJOR_VERSION < 3 - PyMODINIT_FUNC initperf_trace_context(void) - { - (void) Py_InitModule("perf_trace_context", ContextMethods); - } -+#else -+PyMODINIT_FUNC PyInit_perf_trace_context(void) -+{ -+ static struct PyModuleDef moduledef = { -+ PyModuleDef_HEAD_INIT, -+ "perf_trace_context", /* m_name */ -+ "", /* m_doc */ -+ -1, /* m_size */ -+ ContextMethods, /* m_methods */ -+ NULL, /* m_reload */ -+ NULL, /* m_traverse */ -+ NULL, /* m_clear */ -+ NULL, /* m_free */ -+ }; -+ return PyModule_Create(&moduledef); -+} -+#endif -diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c -index 8e49d9cafcfc..16620c37fd8c 100644 ---- a/tools/perf/util/python.c -+++ b/tools/perf/util/python.c -@@ -12,6 +12,30 @@ - #include "print_binary.h" - #include "thread_map.h" - -+#if PY_MAJOR_VERSION < 3 -+#define _PyUnicode_FromString(arg) \ -+ PyString_FromString(arg) -+#define _PyUnicode_AsString(arg) \ -+ PyString_AsString(arg) -+#define _PyUnicode_FromFormat(...) \ -+ PyString_FromFormat(__VA_ARGS__) -+#define _PyLong_FromLong(arg) \ -+ PyInt_FromLong(arg) -+ -+#else -+ -+#define _PyUnicode_FromString(arg) \ -+ PyUnicode_FromString(arg) -+#define _PyUnicode_FromFormat(...) \ -+ PyUnicode_FromFormat(__VA_ARGS__) -+#define _PyLong_FromLong(arg) \ -+ PyLong_FromLong(arg) -+#endif -+ -+#ifndef Py_TYPE -+#define Py_TYPE(ob) (((PyObject*)(ob))->ob_type) -+#endif -+ - /* - * Provide these two so that we don't have to link against callchain.c and - * start dragging hist.c, etc. -@@ -49,7 +73,11 @@ int eprintf(int level, int var, const char *fmt, ...) - # define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size, - #endif - -+#if PY_MAJOR_VERSION < 3 - PyMODINIT_FUNC initperf(void); -+#else -+PyMODINIT_FUNC PyInit_perf(void); -+#endif - - #define member_def(type, member, ptype, help) \ - { #member, ptype, \ -@@ -107,7 +135,7 @@ static PyObject *pyrf_mmap_event__repr(struct pyrf_event *pevent) - pevent->event.mmap.pgoff, pevent->event.mmap.filename) < 0) { - ret = PyErr_NoMemory(); - } else { -- ret = PyString_FromString(s); -+ ret = _PyUnicode_FromString(s); - free(s); - } - return ret; -@@ -138,7 +166,7 @@ static PyMemberDef pyrf_task_event__members[] = { - - static PyObject *pyrf_task_event__repr(struct pyrf_event *pevent) - { -- return PyString_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, " -+ return _PyUnicode_FromFormat("{ type: %s, pid: %u, ppid: %u, tid: %u, " - "ptid: %u, time: %" PRIu64 "}", - pevent->event.header.type == PERF_RECORD_FORK ? "fork" : "exit", - pevent->event.fork.pid, -@@ -171,7 +199,7 @@ static PyMemberDef pyrf_comm_event__members[] = { - - static PyObject *pyrf_comm_event__repr(struct pyrf_event *pevent) - { -- return PyString_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }", -+ return _PyUnicode_FromFormat("{ type: comm, pid: %u, tid: %u, comm: %s }", - pevent->event.comm.pid, - pevent->event.comm.tid, - pevent->event.comm.comm); -@@ -202,7 +230,7 @@ static PyObject *pyrf_throttle_event__repr(struct pyrf_event *pevent) - { - struct throttle_event *te = (struct throttle_event *)(&pevent->event.header + 1); - -- return PyString_FromFormat("{ type: %sthrottle, time: %" PRIu64 ", id: %" PRIu64 -+ return _PyUnicode_FromFormat("{ type: %sthrottle, time: %" PRIu64 ", id: %" PRIu64 - ", stream_id: %" PRIu64 " }", - pevent->event.header.type == PERF_RECORD_THROTTLE ? "" : "un", - te->time, te->id, te->stream_id); -@@ -237,7 +265,7 @@ static PyObject *pyrf_lost_event__repr(struct pyrf_event *pevent) - pevent->event.lost.id, pevent->event.lost.lost) < 0) { - ret = PyErr_NoMemory(); - } else { -- ret = PyString_FromString(s); -+ ret = _PyUnicode_FromString(s); - free(s); - } - return ret; -@@ -264,7 +292,7 @@ static PyMemberDef pyrf_read_event__members[] = { - - static PyObject *pyrf_read_event__repr(struct pyrf_event *pevent) - { -- return PyString_FromFormat("{ type: read, pid: %u, tid: %u }", -+ return _PyUnicode_FromFormat("{ type: read, pid: %u, tid: %u }", - pevent->event.read.pid, - pevent->event.read.tid); - /* -@@ -299,7 +327,7 @@ static PyObject *pyrf_sample_event__repr(struct pyrf_event *pevent) - if (asprintf(&s, "{ type: sample }") < 0) { - ret = PyErr_NoMemory(); - } else { -- ret = PyString_FromString(s); -+ ret = _PyUnicode_FromString(s); - free(s); - } - return ret; -@@ -330,7 +358,7 @@ tracepoint_field(struct pyrf_event *pe, struct format_field *field) - } - if (field->flags & FIELD_IS_STRING && - is_printable_array(data + offset, len)) { -- ret = PyString_FromString((char *)data + offset); -+ ret = _PyUnicode_FromString((char *)data + offset); - } else { - ret = PyByteArray_FromStringAndSize((const char *) data + offset, len); - field->flags &= ~FIELD_IS_STRING; -@@ -352,7 +380,7 @@ tracepoint_field(struct pyrf_event *pe, struct format_field *field) - static PyObject* - get_tracepoint_field(struct pyrf_event *pevent, PyObject *attr_name) - { -- const char *str = PyString_AsString(PyObject_Str(attr_name)); -+ const char *str = _PyUnicode_AsString(PyObject_Str(attr_name)); - struct perf_evsel *evsel = pevent->evsel; - struct format_field *field; - -@@ -416,7 +444,7 @@ static PyObject *pyrf_context_switch_event__repr(struct pyrf_event *pevent) - !!(pevent->event.header.misc & PERF_RECORD_MISC_SWITCH_OUT)) < 0) { - ret = PyErr_NoMemory(); - } else { -- ret = PyString_FromString(s); -+ ret = _PyUnicode_FromString(s); - free(s); - } - return ret; -@@ -528,7 +556,7 @@ static int pyrf_cpu_map__init(struct pyrf_cpu_map *pcpus, - static void pyrf_cpu_map__delete(struct pyrf_cpu_map *pcpus) - { - cpu_map__put(pcpus->cpus); -- pcpus->ob_type->tp_free((PyObject*)pcpus); -+ Py_TYPE(pcpus)->tp_free((PyObject*)pcpus); - } - - static Py_ssize_t pyrf_cpu_map__length(PyObject *obj) -@@ -597,7 +625,7 @@ static int pyrf_thread_map__init(struct pyrf_thread_map *pthreads, - static void pyrf_thread_map__delete(struct pyrf_thread_map *pthreads) - { - thread_map__put(pthreads->threads); -- pthreads->ob_type->tp_free((PyObject*)pthreads); -+ Py_TYPE(pthreads)->tp_free((PyObject*)pthreads); - } - - static Py_ssize_t pyrf_thread_map__length(PyObject *obj) -@@ -759,7 +787,7 @@ static int pyrf_evsel__init(struct pyrf_evsel *pevsel, - static void pyrf_evsel__delete(struct pyrf_evsel *pevsel) - { - perf_evsel__exit(&pevsel->evsel); -- pevsel->ob_type->tp_free((PyObject*)pevsel); -+ Py_TYPE(pevsel)->tp_free((PyObject*)pevsel); - } - - static PyObject *pyrf_evsel__open(struct pyrf_evsel *pevsel, -@@ -850,7 +878,7 @@ static int pyrf_evlist__init(struct pyrf_evlist *pevlist, - static void pyrf_evlist__delete(struct pyrf_evlist *pevlist) - { - perf_evlist__exit(&pevlist->evlist); -- pevlist->ob_type->tp_free((PyObject*)pevlist); -+ Py_TYPE(pevlist)->tp_free((PyObject*)pevlist); - } - - static PyObject *pyrf_evlist__mmap(struct pyrf_evlist *pevlist, -@@ -902,12 +930,16 @@ static PyObject *pyrf_evlist__get_pollfd(struct pyrf_evlist *pevlist, - - for (i = 0; i < evlist->pollfd.nr; ++i) { - PyObject *file; -+#if PY_MAJOR_VERSION < 3 - FILE *fp = fdopen(evlist->pollfd.entries[i].fd, "r"); - - if (fp == NULL) - goto free_list; - - file = PyFile_FromFile(fp, "perf", "r", NULL); -+#else -+ file = PyFile_FromFd(evlist->pollfd.entries[i].fd, "perf", "r", -1, NULL, NULL, NULL, 1); -+#endif - if (file == NULL) - goto free_list; - -@@ -1194,9 +1226,9 @@ static PyObject *pyrf__tracepoint(struct pyrf_evsel *pevsel, - - tp_format = trace_event__tp_format(sys, name); - if (IS_ERR(tp_format)) -- return PyInt_FromLong(-1); -+ return _PyLong_FromLong(-1); - -- return PyInt_FromLong(tp_format->id); -+ return _PyLong_FromLong(tp_format->id); - } - - static PyMethodDef perf__methods[] = { -@@ -1209,11 +1241,31 @@ static PyMethodDef perf__methods[] = { - { .ml_name = NULL, } - }; - -+#if PY_MAJOR_VERSION < 3 - PyMODINIT_FUNC initperf(void) -+#else -+PyMODINIT_FUNC PyInit_perf(void) -+#endif - { - PyObject *obj; - int i; -- PyObject *dict, *module = Py_InitModule("perf", perf__methods); -+ PyObject *dict; -+#if PY_MAJOR_VERSION < 3 -+ PyObject *module = Py_InitModule("perf", perf__methods); -+#else -+ static struct PyModuleDef moduledef = { -+ PyModuleDef_HEAD_INIT, -+ "perf", /* m_name */ -+ "", /* m_doc */ -+ -1, /* m_size */ -+ perf__methods, /* m_methods */ -+ NULL, /* m_reload */ -+ NULL, /* m_traverse */ -+ NULL, /* m_clear */ -+ NULL, /* m_free */ -+ }; -+ PyObject *module = PyModule_Create(&moduledef); -+#endif - - if (module == NULL || - pyrf_event__setup_types() < 0 || -@@ -1221,7 +1273,11 @@ PyMODINIT_FUNC initperf(void) - pyrf_evsel__setup_types() < 0 || - pyrf_thread_map__setup_types() < 0 || - pyrf_cpu_map__setup_types() < 0) -+#if PY_MAJOR_VERSION < 3 - return; -+#else -+ return module; -+#endif - - /* The page_size is placed in util object. */ - page_size = sysconf(_SC_PAGE_SIZE); -@@ -1270,7 +1326,7 @@ PyMODINIT_FUNC initperf(void) - goto error; - - for (i = 0; perf__constants[i].name != NULL; i++) { -- obj = PyInt_FromLong(perf__constants[i].value); -+ obj = _PyLong_FromLong(perf__constants[i].value); - if (obj == NULL) - goto error; - PyDict_SetItemString(dict, perf__constants[i].name, obj); -@@ -1280,6 +1336,9 @@ PyMODINIT_FUNC initperf(void) - error: - if (PyErr_Occurred()) - PyErr_SetString(PyExc_ImportError, "perf: Init failed!"); -+#if PY_MAJOR_VERSION >= 3 -+ return module; -+#endif - } - - /* -diff --git a/tools/perf/util/scripting-engines/trace-event-python.c b/tools/perf/util/scripting-engines/trace-event-python.c -index f03fa7a835a1..8db28d4ff4b6 100644 ---- a/tools/perf/util/scripting-engines/trace-event-python.c -+++ b/tools/perf/util/scripting-engines/trace-event-python.c -@@ -50,7 +50,37 @@ - #include "print_binary.h" - #include "stat.h" - -+#if PY_MAJOR_VERSION < 3 -+#define _PyUnicode_FromString(arg) \ -+ PyString_FromString(arg) -+#define _PyUnicode_FromStringAndSize(arg1, arg2) \ -+ PyString_FromStringAndSize((arg1), (arg2)) -+#define _PyBytes_FromStringAndSize(arg1, arg2) \ -+ PyString_FromStringAndSize((arg1), (arg2)) -+#define _PyLong_FromLong(arg) \ -+ PyInt_FromLong(arg) -+#define _PyLong_AsLong(arg) \ -+ PyInt_AsLong(arg) -+#define _PyCapsule_New(arg1, arg2, arg3) \ -+ PyCObject_FromVoidPtr((arg1), (arg2)) -+ - PyMODINIT_FUNC initperf_trace_context(void); -+#else -+#define _PyUnicode_FromString(arg) \ -+ PyUnicode_FromString(arg) -+#define _PyUnicode_FromStringAndSize(arg1, arg2) \ -+ PyUnicode_FromStringAndSize((arg1), (arg2)) -+#define _PyBytes_FromStringAndSize(arg1, arg2) \ -+ PyBytes_FromStringAndSize((arg1), (arg2)) -+#define _PyLong_FromLong(arg) \ -+ PyLong_FromLong(arg) -+#define _PyLong_AsLong(arg) \ -+ PyLong_AsLong(arg) -+#define _PyCapsule_New(arg1, arg2, arg3) \ -+ PyCapsule_New((arg1), (arg2), (arg3)) -+ -+PyMODINIT_FUNC PyInit_perf_trace_context(void); -+#endif - - #define TRACE_EVENT_TYPE_MAX \ - ((1 << (sizeof(unsigned short) * 8)) - 1) -@@ -136,7 +166,7 @@ static int get_argument_count(PyObject *handler) - PyObject *arg_count_obj = PyObject_GetAttrString(code_obj, - "co_argcount"); - if (arg_count_obj) { -- arg_count = (int) PyInt_AsLong(arg_count_obj); -+ arg_count = (int) _PyLong_AsLong(arg_count_obj); - Py_DECREF(arg_count_obj); - } - Py_DECREF(code_obj); -@@ -183,10 +213,10 @@ static void define_value(enum print_arg_type field_type, - - value = eval_flag(field_value); - -- PyTuple_SetItem(t, n++, PyString_FromString(ev_name)); -- PyTuple_SetItem(t, n++, PyString_FromString(field_name)); -- PyTuple_SetItem(t, n++, PyInt_FromLong(value)); -- PyTuple_SetItem(t, n++, PyString_FromString(field_str)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(ev_name)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_name)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(value)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_str)); - - try_call_object(handler_name, t); - -@@ -224,10 +254,10 @@ static void define_field(enum print_arg_type field_type, - if (!t) - Py_FatalError("couldn't create Python tuple"); - -- PyTuple_SetItem(t, n++, PyString_FromString(ev_name)); -- PyTuple_SetItem(t, n++, PyString_FromString(field_name)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(ev_name)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(field_name)); - if (field_type == PRINT_FLAGS) -- PyTuple_SetItem(t, n++, PyString_FromString(delim)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(delim)); - - try_call_object(handler_name, t); - -@@ -326,12 +356,12 @@ static PyObject *get_field_numeric_entry(struct event_format *event, - if (field->flags & FIELD_IS_SIGNED) { - if ((long long)val >= LONG_MIN && - (long long)val <= LONG_MAX) -- obj = PyInt_FromLong(val); -+ obj = _PyLong_FromLong(val); - else - obj = PyLong_FromLongLong(val); - } else { - if (val <= LONG_MAX) -- obj = PyInt_FromLong(val); -+ obj = _PyLong_FromLong(val); - else - obj = PyLong_FromUnsignedLongLong(val); - } -@@ -390,9 +420,9 @@ static PyObject *python_process_callchain(struct perf_sample *sample, - pydict_set_item_string_decref(pysym, "end", - PyLong_FromUnsignedLongLong(node->sym->end)); - pydict_set_item_string_decref(pysym, "binding", -- PyInt_FromLong(node->sym->binding)); -+ _PyLong_FromLong(node->sym->binding)); - pydict_set_item_string_decref(pysym, "name", -- PyString_FromStringAndSize(node->sym->name, -+ _PyUnicode_FromStringAndSize(node->sym->name, - node->sym->namelen)); - pydict_set_item_string_decref(pyelem, "sym", pysym); - } -@@ -407,7 +437,7 @@ static PyObject *python_process_callchain(struct perf_sample *sample, - dsoname = map->dso->name; - } - pydict_set_item_string_decref(pyelem, "dso", -- PyString_FromString(dsoname)); -+ _PyUnicode_FromString(dsoname)); - } - - callchain_cursor_advance(&callchain_cursor); -@@ -484,16 +514,16 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample, - if (!dict_sample) - Py_FatalError("couldn't create Python dictionary"); - -- pydict_set_item_string_decref(dict, "ev_name", PyString_FromString(perf_evsel__name(evsel))); -- pydict_set_item_string_decref(dict, "attr", PyString_FromStringAndSize( -+ pydict_set_item_string_decref(dict, "ev_name", _PyUnicode_FromString(perf_evsel__name(evsel))); -+ pydict_set_item_string_decref(dict, "attr", _PyUnicode_FromStringAndSize( - (const char *)&evsel->attr, sizeof(evsel->attr))); - - pydict_set_item_string_decref(dict_sample, "pid", -- PyInt_FromLong(sample->pid)); -+ _PyLong_FromLong(sample->pid)); - pydict_set_item_string_decref(dict_sample, "tid", -- PyInt_FromLong(sample->tid)); -+ _PyLong_FromLong(sample->tid)); - pydict_set_item_string_decref(dict_sample, "cpu", -- PyInt_FromLong(sample->cpu)); -+ _PyLong_FromLong(sample->cpu)); - pydict_set_item_string_decref(dict_sample, "ip", - PyLong_FromUnsignedLongLong(sample->ip)); - pydict_set_item_string_decref(dict_sample, "time", -@@ -503,17 +533,17 @@ static PyObject *get_perf_sample_dict(struct perf_sample *sample, - set_sample_read_in_dict(dict_sample, sample, evsel); - pydict_set_item_string_decref(dict, "sample", dict_sample); - -- pydict_set_item_string_decref(dict, "raw_buf", PyString_FromStringAndSize( -+ pydict_set_item_string_decref(dict, "raw_buf", _PyBytes_FromStringAndSize( - (const char *)sample->raw_data, sample->raw_size)); - pydict_set_item_string_decref(dict, "comm", -- PyString_FromString(thread__comm_str(al->thread))); -+ _PyUnicode_FromString(thread__comm_str(al->thread))); - if (al->map) { - pydict_set_item_string_decref(dict, "dso", -- PyString_FromString(al->map->dso->name)); -+ _PyUnicode_FromString(al->map->dso->name)); - } - if (al->sym) { - pydict_set_item_string_decref(dict, "symbol", -- PyString_FromString(al->sym->name)); -+ _PyUnicode_FromString(al->sym->name)); - } - - pydict_set_item_string_decref(dict, "callchain", callchain); -@@ -573,9 +603,9 @@ static void python_process_tracepoint(struct perf_sample *sample, - scripting_context->event_data = data; - scripting_context->pevent = evsel->tp_format->pevent; - -- context = PyCObject_FromVoidPtr(scripting_context, NULL); -+ context = _PyCapsule_New(scripting_context, NULL, NULL); - -- PyTuple_SetItem(t, n++, PyString_FromString(handler_name)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(handler_name)); - PyTuple_SetItem(t, n++, context); - - /* ip unwinding */ -@@ -584,18 +614,18 @@ static void python_process_tracepoint(struct perf_sample *sample, - Py_INCREF(callchain); - - if (!dict) { -- PyTuple_SetItem(t, n++, PyInt_FromLong(cpu)); -- PyTuple_SetItem(t, n++, PyInt_FromLong(s)); -- PyTuple_SetItem(t, n++, PyInt_FromLong(ns)); -- PyTuple_SetItem(t, n++, PyInt_FromLong(pid)); -- PyTuple_SetItem(t, n++, PyString_FromString(comm)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(cpu)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(s)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(ns)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(pid)); -+ PyTuple_SetItem(t, n++, _PyUnicode_FromString(comm)); - PyTuple_SetItem(t, n++, callchain); - } else { -- pydict_set_item_string_decref(dict, "common_cpu", PyInt_FromLong(cpu)); -- pydict_set_item_string_decref(dict, "common_s", PyInt_FromLong(s)); -- pydict_set_item_string_decref(dict, "common_ns", PyInt_FromLong(ns)); -- pydict_set_item_string_decref(dict, "common_pid", PyInt_FromLong(pid)); -- pydict_set_item_string_decref(dict, "common_comm", PyString_FromString(comm)); -+ pydict_set_item_string_decref(dict, "common_cpu", _PyLong_FromLong(cpu)); -+ pydict_set_item_string_decref(dict, "common_s", _PyLong_FromLong(s)); -+ pydict_set_item_string_decref(dict, "common_ns", _PyLong_FromLong(ns)); -+ pydict_set_item_string_decref(dict, "common_pid", _PyLong_FromLong(pid)); -+ pydict_set_item_string_decref(dict, "common_comm", _PyUnicode_FromString(comm)); - pydict_set_item_string_decref(dict, "common_callchain", callchain); - } - for (field = event->format.fields; field; field = field->next) { -@@ -614,7 +644,7 @@ static void python_process_tracepoint(struct perf_sample *sample, - } - if (field->flags & FIELD_IS_STRING && - is_printable_array(data + offset, len)) { -- obj = PyString_FromString((char *) data + offset); -+ obj = _PyUnicode_FromString((char *) data + offset); - } else { - obj = PyByteArray_FromStringAndSize((const char *) data + offset, len); - field->flags &= ~FIELD_IS_STRING; -@@ -664,7 +694,7 @@ static PyObject *tuple_new(unsigned int sz) - static int tuple_set_u64(PyObject *t, unsigned int pos, u64 val) - { - #if BITS_PER_LONG == 64 -- return PyTuple_SetItem(t, pos, PyInt_FromLong(val)); -+ return PyTuple_SetItem(t, pos, _PyLong_FromLong(val)); - #endif - #if BITS_PER_LONG == 32 - return PyTuple_SetItem(t, pos, PyLong_FromLongLong(val)); -@@ -673,12 +703,12 @@ static int tuple_set_u64(PyObject *t, unsigned int pos, u64 val) - - static int tuple_set_s32(PyObject *t, unsigned int pos, s32 val) - { -- return PyTuple_SetItem(t, pos, PyInt_FromLong(val)); -+ return PyTuple_SetItem(t, pos, _PyLong_FromLong(val)); - } - - static int tuple_set_string(PyObject *t, unsigned int pos, const char *s) - { -- return PyTuple_SetItem(t, pos, PyString_FromString(s)); -+ return PyTuple_SetItem(t, pos, _PyUnicode_FromString(s)); - } - - static int python_export_evsel(struct db_export *dbe, struct perf_evsel *evsel) -@@ -1024,8 +1054,8 @@ process_stat(struct perf_evsel *counter, int cpu, int thread, u64 tstamp, - return; - } - -- PyTuple_SetItem(t, n++, PyInt_FromLong(cpu)); -- PyTuple_SetItem(t, n++, PyInt_FromLong(thread)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(cpu)); -+ PyTuple_SetItem(t, n++, _PyLong_FromLong(thread)); - - tuple_set_u64(t, n++, tstamp); - tuple_set_u64(t, n++, count->val); -@@ -1207,27 +1237,58 @@ static void set_table_handlers(struct tables *tables) - SET_TABLE_HANDLER(call_return); - } - -+#if PY_MAJOR_VERSION < 3 -+static void _free_command_line(const char **command_line, int num) -+{ -+ free(command_line); -+} -+#else -+static void _free_command_line(wchar_t **command_line, int num) -+{ -+ int i; -+ for (i = 0; i < num; i++) -+ PyMem_RawFree(command_line[i]); -+ free(command_line); -+} -+#endif -+ -+ - /* - * Start trace script - */ - static int python_start_script(const char *script, int argc, const char **argv) - { - struct tables *tables = &tables_global; -+#if PY_MAJOR_VERSION < 3 - const char **command_line; -+#else -+ wchar_t **command_line; -+#endif - char buf[PATH_MAX]; - int i, err = 0; - FILE *fp; - -+#if PY_MAJOR_VERSION < 3 - command_line = malloc((argc + 1) * sizeof(const char *)); - command_line[0] = script; - for (i = 1; i < argc + 1; i++) - command_line[i] = argv[i - 1]; -+#else -+ command_line = malloc((argc + 1) * sizeof(wchar_t *)); -+ command_line[0] = Py_DecodeLocale(script, NULL); -+ for (i = 1; i < argc + 1; i++) -+ command_line[i] = Py_DecodeLocale(argv[i - 1], NULL); -+#endif - - Py_Initialize(); - -+#if PY_MAJOR_VERSION < 3 - initperf_trace_context(); -- - PySys_SetArgv(argc + 1, (char **)command_line); -+#else -+ PyInit_perf_trace_context(); -+ PySys_SetArgv(argc + 1, command_line); -+#endif - - fp = fopen(script, "r"); - if (!fp) { -@@ -1257,12 +1318,12 @@ static int python_start_script(const char *script, int argc, const char **argv) - goto error; - } - -- free(command_line); -+ _free_command_line(command_line, argc + 1); - - return err; - error: - Py_Finalize(); -- free(command_line); -+ _free_command_line(command_line, argc + 1); - - return err; - } -diff --git a/tools/perf/util/setup.py b/tools/perf/util/setup.py -index 23f1bf175179..a5f9e236cc71 100644 ---- a/tools/perf/util/setup.py -+++ b/tools/perf/util/setup.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python2 -+#!/usr/bin/python - - from os import getenv - -@@ -37,11 +37,11 @@ build_tmp = getenv('PYTHON_EXTBUILD_TMP') - libtraceevent = getenv('LIBTRACEEVENT') - libapikfs = getenv('LIBAPI') - --ext_sources = [f.strip() for f in file('util/python-ext-sources') -+ext_sources = [f.strip() for f in open('util/python-ext-sources') - if len(f.strip()) > 0 and f[0] != '#'] - - # use full paths with source files --ext_sources = map(lambda x: '%s/%s' % (src_perf, x) , ext_sources) -+ext_sources = list(map(lambda x: '%s/%s' % (src_perf, x) , ext_sources)) - - perf = Extension('perf', - sources = ext_sources, --- -2.17.1 - diff --git a/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch b/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch deleted file mode 100644 index 5c8b27c7..00000000 --- a/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 57af599929263e7bb6f2f369c9e4bc1e440528a9 Mon Sep 17 00:00:00 2001 -From: Bruce Ashfield -Date: Mon, 21 Aug 2017 13:52:53 -0400 -Subject: [PATCH 1/1] perf: x86-32: explicitly include - -Upstream-Status: submitted - -The 32bit x86 perf build does not find the system definitions of error -return values, hence we end up with: - -| In file included from util/libunwind/x86_32.c:32:0: -| util/libunwind/../../arch/x86/util/unwind-libunwind.c: In function 'libunwind__x86_reg_id': -| util/libunwind/../../arch/x86/util/unwind-libunwind.c:109:11: error: 'EINVAL' undeclared (first use in this function); did you mean 'UNW_EINVAL'? -| return -EINVAL; -| ^~~~~~ -| UNW_EINVAL - -By explicitly including errno.h, we can fix this build without impacting -other architectures. - -Signed-off-by: Bruce Ashfield ---- - - tools/perf/util/libunwind/x86_32.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/tools/perf/util/libunwind/x86_32.c b/tools/perf/util/libunwind/x86_32.c -index 957ffff72428..d781f7bdeb88 100644 ---- a/tools/perf/util/libunwind/x86_32.c -+++ b/tools/perf/util/libunwind/x86_32.c -@@ -20,6 +20,7 @@ - #define LIBUNWIND__ARCH_REG_IP PERF_REG_X86_IP - #define LIBUNWIND__ARCH_REG_SP PERF_REG_X86_SP - -+#include - #include "unwind.h" - #include "debug.h" - #include "libunwind-x86.h" --- -2.14.3 - diff --git a/recipes-kernel/linux/linux-intel_4.14.bb b/recipes-kernel/linux/linux-intel_4.14.bb deleted file mode 100644 index 6aee4284..00000000 --- a/recipes-kernel/linux/linux-intel_4.14.bb +++ /dev/null @@ -1,23 +0,0 @@ -require linux-intel.inc - -KBRANCH = "4.14/base" -KMETA_BRANCH = "yocto-4.14" - -# Fix for 32-bit perf issue. Remove when patch is backported to 4.14. -SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch \ - file://0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch \ - file://0001-perf-tools-Add-Python-3-support.patch \ - " - -DEPENDS += "elfutils-native openssl-native util-linux-native" - -LINUX_VERSION ?= "4.14.152" -SRCREV_machine ?= "f500fab13d11290921fc16c0e8b08c671819ad43" -SRCREV_meta ?= "c8f030fdbf6046dede4b7ce6c94b5b24221c250e" - -# For Crystalforest and Romley -KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio" -KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio" - -# Functionality flags -KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc" -- cgit v1.2.3-54-g00ecf