Commit 0f940cb7d970f4fd569bb5f9f49774422f2ccbee

Authored by Stephane Eranian
Committed by Arnaldo Carvalho de Melo
1 parent c569d3326b

perf trace scripting: Fix extern struct definitions

Both python_scripting_ops and perl_scripting_ops have two global definitions.
One in trace-event-scripting.c and one in their respective scripting-engine
modules.

The issue is that depending on the linker order one definition or the other
is chosen. One is uninitialized (bss), while the other is initialized. If
the uninitialized version is chosen, then perf does not function properly.

This patch fixes this by adding the extern prefix to the definitions in
trace-event-scripting.c.

Cc: David S. Miller <davem@davemloft.net>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Robert Richter <robert.richter@amd.com>
LKML-Reference: <4c97e41a.078fd80a.7a8b.3cc9@mx.google.com>
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

Showing 1 changed file with 2 additions and 2 deletions Side-by-side Diff

tools/perf/util/trace-event-scripting.c
... ... @@ -97,7 +97,7 @@
97 97 register_python_scripting(&python_scripting_unsupported_ops);
98 98 }
99 99 #else
100   -struct scripting_ops python_scripting_ops;
  100 +extern struct scripting_ops python_scripting_ops;
101 101  
102 102 void setup_python_scripting(void)
103 103 {
... ... @@ -158,7 +158,7 @@
158 158 register_perl_scripting(&perl_scripting_unsupported_ops);
159 159 }
160 160 #else
161   -struct scripting_ops perl_scripting_ops;
  161 +extern struct scripting_ops perl_scripting_ops;
162 162  
163 163 void setup_perl_scripting(void)
164 164 {