• Arnaldo Carvalho de Melo's avatar
    perf scripting python: Avoid declaring function pointers with a visibility attribute · d0e7b0c7
    Arnaldo Carvalho de Melo authored
    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: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d0e7b0c7
trace-event-python.c 48.9 KB