(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_DATA) op: assign_op.Equal rhs: {<perf.data>} spids: [10] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-ne>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_DATA) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [30] ) ] ) ] spids: [13 27] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR) op: assign_op.Equal rhs: {(word_part.TildeSub token:<Id.Lit_TildeLike '~'>) <'/.debug/'>} spids: [62] ) ] ) ] spids: [48 59] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_DIR) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') <'/'>} spids: [73] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BUILDIDS) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<'/tmp/perf-archive-buildids.XXXXXX'>}) ) } spids: [80] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:NOBUILDID) op: assign_op.Equal rhs: {<0000000000000000000000000000000000000000>} spids: [87] ) ] ) (command.Pipeline children: [ (C {<perf>} {<buildid-list>} {<-i>} {($ Id.VSub_DollarName '$PERF_DATA')} {<--with-hits>}) (command.Simple words: [{<grep>} {<-v>} {(DQ <'^'> ($ Id.VSub_DollarName '$NOBUILDID') <' '>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$BUILDIDS')} ) ] do_fork: T ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-s>} {($ Id.VSub_DollarName '$BUILDIDS')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ <'perf archive: no build-ids found'>)}) (command.AndOr ops: [Id.Op_DPipe] children: [(C {<rm>} {($ Id.VSub_DollarName '$BUILDIDS')}) (C {<true>})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [117 131] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MANIFEST) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<mktemp>} {<'/tmp/perf-archive-manifest.XXXXXX'>}) ) } spids: [157] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PERF_BUILDID_LINKDIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')}) ) <'/'> } spids: [164] ) ] ) (command.Pipeline children: [ (C {<cut>} {<-d>} {(SQ <' '>)} {<-f>} {<1>} {($ Id.VSub_DollarName '$BUILDIDS')}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<build_id>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:linkname) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR') <'.build-id/'> (braced_var_sub token: <Id.VSub_Name build_id> suffix_op: (suffix_op.Slice begin: {<Id.Lit_Digits 0>} length: {<Id.Lit_Digits 2>} ) ) <'/'> (braced_var_sub token: <Id.VSub_Name build_id> suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 2>}) ) } spids: [203] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:filename) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {($ Id.VSub_DollarName '$linkname')}) ) } spids: [221] ) ] ) (command.Simple words: [ {<echo>} { (braced_var_sub token: <Id.VSub_Name linkname> suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$MANIFEST')} ) ] do_fork: T ) (command.Simple words: [ {<echo>} { (braced_var_sub token: <Id.VSub_Name filename> suffix_op: (suffix_op.Unary op_id: Id.VOp1_Pound arg_word: {($ Id.VSub_DollarName '$PERF_BUILDID_LINKDIR')} ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$MANIFEST')} ) ] do_fork: T ) ] ) ) ] negated: F ) (C {<tar>} {<cjf>} {($ Id.VSub_DollarName '$PERF_DATA') <.tar.bz2>} {<-C>} {($ Id.VSub_DollarName '$PERF_BUILDID_DIR')} {<-T>} {($ Id.VSub_DollarName '$MANIFEST')} ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<rm>} {($ Id.VSub_DollarName '$MANIFEST')} {($ Id.VSub_DollarName '$BUILDIDS')}) (C {<true>}) ] ) (C {<echo>} {<-e>} {(DQ <'Now please run:'> <Id.Lit_BadBackslash '\\'> <n>)}) (C {<echo>} {<-e>} { (DQ <Id.Lit_Dollar '$'> <' tar xvf '> ($ Id.VSub_DollarName '$PERF_DATA') <'.tar.bz2 -C ~/.debug'> <Id.Lit_BadBackslash '\\'> <n> ) } ) (C {<echo>} {(DQ <'wherever you need to run \'perf report\' on.'>)}) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )