(command.CommandList children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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 op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [ {<echo>} { (DQ <'Try '> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\`'>) ($ Id.VSub_Number '$0') <' --help\' for more information.'> ) } ] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (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: (condition.Shell commands: [ (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 op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'>) <OF>} here_end_span_id: 176 stdin_parts: [<'@REPORT_BUGS_TO@.\n'>] ) ) ] do_fork: T ) (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 '`'> child: (C {<mktemp>} { (braced_var_sub token: <Id.VSub_Name TMPDIR> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<Id.Lit_Slash '/'> <tmp>} ) ) <'/segv_output.XXXXXX'> } ) ) } spids: [251] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Exit exit>) ] ) (command.Subshell child: (command.CommandList children: [ (command.Simple words: [{<exec>}] redirects: [ (redir op:<Id.Redir_GreatAnd '3>&'> loc:(redir_loc.Fd fd:3) arg:{<2>}) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple words: [ {(DQ ($ Id.VSub_DollarName '$prog'))} { (braced_var_sub token: <Id.VSub_Number 1> suffix_op: (suffix_op.Unary tok: <Id.VTest_Plus '+'> arg_word: {(DQ ($ Id.VSub_At '$@'))} ) ) } ] redirects: [ (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<3>}) (redir op:<Id.Redir_GreatAnd '3>&'> loc:(redir_loc.Fd fd:3) arg:{<->}) ] more_env: [ (env_pair name: LD_PRELOAD val: { (braced_var_sub token: <Id.VSub_Name LD_PRELOAD> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonPlus ':+'> arg_word: {(${ Id.VSub_Name LD_PRELOAD) <':'>} ) ) <Id.Lit_Splice '@SLIB'> <Id.Lit_At '@'> <'/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] ) ] do_fork: T ) ] ) ) (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: (condition.Shell commands: [ (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_Colon ':'>} 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: (condition.Shell commands: [ (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 child: (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (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 '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName '$line')}) (C {<sed>} { (DQ <'s@^'> ($ Id.VSub_DollarName '$prog') <Id.Lit_BadBackslash '\\'> <'('> <Id.Lit_BadBackslash '\\'> <'[.*'> <Id.Lit_BadBackslash '\\'> <')@'> <Id.Lit_BadBackslash '\\'> <'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 '`'> child: (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 '`'> child: (command.Simple words: [ {<addr2line>} {<-f>} {<-e>} {(DQ ($ Id.VSub_DollarName '$prog'))} {($ Id.VSub_DollarName '$addr')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [574] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (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 '`'> child: (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')} ) ] )