(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:all_obj_meta_file) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} ) ] ) (command.ShFunction name: lexicographic_compare_le body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sorted) op: Equal rhs: { (DQ (command_sub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number '$1')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\n'>] ) (DQ ($ VSub_Number '$2')) } ) (command.Simple words: [{(sort)}] more_env: [(env_pair name:LANG val:{(C)})] ) ] negated: F ) ] ) ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$sorted'))} right: {(DQ ($ VSub_Number '$1')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\n'>] ) (DQ ($ VSub_Number '$2')) } ) ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$sorted'))} right: {(DQ ($ VSub_Number '$2')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\n'>] ) (DQ ($ VSub_Number '$1')) } ) ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] else_action: [ (command.Simple words: [{(echo)} {(DQ ('lexicographic_compare_le: internal error'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.ControlFlow token:<ControlFlow_Return return> arg_word:{(99)}) ] ) ] ) ) (command.ShFunction name: lexicographic_compare_lt body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Number '$1'))} right: {(DQ ($ VSub_Number '$2'))} ) ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] else_action: [ (C {(lexicographic_compare_le)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))}) ] ) ] ) ) (command.ShFunction name: lexicographic_compare_gt body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(lexicographic_compare_le)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] ) ) (command.ShFunction name: lexicographic_compare_ge body: (command.BraceGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (C {(lexicographic_compare_lt)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))} ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Return return> arg_word:{(1)})] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:all_source_meta_file) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} ) ] ) (command.Simple words: [{(echo)} {(DQ ('all_source_meta_file: ') ($ VSub_DollarName '$all_source_meta_file'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.Simple words: [{(echo)} {(DQ ('all_obj_meta_file: ') ($ VSub_DollarName '$all_obj_meta_file'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:keep_old_source_line) op:Equal rhs:{(0)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: Equal rhs: {(0)} ) ] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(read)} {(-r)} {(obj)} {(KW_Func func)} {(addr)} {(sourcefile)} {(sourceline)} {(sourceline_end)} {(typ)} {(rest)} ) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.WhileUntil keyword: <KW_While while> cond: [(command.Sentence child:(C {(true)}) terminator:<Op_Semi ';'>)] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: {($ VSub_DollarName '$keep_old_source_line')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: Equal rhs: {(0)} ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [ {(read)} {(-r)} {(srcmeta_sourcefile)} {(srcmeta_sourceline)} {(srcmeta_sourceline_end)} {(srcmeta_rest)} ] redirects: [ (redir.Redir op: <Redir_LessAnd '<&'> fd: 16777215 arg_word: {(3)} ) ] ) (command.ControlFlow token: <ControlFlow_Break break> arg_word: {(2)} ) ] ) ] ) ] else_action: [(C {(true)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$srcmeta_sourcefile'))} right: {(DQ ($ VSub_DollarName '$sourcefile'))} ) ) (C {(lexicographic_compare_ge)} {(DQ ($ VSub_DollarName '$srcmeta_sourceline'))} {(DQ ($ VSub_DollarName '$sourceline'))} ) (C {(lexicographic_compare_lt)} {(DQ ($ VSub_DollarName '$srcmeta_sourceline'))} {(DQ ($ VSub_DollarName '$sourceline_end'))} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ ($ VSub_DollarName '$obj')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$func')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$addr')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$sourcefile')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$sourceline')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$sourceline_end')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) (DQ ($ VSub_DollarName '$srcmeta_rest')) (single_quoted left: <Left_SingleQuoteC "$'"> tokens: [<Char_OneChar '\\t'>] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: Equal rhs: {(1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: Equal rhs: {(1)} ) ] ) (command.ControlFlow token: <ControlFlow_Continue continue> arg_word: {(2)} ) ] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ('NO MATCH: found ') ($ VSub_DollarName '$srcmeta_sourcefile') (' != ') ($ VSub_DollarName '$sourcefile') (' or ') ) } { (DQ ('NOT lexicographic_compare_ge ') ($ VSub_DollarName '$srcmeta_sourceline') (' ') ($ VSub_DollarName '$sourceline') (' or') ) } { (DQ ('NOT lexicographic_compare_lt ') ($ VSub_DollarName '$srcmeta_sourceline') (' ') ($ VSub_DollarName '$sourceline_end') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DPipe] children: [ (C {(lexicographic_compare_lt)} {(DQ ($ VSub_DollarName '$srcmeta_sourcefile'))} {(DQ ($ VSub_DollarName '$sourcefile'))} ) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_GlobDEqual left: { (DQ ($ VSub_DollarName '$srcmeta_sourcefile' ) ) } right: {(DQ ($ VSub_DollarName '$sourcefile'))} ) ) (C {(lexicographic_compare_lt)} {(DQ ($ VSub_DollarName '$srcmeta_sourceline'))} {(DQ ($ VSub_DollarName '$sourceline_end'))} ) ] ) ] ) ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: BoolBinary_eq left: { ($ VSub_DollarName '$have_matched_this_source_line' ) } right: {(1)} ) ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ( 'warning: skipping source meta line, comparing lt next obj entry (which has file ' ) (${ VSub_Name sourcefile) (', lines ') (${ VSub_Name sourceline) (-) (${ VSub_Name sourceline_end) (', address ') (${ VSub_Name obj) ('<') (${ VSub_Name func) ('> @') (${ VSub_Name addr) ('): ') ($ VSub_DollarName '$srcmeta_sourcefile') ) (single_quoted left:<Left_SingleQuoteC "$'"> tokens:[<Char_OneChar '\\t'>]) (DQ ($ VSub_DollarName '$srcmeta_sourceline')) (single_quoted left:<Left_SingleQuoteC "$'"> tokens:[<Char_OneChar '\\t'>]) (DQ ($ VSub_DollarName '$srcmeta_rest')) } ] redirects: [ (redir.Redir op: <Redir_GreatAnd '1>&'> fd: 1 arg_word: {(2)} ) ] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: Equal rhs: {(0)} ) ] ) (command.ControlFlow token: <ControlFlow_Continue continue> arg_word: {(1)} ) ] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ( 'warning: skipping objdump meta line, comparing lt next source entry (which has file ' ) (${ VSub_Name srcmeta_sourcefile) (', line ') (${ VSub_Name srcmeta_sourceline) ('): ') ($ VSub_DollarName '$obj') (' ') ($ VSub_DollarName '$func') (' ') ($ VSub_DollarName '$addr') (' ') ($ VSub_DollarName '$sourcefile') (' ') ($ VSub_DollarName '$sourceline') (' ') ($ VSub_DollarName '$sourceline_end') (' ') ($ VSub_DollarName '$srcmeta_rest') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '1>&'> fd:1 arg_word:{(2)})] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: Equal rhs: {(1)} ) ] ) (command.ControlFlow token: <ControlFlow_Continue continue> arg_word: {(2)} ) ] ) ] ) ] ) ) ] ) redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$all_obj_meta_file'))} ) (redir.Redir op: <Redir_Less '3<'> fd: 3 arg_word: {(DQ ($ VSub_DollarName '$all_source_meta_file'))} ) ] ) ] )