perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5
PATCH 1/2 perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5
PyVarObject_HEAD_INIT is undefined in python 2.5, resulting in a build crash:
util/python.c:81: attention : déclaration implicite de la fonction « «PyVarObject_HEAD_INIT» » util/python.c:82: erreur: request for member «tp_name» in something not a structure or union util/python.c:117: erreur: request for member «tp_name» in something not a structure or union util/python.c:146: erreur: request for member «tp_name» in something not a structure or union util/python.c:177: erreur: request for member «tp_name» in something not a structure or union util/python.c:290: erreur: request for member «tp_name» in something not a structure or union util/python.c:359: erreur: request for member «tp_name» in something not a structure or union util/python.c:532: erreur: request for member «tp_name» in something not a structure or union util/python.c:761: erreur: request for member «tp_name» in something not a structure or union
error: command 'gcc' failed with exit status 1
make: *** [python/perf.so] Erreur 1
We can fix that by defining PyVarObject_HEAD_INIT as a wrapper on PyObject_HEAD_INIT, thanks to a trick found on biopython:
https://github.com/biopython/biopython/commit/d4eaf57946c7b4c32eca8d18821edf32f83e300d
--- tools/perf/util/python.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-)
tools/perf/util/python.c +6 -0
@@ -8,6 +8,12 @@#include "cpumap.h" #include "thread_map.h" +/* Define PyVarObject_HEAD_INIT for python 2.5 */ +#ifndef PyVarObject_HEAD_INIT +#define PyVarObject_HEAD_INIT (type, size) \ + PyObject_HEAD_INIT(type) size, +#endif +struct throttle_event {struct perf_event_header header;u64 time;
Signature · 1 line
1.7.3.2
PATCH 2/2 perf: Fix missing strndup declaration
<ctype.h> is included first without _GNU_SOURCE, so it ends up including <string.h> without declaring strndup(). And further <string.h> declarations, even with _GNU_SOURCE defined, are of course without effect.
Therefore:
util/strfilter.c: Dans la fonction «strfilter_node__new» :
util/strfilter.c:134: attention : déclaration implicite de la fonction « «strndup» » util/strfilter.c:134: attention : incompatible implicit declaration of built-in function «strndup»
make: *** [util/strfilter.o] Erreur 1
Just don't include ctype.h as it doesn't appear to be necessary anyway.
--- tools/perf/util/strfilter.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-)
tools/perf/util/strfilter.c +0 -1
@@ -1,4 +1,3 @@ -#include <ctype.h> #include "util.h" #include "string.h" #include "strfilter.h"
Signature · 1 line
1.7.3.2
tools/perf/util/python.c line 15
Quoted 10 lines · Frederic Weisbecker
+++
b/tools/perf/util/python.ctools/perf/util/python.c +5
-0@@ -8,6 +8,12 @@#include "cpumap.h" #include "thread_map.h" +/* Define PyVarObject_HEAD_INIT for python 2.5 */ +#ifndef PyVarObject_HEAD_INIT +#define PyVarObject_HEAD_INIT (type, size) \ + PyObject_HEAD_INIT(type) size, +#endif
Just a code readability nit - there's really no reason not to write this as:
#ifndef PyVarObject_HEAD_INIT
# define PyVarObject_HEAD_INIT(type, size) PyObject_HEAD_INIT(type) size, #endif
Thanks,
Ingo
PATCH v2 1/1 perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5
PyVarObject_HEAD_INIT is undefined in python 2.5, resulting in a build crash:
util/python.c:81: attention : déclaration implicite de la fonction « «PyVarObject_HEAD_INIT» » util/python.c:82: erreur: request for member «tp_name» in something not a structure or union util/python.c:117: erreur: request for member «tp_name» in something not a structure or union util/python.c:146: erreur: request for member «tp_name» in something not a structure or union util/python.c:177: erreur: request for member «tp_name» in something not a structure or union util/python.c:290: erreur: request for member «tp_name» in something not a structure or union util/python.c:359: erreur: request for member «tp_name» in something not a structure or union util/python.c:532: erreur: request for member «tp_name» in something not a structure or union util/python.c:761: erreur: request for member «tp_name» in something not a structure or union
error: command 'gcc' failed with exit status 1
make: *** [python/perf.so] Erreur 1
We can fix that by defining PyVarObject_HEAD_INIT as a wrapper on PyObject_HEAD_INIT, thanks to a trick found on biopython:
https://github.com/biopython/biopython/commit/d4eaf57946c7b4c32eca8d18821edf32f83e300d
--- tools/perf/util/python.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-)
tools/perf/util/python.c +5 -0
@@ -8,6 +8,11 @@#include "cpumap.h" #include "thread_map.h" +/* Define PyVarObject_HEAD_INIT for python 2.5 */ +#ifndef PyVarObject_HEAD_INIT +# define PyVarObject_HEAD_INIT (type, size) PyObject_HEAD_INIT(type) size, +#endif +struct throttle_event {struct perf_event_header header;u64 time;
Signature · 1 line
1.7.3.2
[GIT PULL] perf updates
Ingo,
Please pull the perf/core branch that can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
perf/core
Thanks,
Frederic
---
Frederic Weisbecker (2):
perf: Fix missing strndup declaration
perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5
tools/perf/util/python.c | 5 +++++ tools/perf/util/strfilter.c | 1 - 2 files changed, 5 insertions(+), 1 deletions(-)
Re: [GIT PULL] perf updates
Quoted 11 lines · Frederic Weisbecker
Ingo,
Please pull the perf/core branch that can be found at:
git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing.git
perf/coreThanks,
Frederic
---
Quoted 8 lines
Frederic Weisbecker (2):
perf: Fix missing strndup declaration
perf: Fix undefinedPyVarObject_HEAD_INITin python 2.5tools/perf/util/python.c | 5 +++++ tools/perf/util/strfilter.c | 1 - 2 files changed, 5 insertions(+), 1 deletions(-)
Pulled, thanks a lot Frederic!
Ingo