(command.CommandList children: [ (command.ShFunction name: log_error_and_exit body: (command.BraceGroup children: [ (C {(echo)} {($ Id.VSub_Number '$0') (Id.Lit_Other ':')} {($ Id.VSub_At '$@')}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:44) arg_word: {(1)} ) ] ) ) (command.ShFunction name: process_entry body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_Number '$2'))} {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:81) ) ] action: [(C {(log_error_and_exit)} {(DQ ('bad arguments to process_entry()'))})] spids: [58 83] ) ] ) (C {(local)} {(Id.Lit_VarLike 'root=') (DQ ($ Id.VSub_Number '$1'))}) (C {(local)} {(Id.Lit_VarLike 'localpath=') (DQ ($ Id.VSub_Number '$2'))}) (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_DollarName '$localpath')}) (C {(grep)} {(-qs)} {(SQ (Token id:Id.Lit_Chars val:'^/' span_id:124))}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-ne)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:139) ) ] action: [ (C {(log_error_and_exit)} {($ Id.VSub_DollarName '$localpath')} {(does)} {(not)} {(start)} {(with)} {(/)} ) ] spids: [128 141] ) ] ) (C {(local)} {(Id.Lit_VarLike 'entry=') (DQ ($ Id.VSub_DollarName '$root') ($ Id.VSub_DollarName '$localpath')) } ) (C {(echo)} {(-L) ($ Id.VSub_DollarName '$entry')}) (C {(echo)} {(-Wl) (Id.Lit_Comma ',') (-rpath-link) (Id.Lit_Equals '=') ($ Id.VSub_DollarName '$entry') } ) ] ) ) (command.ShFunction name: process_ld_so_conf body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_Number '$1'))} {(Id.Lit_RBracket ']')} ) (C {(Id.Lit_LBracket '[')} {(-z)} {(DQ ($ Id.VSub_Number '$2'))} {(Id.Lit_RBracket ']')} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:218) ) ] action: [(C {(log_error_and_exit)} {(DQ ('bad arguments to process_ld_so_conf()'))})] spids: [195 220] ) ] ) (C {(local)} {(Id.Lit_VarLike 'root=') (DQ ($ Id.VSub_Number '$1'))}) (C {(local)} {(Id.Lit_VarLike 'ld_so_conf=') (DQ ($ Id.VSub_Number '$2'))}) (C {(local)} {(Id.Lit_VarLike 'saved_pwd=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:257) command_list: (command.CommandList children:[(C {(pwd)})]) ) } ) (C {(cd)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:264) command_list: (command.CommandList children: [(C {(dirname)} {(DQ ($ Id.VSub_DollarName '$ld_so_conf'))})] ) ) } ) (command.Pipeline children: [ (C {(cat)} {(DQ ($ Id.VSub_DollarName '$ld_so_conf'))}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:284) cond: [ (command.Sentence child: (C {(read)} {(ENTRY)}) terminator: (Token id:Id.Op_Semi val:';' span_id:289) ) ] body: (command.DoGroup children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENTRY'))}) (C {(grep)} {(-qs)} {(Id.Lit_Other '^') (include)}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:321) ) ] action: [ (C {(local)} {(Id.Lit_VarLike 'included_files=') (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:329) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENTRY'))}) (C {(sed)} { (SQ (Token id: Id.Lit_Chars val: 's/^include //' span_id: 341 ) ) } ) ] negated: F ) ] ) ) } ) (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$included_files'))}) (C {(grep)} {(-qs)} {(Id.Lit_Other '^') (/)}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:373) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [ {(ls)} {($ Id.VSub_DollarName '$root') ($ Id.VSub_DollarName '$included_files') } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '>' span_id: 385 ) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 388 ) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id: Id.Op_Semi val: ';' span_id: 391 ) ) ] action: [ (command.ForEach iter_name: inc_file iter_words: [ {($ Id.VSub_DollarName '$root') ($ Id.VSub_DollarName '$included_files') } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(process_ld_so_conf)} {(DQ ($ Id.VSub_DollarName '$root'))} {(DQ ($ Id.VSub_DollarName '$inc_file'))} ) ] ) ) ] spids: [378 393] ) ] ) ] spids: [362 375] ) ] else_action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [ {(ls)} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 433 ) command_list: (command.CommandList children: [(C {(pwd)})] ) ) (/) ($ Id.VSub_DollarName '$included_files') } ] redirects: [ (redir.Redir op: (Token id: Id.Redir_Great val: '>' span_id: 439 ) fd: -1 arg_word: {(/dev/null)} ) (redir.Redir op: (Token id: Id.Redir_GreatAnd val: '2>&' span_id: 442 ) fd: 2 arg_word: {(1)} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:445) ) ] action: [ (command.ForEach iter_name: inc_file iter_words: [ { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 456 ) command_list: (command.CommandList children: [(C {(pwd)})] ) ) (/) ($ Id.VSub_DollarName '$included_files') } ] do_arg_iter: F body: (command.DoGroup children: [ (C {(process_ld_so_conf)} {(DQ ($ Id.VSub_DollarName '$root'))} {(DQ ($ Id.VSub_DollarName '$inc_file'))} ) ] ) ) ] spids: [429 447] ) ] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:486) ) ] spids: [310 323] ) ] ) (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$ENTRY'))}) (C {(grep)} {(-qs)} {(Id.Lit_Other '^') (/)}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:520) ) ] action: [ (C {(process_entry)} {(DQ ($ Id.VSub_DollarName '$root'))} {(DQ ($ Id.VSub_DollarName '$ENTRY'))} ) ] spids: [509 522] ) ] ) ] ) ) ] negated: F ) (C {(cd)} {(DQ ($ Id.VSub_DollarName '$saved_pwd'))}) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_Pound '$#')} {(-ne)} {(1)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:571) ) ] action: [ (C {(echo)} {(Usage)} {($ Id.VSub_Number '$0')} {(/abspath/to/sysroot)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:585) arg_word: {(1)} ) ] spids: [560 573] ) ] ) (command.Pipeline children: [ (C {(echo)} {($ Id.VSub_Number '$1')}) (C {(grep)} {(-qs)} {(SQ (Token id:Id.Lit_Chars val:' ' span_id:603))}) ] negated: F ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')}) terminator: (Token id:Id.Op_Semi val:';' span_id:617) ) ] action: [(C {(log_error_and_exit)} {($ Id.VSub_Number '$1')} {(contains)} {(whitespace.)})] spids: [606 619] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LD_SO_CONF) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1') (/etc/ld.so.conf))} spids: [633] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LD_SO_CONF_D) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1') (/etc/ld.so.conf.d))} spids: [639] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ ($ Id.VSub_DollarName '$LD_SO_CONF'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:657) ) ] action: [ (command.Pipeline children: [ (C {(process_ld_so_conf)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_DollarName '$LD_SO_CONF'))} ) (C {(xargs)} {(echo)}) ] negated: F ) ] spids: [646 659] ) (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-e)} {(DQ ($ Id.VSub_DollarName '$LD_SO_CONF_D'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:689) ) ] action: [ (command.Simple words: [ {(find)} {(DQ ($ Id.VSub_DollarName '$LD_SO_CONF_D'))} {(-maxdepth)} {(1)} {(-name)} {(SQ (Token id:Id.Lit_Chars val:'*.conf' span_id:707))} {(-print)} {(-quit)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:714) fd: -1 arg_word: {(/dev/null)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_QMark '$?')} {(-eq)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:730) ) ] action: [ (command.Pipeline children: [ (command.ForEach iter_name: entry iter_words: [ {($ Id.VSub_DollarName '$LD_SO_CONF_D') (/) (Id.Lit_Star '*') (.conf)} ] do_arg_iter: F body: (command.DoGroup children: [ (C {(process_ld_so_conf)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_DollarName '$entry'))} ) ] ) ) (C {(xargs)} {(echo)}) ] negated: F ) ] spids: [719 732] ) ] ) ] spids: [678 691] ) ] ) ] )