Skip to content

Commit c6b1616

Browse files
acmelgregkh
authored andcommitted
perf scripting python: Avoid declaring function pointers with a visibility attribute
commit d0e7b0c upstream. To avoid this: util/scripting-engines/trace-event-python.c: In function 'python_start_script': util/scripting-engines/trace-event-python.c:1595:2: error: 'visibility' attribute ignored [-Werror=attributes] 1595 | PyMODINIT_FUNC (*initfunc)(void); | ^~~~~~~~~~~~~~ That started breaking when building with PYTHON=python3 and these gcc versions (I haven't checked with the clang ones, maybe it breaks there as well): # export PERF_TARBALL=http://192.168.86.5/perf/perf-5.9.0.tar.xz # dm fedora:33 fedora:rawhide 1 107.80 fedora:33 : Ok gcc (GCC) 10.2.1 20201005 (Red Hat 10.2.1-5), clang version 11.0.0 (Fedora 11.0.0-1.fc33) 2 92.47 fedora:rawhide : Ok gcc (GCC) 10.2.1 20201016 (Red Hat 10.2.1-6), clang version 11.0.0 (Fedora 11.0.0-1.fc34) # Avoid that by ditching that 'initfunc' function pointer with its: #define Py_EXPORTED_SYMBOL _attribute_ ((visibility ("default"))) #define PyMODINIT_FUNC Py_EXPORTED_SYMBOL PyObject* And just call PyImport_AppendInittab() at the end of the ifdef python3 block with the functions that were being attributed to that initfunc. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Tapas Kundu <tkundu@vmware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent b74fe31 commit c6b1616

1 file changed

Lines changed: 2 additions & 5 deletions

File tree

tools/perf/util/scripting-engines/trace-event-python.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1587,7 +1587,6 @@ static void _free_command_line(wchar_t **command_line, int num)
15871587
static int python_start_script(const char *script, int argc, const char **argv)
15881588
{
15891589
struct tables *tables = &tables_global;
1590-
PyMODINIT_FUNC (*initfunc)(void);
15911590
#if PY_MAJOR_VERSION < 3
15921591
const char **command_line;
15931592
#else
@@ -1602,20 +1601,18 @@ static int python_start_script(const char *script, int argc, const char **argv)
16021601
FILE *fp;
16031602

16041603
#if PY_MAJOR_VERSION < 3
1605-
initfunc = initperf_trace_context;
16061604
command_line = malloc((argc + 1) * sizeof(const char *));
16071605
command_line[0] = script;
16081606
for (i = 1; i < argc + 1; i++)
16091607
command_line[i] = argv[i - 1];
1608+
PyImport_AppendInittab(name, initperf_trace_context);
16101609
#else
1611-
initfunc = PyInit_perf_trace_context;
16121610
command_line = malloc((argc + 1) * sizeof(wchar_t *));
16131611
command_line[0] = Py_DecodeLocale(script, NULL);
16141612
for (i = 1; i < argc + 1; i++)
16151613
command_line[i] = Py_DecodeLocale(argv[i - 1], NULL);
1614+
PyImport_AppendInittab(name, PyInit_perf_trace_context);
16161615
#endif
1617-
1618-
PyImport_AppendInittab(name, initfunc);
16191616
Py_Initialize();
16201617

16211618
#if PY_MAJOR_VERSION < 3

0 commit comments

Comments
 (0)