(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:all_obj_meta_file) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [29] ) ] ) (command.ShFunction name: lexicographic_compare_le body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sorted) op: assign_op.Equal rhs: { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:45) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_Number '$1')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:52) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:53)] ) (DQ ($ Id.VSub_Number '$2')) } ) (command.Simple words: [{(sort)}] more_env: [(env_pair name:LANG val:{(C)} spids:[61])] ) ] negated: F ) ] ) ) ) } spids: [43] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$sorted'))} right: {(DQ ($ Id.VSub_Number '$1')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:83) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:84)] ) (DQ ($ Id.VSub_Number '$2')) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:91) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:100) arg_word: {(0)} ) ] spids: [70 93] ) (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$sorted'))} right: {(DQ ($ Id.VSub_Number '$2')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:121) tokens: [(Token id:Id.Char_OneChar val:'\\n' span_id:122)] ) (DQ ($ Id.VSub_Number '$1')) } ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:129) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:138) arg_word: {(1)} ) ] spids: [108 131] ) ] else_action: [ (command.Simple words: [{(echo)} {(DQ ('lexicographic_compare_le: internal error'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:155) fd: 1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:159) 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: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_Number '$1'))} right: {(DQ ($ Id.VSub_Number '$2'))} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:194) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:203) arg_word: {(1)} ) ] spids: [179 196] ) ] else_action: [ (C {(lexicographic_compare_le)} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.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 ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:251) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:261) arg_word: {(0)} ) ] spids: [238 253] ) ] else_action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:273) 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 ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:304) ) ] action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:314) arg_word: {(0)} ) ] spids: [291 306] ) ] else_action: [ (command.ControlFlow token: (Token id:Id.ControlFlow_Return val:return span_id:326) arg_word: {(1)} ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:all_source_meta_file) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$2'))} spids: [337] ) ] ) (command.Simple words: [{(echo)} {(DQ ('all_source_meta_file: ') ($ Id.VSub_DollarName '$all_source_meta_file'))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_GreatAnd val:'1>&' span_id:349) fd:1 arg_word:{(2)}) ] ) (command.Simple words: [{(echo)} {(DQ ('all_obj_meta_file: ') ($ Id.VSub_DollarName '$all_obj_meta_file'))}] redirects: [ (redir.Redir op:(Token id:Id.Redir_GreatAnd val:'1>&' span_id:359) fd:1 arg_word:{(2)}) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: assign_op.Equal rhs: {(0)} spids: [366] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: assign_op.Equal rhs: {(0)} spids: [369] ) ] ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:372) cond: [ (command.Sentence child: (C {(read)} {(-r)} {(obj)} {(Id.KW_Func func)} {(addr)} {(sourcefile)} {(sourceline)} {(sourceline_end)} {(typ)} {(rest)} ) terminator: (Token id:Id.Op_Semi val:';' span_id:393) ) ] body: (command.DoGroup children: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:408) cond: [ (command.Sentence child: (C {(true)}) terminator: (Token id:Id.Op_Semi val:';' span_id:411) ) ] body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: {($ Id.VSub_DollarName '$keep_old_source_line')} right: {(0)} ) ) terminator: (Token id:Id.Op_Semi val:';' span_id:432) ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: assign_op.Equal rhs: {(0)} spids: [441] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.Simple words: [ {(read)} {(-r)} {(srcmeta_sourcefile)} {(srcmeta_sourceline)} {(srcmeta_sourceline_end)} {(srcmeta_rest)} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_LessAnd val:'<&' span_id:461) fd: -1 arg_word: {(3)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:466) arg_word: {(2)} ) ] ) ] spids: [421 434] ) ] else_action: [(C {(true)})] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {(DQ ($ Id.VSub_DollarName '$srcmeta_sourcefile'))} right: {(DQ ($ Id.VSub_DollarName '$sourcefile'))} ) ) (C {(lexicographic_compare_ge)} {(DQ ($ Id.VSub_DollarName '$srcmeta_sourceline'))} {(DQ ($ Id.VSub_DollarName '$sourceline'))} ) (C {(lexicographic_compare_lt)} {(DQ ($ Id.VSub_DollarName '$srcmeta_sourceline'))} {(DQ ($ Id.VSub_DollarName '$sourceline_end'))} ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:581) ) ] action: [ (C {(echo)} {(DQ ($ Id.VSub_DollarName '$obj')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:601) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:602)] ) (DQ ($ Id.VSub_DollarName '$func')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:607) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:608)] ) (DQ ($ Id.VSub_DollarName '$addr')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:613) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:614)] ) (DQ ($ Id.VSub_DollarName '$sourcefile')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:619) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:620)] ) (DQ ($ Id.VSub_DollarName '$sourceline')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:625) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:626)] ) (DQ ($ Id.VSub_DollarName '$sourceline_end')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:631) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:632)] ) (DQ ($ Id.VSub_DollarName '$srcmeta_rest')) (single_quoted left: (Token id:Id.Left_SingleQuoteC val:"$'" span_id:637) tokens: [(Token id:Id.Char_OneChar val:'\\t' span_id:638)] ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:have_matched_this_source_line) op: assign_op.Equal rhs: {(1)} spids: [648] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: assign_op.Equal rhs: {(1)} spids: [662] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:666) arg_word: {(2)} ) ] spids: [538 583] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ('NO MATCH: found ') ($ Id.VSub_DollarName '$srcmeta_sourcefile') (' != ') ($ Id.VSub_DollarName '$sourcefile') (' or ') ) } { (DQ ('NOT lexicographic_compare_ge ') ($ Id.VSub_DollarName '$srcmeta_sourceline') (' ') ($ Id.VSub_DollarName '$sourceline') (' or') ) } { (DQ ('NOT lexicographic_compare_lt ') ($ Id.VSub_DollarName '$srcmeta_sourceline') (' ') ($ Id.VSub_DollarName '$sourceline_end') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:707) fd: 1 arg_word: {(2)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (C {(lexicographic_compare_lt)} {(DQ ($ Id.VSub_DollarName '$srcmeta_sourcefile'))} {(DQ ($ Id.VSub_DollarName '$sourcefile'))} ) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: { (DQ ($ Id.VSub_DollarName '$srcmeta_sourcefile' ) ) } right: { (DQ ($ Id.VSub_DollarName '$sourcefile') ) } ) ) (C {(lexicographic_compare_lt)} { (DQ ($ Id.VSub_DollarName '$srcmeta_sourceline') ) } {(DQ ($ Id.VSub_DollarName '$sourceline_end'))} ) ] ) ] ) ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:760) ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Pipeline children: [ (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_eq left: { ($ Id.VSub_DollarName '$have_matched_this_source_line' ) } right: {(1)} ) ) ] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:786) ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ( 'warning: skipping source meta line, comparing lt next obj entry (which has file ' ) (${ Id.VSub_Name sourcefile) (', lines ') (${ Id.VSub_Name sourceline) (-) (${ Id.VSub_Name sourceline_end) (', address ') (${ Id.VSub_Name obj) ('<') (${ Id.VSub_Name func) ('> @') (${ Id.VSub_Name addr) ('): ') ($ Id.VSub_DollarName '$srcmeta_sourcefile') ) (single_quoted left: (Token id: Id.Left_SingleQuoteC val: "$'" span_id: 825 ) tokens: [ (Token id: Id.Char_OneChar val: '\\t' span_id: 826 ) ] ) (DQ ($ Id.VSub_DollarName '$srcmeta_sourceline')) (single_quoted left: (Token id: Id.Left_SingleQuoteC val: "$'" span_id: 831 ) tokens: [ (Token id: Id.Char_OneChar val: '\\t' span_id: 832 ) ] ) (DQ ($ Id.VSub_DollarName '$srcmeta_rest')) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:838) fd: 1 arg_word: {(2)} ) ] ) ] spids: [773 788] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: assign_op.Equal rhs: {(0)} spids: [845] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:853) arg_word: {(1)} ) ] spids: [713 762] ) ] else_action: [ (command.Simple words: [ {(echo)} { (DQ ( 'warning: skipping objdump meta line, comparing lt next source entry (which has file ' ) (${ Id.VSub_Name srcmeta_sourcefile) (', line ') (${ Id.VSub_Name srcmeta_sourceline) ('): ') ($ Id.VSub_DollarName '$obj') (' ') ($ Id.VSub_DollarName '$func') (' ') ($ Id.VSub_DollarName '$addr') (' ') ($ Id.VSub_DollarName '$sourcefile') (' ') ($ Id.VSub_DollarName '$sourceline') (' ') ($ Id.VSub_DollarName '$sourceline_end') (' ') ($ Id.VSub_DollarName '$srcmeta_rest') ) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:909) fd: 1 arg_word: {(2)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:keep_old_source_line) op: assign_op.Equal rhs: {(1)} spids: [913] ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Continue val:continue span_id:917) arg_word: {(2)} ) ] ) ] ) ] ) ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:934) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$all_obj_meta_file'))} ) (redir.Redir op: (Token id:Id.Redir_Less val:'3<' span_id:939) fd: 3 arg_word: {(DQ ($ Id.VSub_DollarName '$all_source_meta_file'))} ) ] ) ] )