(command.CommandList children: [ (command.ShFunction name_tok: <this_filename> name: this_filename body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'ctr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ctr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ctr='> name:ctr) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <true> more_env: [] words: [{<true>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_z child: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FUNCNAME> var_name: FUNCNAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName ctr)} ) right: <Id.Right_DollarBrace '}'> ) ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Error: couldn\'t find this_filename'>)}] redirects: [ (Redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [28 46] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name FUNCNAME> var_name: FUNCNAME bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName ctr)} ) right: <Id.Right_DollarBrace '}'> ) ) } right: {(DQ <this_filename>)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BASH_SOURCE> var_name: BASH_SOURCE bracket_op: (bracket_op.ArrayIndex expr: {($ Id.VSub_DollarName ctr)} ) right: <Id.Right_DollarBrace '}'> ) } ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [67 89] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'ctr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ctr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ctr='> name:ctr) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName ctr)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment left: <Id.Lit_VarLike 'LIBALLOCS_BASE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LIBALLOCS_BASE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LIBALLOCS_BASE='> name:LIBALLOCS_BASE) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LIBALLOCS_BASE> var_name: LIBALLOCS_BASE suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <dirname> more_env: [] words: [ {<dirname>} { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <this_filename> more_env: [] words: [{<this_filename>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) <Id.Lit_Slash '/'> <..> } ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USEDTYPES='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USEDTYPES='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USEDTYPES='> name:USEDTYPES) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name USEDTYPES> var_name: USEDTYPES suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(${ Id.VSub_Name LIBALLOCS_BASE) <Id.Lit_Slash '/'> <tools> <Id.Lit_Slash '/'> <usedtypes> } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'BASE_TYPES_TRANSLATION='> name: BASE_TYPES_TRANSLATION ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name BASE_TYPES_TRANSLATION> var_name: BASE_TYPES_TRANSLATION suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: {(${ Id.VSub_Name LIBALLOCS_BASE) <Id.Lit_Slash '/'> <tools> <Id.Lit_Slash '/'> <lang> <Id.Lit_Slash '/'> <c> <Id.Lit_Slash '/'> <bin> <Id.Lit_Slash '/'> <base-types-translation> } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'CC='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'CC='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CC='> name:CC) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name CC> var_name: CC suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<cc>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'LD='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'LD='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LD='> name:LD) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name LD> var_name: LD suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<ld>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'OBJCOPY='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OBJCOPY='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OBJCOPY='> name:OBJCOPY) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name OBJCOPY> var_name: OBJCOPY suffix_op: (suffix_op.Unary op: <Id.VTest_ColonHyphen _> arg_word: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <which> more_env: [] words: [{<which>} {<objcopy>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShFunction name_tok: <compile> name: compile body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'src='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'src='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'src='> name:src) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'dest='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dest='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dest='> name:dest) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'asm='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'asm='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'asm='> name:asm) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>} {<--suffix> <Id.Lit_Equals '='> <.s>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <gcc> more_env: [] words: [ {<gcc>} {<-S>} {<-x>} {<c>} {<-o>} {(DQ ($ Id.VSub_DollarName asm))} {(DQ ($ Id.VSub_DollarName src))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <gcc> more_env: [] words: [ {<gcc>} {<-c>} {<-o>} {(DQ ($ Id.VSub_DollarName dest))} {(DQ ($ Id.VSub_DollarName asm))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Compiler generated '> ($ Id.VSub_DollarName dest))}] redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <link_defining_aliases> name: link_defining_aliases body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'our_objfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'our_objfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'our_objfile='> name:our_objfile) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'our_usedtypes_obj='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'our_usedtypes_obj='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'our_usedtypes_obj='> name: our_usedtypes_obj ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'temporary_out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'temporary_out='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'temporary_out='> name:temporary_out) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <mktemp> more_env: [] words: [{<mktemp>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.AndOr children: [ (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name LD)} {<-o>} {(DQ ($ Id.VSub_DollarName temporary_out))} {<-r>} {(DQ ($ Id.VSub_DollarName our_objfile))} {(DQ ($ Id.VSub_DollarName our_usedtypes_obj))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'Linker generated '> (${ Id.VSub_Name temporary_out) <', moving to '> (${ Id.VSub_Name our_objfile) ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <mv> more_env: [] words: [ {<mv>} {(DQ ($ Id.VSub_DollarName temporary_out))} {(DQ ($ Id.VSub_DollarName our_objfile))} ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <symbol_redefinitions> name: symbol_redefinitions body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'f='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'f='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'f='> name:f) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <nm> more_env: [] words: [{<nm>} {<-fposix>} {<--defined-only>} {(DQ ($ Id.VSub_DollarName f))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {<-s>} {(SQ <'[:blank:]'>)} {(SQ <'\\t'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <cut> more_env: [] words: [{<cut>} {<-f1>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <egrep> more_env: [] words: [{<egrep>} {(SQ <'__uniqtype_([0-9a-f]{8})_'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-r>} { (SQ < 's/__uniqtype_([0-9a-f]{8})_(.*)/--redefine-sym __uniqtype__\\2=__uniqtype_\\1_\\2/' > ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <objcopy_and_redefine_codeless_names> name: objcopy_and_redefine_codeless_names body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'our_objfile='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'our_objfile='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'our_objfile='> name:our_objfile) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'our_usedtypes_obj='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'our_usedtypes_obj='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'our_usedtypes_obj='> name: our_usedtypes_obj ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.AndOr children: [ (command.ShAssignment left: <Id.Lit_VarLike 'second_redefinition_args='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'second_redefinition_args='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'second_redefinition_args='> name: second_redefinition_args ) op: assign_op.Equal rhs: { (DQ (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <symbol_redefinitions> more_env: [] words: [ {<symbol_redefinitions>} {(DQ ($ Id.VSub_DollarName our_usedtypes_obj))} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} {(${ Id.VSub_Name OBJCOPY)} {($ Id.VSub_DollarName second_redefinition_args)} {(DQ ($ Id.VSub_DollarName our_objfile))} ] redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple blame_tok: <Id.Left_DollarBrace '${'> more_env: [] words: [ {(${ Id.VSub_Name OBJCOPY)} {($ Id.VSub_DollarName second_redefinition_args)} {(DQ ($ Id.VSub_DollarName our_objfile))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <'objcopy renamed symbols in '> ($ Id.VSub_DollarName our_objfile) <' according to '> ($ Id.VSub_DollarName second_redefinition_args) ) } ] redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) ] ops: [<Id.Op_DAmp _> <Id.Op_DAmp _> <Id.Op_DAmp _>] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) ] )