@@ -140,6 +140,7 @@ struct syscall_fmt {
140140};
141141
142142struct trace {
143+ struct perf_env host_env ;
143144 struct perf_tool tool ;
144145 struct {
145146 /** Sorted sycall numbers used by the trace. */
@@ -1977,17 +1978,24 @@ static char *trace__machine__resolve_kernel_addr(void *vmachine, unsigned long l
19771978 return machine__resolve_kernel_addr (vmachine , addrp , modp );
19781979}
19791980
1980- static int trace__symbols_init (struct trace * trace , struct evlist * evlist )
1981+ static int trace__symbols_init (struct trace * trace , int argc , const char * * argv ,
1982+ struct evlist * evlist )
19811983{
19821984 int err = symbol__init (NULL );
19831985
19841986 if (err )
19851987 return err ;
19861988
1987- trace -> host = machine__new_host ();
1988- if (trace -> host == NULL )
1989- return - ENOMEM ;
1989+ perf_env__init (& trace -> host_env );
1990+ err = perf_env__set_cmdline (& trace -> host_env , argc , argv );
1991+ if (err )
1992+ goto out ;
19901993
1994+ trace -> host = machine__new_host (& trace -> host_env );
1995+ if (trace -> host == NULL ) {
1996+ err = - ENOMEM ;
1997+ goto out ;
1998+ }
19911999 thread__set_priv_destructor (thread_trace__delete );
19922000
19932001 err = trace_event__register_resolver (trace -> host , trace__machine__resolve_kernel_addr );
@@ -1998,9 +2006,10 @@ static int trace__symbols_init(struct trace *trace, struct evlist *evlist)
19982006 evlist -> core .threads , trace__tool_process ,
19992007 true, false, 1 );
20002008out :
2001- if (err )
2009+ if (err ) {
2010+ perf_env__exit (& trace -> host_env );
20022011 symbol__exit ();
2003-
2012+ }
20042013 return err ;
20052014}
20062015
@@ -2009,6 +2018,7 @@ static void trace__symbols__exit(struct trace *trace)
20092018 machine__exit (trace -> host );
20102019 trace -> host = NULL ;
20112020
2021+ perf_env__exit (& trace -> host_env );
20122022 symbol__exit ();
20132023}
20142024
@@ -4428,7 +4438,7 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
44284438 goto out_delete_evlist ;
44294439 }
44304440
4431- err = trace__symbols_init (trace , evlist );
4441+ err = trace__symbols_init (trace , argc , argv , evlist );
44324442 if (err < 0 ) {
44334443 fprintf (trace -> output , "Problems initializing symbol libraries!\n" );
44344444 goto out_delete_evlist ;
0 commit comments