(command.CommandList children: [ (C {<set>} {<-e>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:cur_ksyms_file) op: assign_op.Equal rhs: {(DQ <'include/generated/autoksyms.h'>)} spids: [59] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new_ksyms_file) op: assign_op.Equal rhs: {(DQ <'include/generated/autoksyms.h.tmpnew'>)} spids: [64] ) ] ) (command.ShFunction name: info body: (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$quiet'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <silent_>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<printf>} {(DQ <' %-7s %s'> <Id.Lit_BadBackslash '\\'> <n>)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] spids: [77 95] ) ] ) ] ) ) (C {<info>} {(DQ <CHK>)} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))}) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$KBUILD_VERBOSE'))} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <1> <Id.Lit_Star '*'>}] action: [(C {<set>} {<-x>})] spids: [142 145 153 -1] ) ] ) (command.Case to_match: {(DQ (${ Id.VSub_Name KCONFIG_CONFIG))} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'>}] action: [(C {<.>} {(DQ (${ Id.VSub_Name KCONFIG_CONFIG))})] spids: [171 174 186 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<.>} {(DQ <'./'> (${ Id.VSub_Name KCONFIG_CONFIG))})] spids: [188 189 -1 205] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<touch>} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))}) terminator: <Id.Op_Semi _> ) ] spids: [211 224] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} ) (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOT>} here_end_span_id: 259 stdin_parts: [ <'/*\n'> <' * Automatically generated file; DO NOT EDIT.\n'> <' */\n'> <'\n'> ] ) ) ] do_fork: T ) (command.Pipeline children: [ (C {<sed>} {<-ns>} {<-e>} {(SQ <'3{s/ /\\n/g;/^$/!p;}'>)} {(DQ ($ Id.VSub_DollarName '$MODVERDIR')) <'/'> <Id.Lit_Star '*'> <.mod>} ) (C {<sort>} {<-u>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<sym>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} { (DQ ($ Id.VSub_DollarName '$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX') ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sym) op: assign_op.Equal rhs: { (DQ (braced_var_sub token: <Id.VSub_Name sym> suffix_op: (suffix_op.Unary op_id:Id.VOp1_Pound arg_word:{<_>}) ) ) } spids: [311] ) ] ) ] spids: [295 308] ) ] ) (C {<echo>} {(DQ <'#define __KSYM_'> (${ Id.VSub_Name sym) <' 1'>)}) ] ) redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} ) ] ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$CONFIG_MODVERSIONS'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'#define __KSYM_module_layout 1'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} ) ] do_fork: T ) ] spids: [346 359] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:changed) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:count) op: assign_op.Equal rhs: {<0>} spids: [386] ) ] ) (command.Pipeline children: [ (C {<sort>} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))} {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} ) (C {<uniq>} {<-u>}) (C {<sed>} {<-n>} {(SQ <'s/^#define __KSYM_\\(.*\\) 1/\\1/p'>)}) (C {<tr>} {(DQ <A-Z_>)} {(DQ <'a-z/'>)}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<sympath>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$sympath'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token: <Id.ControlFlow_Continue continue> ) terminator: <Id.Op_Semi _> ) ] spids: [439 452] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:depfile) op: assign_op.Equal rhs: { (DQ <'include/config/ksym/'> (${ Id.VSub_Name sympath) <.h>) } spids: [460] ) ] ) (C {<mkdir>} {<-p>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {(DQ ($ Id.VSub_DollarName '$depfile'))}) ) ) } ) (C {<touch>} {(DQ ($ Id.VSub_DollarName '$depfile'))}) (C {<echo>} { (word_part.ArithSub anode: (arith_expr.BinaryAssign op_id: Id.Arith_PlusEqual left: <Id.Lit_ArithVarLike count> right: {<Id.Lit_Digits 1>} ) ) } ) ] ) ) (C {<tail>} {<-1>}) ] negated: F ) ] ) ) } spids: [383] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:changed) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name changed> suffix_op: (suffix_op.Unary op_id:Id.VTest_ColonHyphen arg_word:{<0>}) ) } spids: [513] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$changed')} {<-gt>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<grep>} {<-c>} {(DQ <'^#define __KSYM_'>)} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))} ) (C {<true>}) ] ) ) } spids: [541] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:new) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<grep>} {<-c>} {(DQ <'^#define __KSYM_'>)} {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} ) (C {<true>}) ] ) ) } spids: [561] ) ] ) (C {<info>} {(DQ <KSYMS>)} { (DQ <'symbols: before='> ($ Id.VSub_DollarName '$old') <', after='> ($ Id.VSub_DollarName '$new') <', changed='> ($ Id.VSub_DollarName '$changed') ) } ) (C {<info>} {(DQ <UPD>)} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))}) (C {<mv>} {<-f>} {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))} {(DQ ($ Id.VSub_DollarName '$cur_ksyms_file'))} ) (C {<exec>} {($ Id.VSub_At '$@')}) ] spids: [521 534] ) ] else_action: [(C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$new_ksyms_file'))})] ) ] )