(command.CommandList children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Simple words: [{<echo>} {(DQ ($ Id.VSub_Number '$0') <': missing program name'>)}] redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})] ) (command.Simple words: [ {<echo>} { (DQ <'Try '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) ($ Id.VSub_Number '$0') <" --help' for more information."> ) } ] redirects: [(redir.Redir op:<Id.Redir_GreatAnd '>&'> fd:-1 arg_word:{<2>})] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [49 60] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prog) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number '$1'))} spids: [94] ) ] ) (C {<shift>}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$prog'))} arms: [ (case_arm pat_list: [{<--h>} {<--he>} {<--hel>} {<--help>}] action: [ (C {<echo>} {(SQ <'Usage: catchsegv PROGRAM ARGS...'>)}) (C {<echo>} {(SQ <' --help print this help, then exit'>)}) (C {<echo>} {(SQ <' --version print version number, then exit'>)}) (C {<echo>} {(SQ <'For bug reporting instructions, please see:'>)}) (command.Simple words: [{<cat>}] redirects: [ (redir.HereDoc op: <Id.Redir_DLess '<<'> fd: -1 here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 176 stdin_parts: [<'@REPORT_BUGS_TO@.\n'>] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [125 138 183 -1] ) (case_arm pat_list: [{<--v>} {<--ve>} {<--ver>} {<--vers>} {<--versi>} {<--versio>} {<--version>}] action: [ (C {<echo>} {(SQ <'catchsegv @PKGVERSION@@VERSION@'>)}) (C {<echo>} { (SQ <'Copyright (C) 2016 Free Software Foundation, Inc.\n'> < 'This is free software; see the source for copying conditions. There is NO\n' > <'warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n'> <'Written by Ulrich Drepper.'> ) } ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<0>} ) ] spids: [186 211 236 -1] ) (case_arm pat_list:[{<Id.Lit_Star '*'>}] spids:[239 240 243 -1]) ] ) ] spids: [102 113] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:segv_output) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (C {<mktemp>} { (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonHyphen arg_word: {<Id.Lit_Slash /> <tmp>} ) ) </segv_output.XXXXXX> } ) ] ) ) } spids: [251] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.Subshell command_list: (command.CommandList children: [ (command.Simple words: [{<exec>}] redirects: [ (redir.Redir op:<Id.Redir_GreatAnd '3>&'> fd:3 arg_word:{<2>}) (redir.Redir op:<Id.Redir_Great '2>'> fd:2 arg_word:{</dev/null>}) ] ) (command.Simple words: [ {(DQ ($ Id.VSub_DollarName '$prog'))} { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary op_id:Id.VTest_Plus arg_word:{(DQ ($ Id.VSub_At '$@'))}) ) } ] redirects: [ (redir.Redir op:<Id.Redir_GreatAnd '2>&'> fd:2 arg_word:{<3>}) (redir.Redir op:<Id.Redir_GreatAnd '3>&'> fd:3 arg_word:{<->}) ] more_env: [ (env_pair name: LD_PRELOAD val: { (braced_var_sub token: <Id.VSub_Name LD_PRELOAD> suffix_op: (suffix_op.Unary op_id: Id.VTest_ColonPlus arg_word: {(${ Id.VSub_Name LD_PRELOAD) <':'>} ) ) <Id.Lit_Splice '@SLIB'> <Id.Lit_Other '@'> </libSegFault.so> } spids: [283] ) (env_pair name:SEGFAULT_USE_ALTSTACK val:{<1>} spids:[297]) (env_pair name: SEGFAULT_OUTPUT_NAME val: {($ Id.VSub_DollarName '$segv_output')} spids: [301] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exval) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [324] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-s>} {(DQ ($ Id.VSub_DollarName '$segv_output'))}) terminator: <Id.Op_Semi _> ) ] action: [ (command.Case to_match: {($ Id.VSub_DollarName '$prog')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> </> <Id.Lit_Star '*'>}] spids: [374 377 379 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:old_IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$IFS')} spids: [386] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {<Id.Lit_Other ':'>} spids: [390] ) ] ) (command.ForEach iter_name: p iter_words: [{($ Id.VSub_DollarName '$PATH')}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<test>} {<-n>} {(DQ ($ Id.VSub_DollarName '$p'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p) op: assign_op.Equal rhs: {<.>} spids: [416] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {<-f>} { (DQ ($ Id.VSub_DollarName '$p') </> ($ Id.VSub_DollarName '$prog') ) } ) terminator: <Id.Op_Semi _> ) ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:prog) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$p') </> ($ Id.VSub_DollarName '$prog') } spids: [436] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [420 433] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$old_IFS')} spids: [451] ) ] ) ] spids: [382 383 455 -1] ) ] ) (C {<sed>} {(SQ </Backtrace/q>)} {(DQ ($ Id.VSub_DollarName '$segv_output'))}) (command.Pipeline children: [ (C {<sed>} {(SQ <'1,/Backtrace/d'>)} {(DQ ($ Id.VSub_DollarName '$segv_output'))}) (command.Subshell command_list: (command.CommandList children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: [ (command.Sentence child: (C {<read>} {<line>}) terminator: <Id.Op_Semi _> ) ] body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:line) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$line')}) (C {<sed>} { (DQ <'s@^'> ($ Id.VSub_DollarName '$prog') <Id.Lit_Other '\\'> <'('> <Id.Lit_Other '\\'> <'[.*'> <Id.Lit_Other '\\'> <')@'> <Id.Lit_Other '\\'> <'1@'> ) } ) ] negated: F ) ] ) ) } spids: [496] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$line'))} arms: [ (case_arm pat_list: [ {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\['>) <Id.Lit_Star '*'> } ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:addr) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))} ) (C {<sed>} {(SQ <'s/^\\[\\(.*\\)\\]$/\\1/'>)} ) ] negated: F ) ] ) ) } spids: [544] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:complete) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (command.Simple words: [ {<addr2line>} {<-f>} {<-e>} {(DQ ($ Id.VSub_DollarName '$prog'))} {($ Id.VSub_DollarName '$addr')} ] redirects: [ (redir.Redir op: <Id.Redir_Great '2>'> fd: 2 arg_word: {</dev/null>} ) ] ) ] ) ) } spids: [574] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {<test>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>}) terminator: <Id.Op_Semi _> ) ] action: [ (C {<echo>} { (DQ (command_sub left_token: <Id.Left_Backtick '`'> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$complete' ) ) } ) (C {<sed>} { (SQ < 'N;s/\\(.*\\)\\n\\(.*\\)/\\2(\\1)/;' > ) } ) ] negated: F ) ] ) ) ($ Id.VSub_DollarName '$line') ) } ) ] spids: [595 606] ) ] else_action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))}) ] ) ] spids: [540 542 658 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<echo>} {(DQ ($ Id.VSub_DollarName '$line'))})] spids: [661 662 671 -1] ) ] ) ] ) ) ] ) ) ] negated: F ) ] spids: [337 348] ) ] ) (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$segv_output'))}) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {($ Id.VSub_DollarName '$exval')} ) ] )