(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:exec_text_addr) op: assign_op.Equal rhs: {<0x0>} spids: [20] ) ] ) (command.ShFunction name: obj_load_addrs body: (BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [ {<setarch>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<uname>} {<-m>}))} {<-R>} {<sh>} {<-c>} {(SQ <'LD_TRACE_LOADED_OBJECTS=1 '>) (DQ ($ Id.VSub_Number '$1'))} ] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (C {<grep>} {(SQ <'=>'>)}) (C {<grep>} {<-v>} {(SQ <linux-vdso>)}) (C {<grep>} {<-v>} {(SQ <'not found'>)}) (C {<sed>} {(SQ <'s/.*=> //'>)}) (C {<tr>} {<-d>} {(SQ <'()'>)}) (C {<tr>} {<-s>} {(SQ <'[:blank:]'>)} {(SQ <'\\t'>)}) ] negated: F ) (C {<'/bin/echo'>} {<-n>} { (DQ (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<readlink>} {<-f>} {(DQ ($ Id.VSub_Number '$1'))}) ) ) } ) (C {<'/bin/echo'>} {<-e>} {(SQ <'\\t'>) (DQ (${ Id.VSub_Name exec_text_addr))}) ] ) ) (command.ShFunction name: mangle_objname body: (BraceGroup children: [ (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<tr>} {(SQ <'/ .-'>)} {(SQ <_>)}) ] negated: F ) ] ) ) (command.ShFunction name: hex_to_dec body: (BraceGroup children: [ (C {<printf>} {(DQ <'%d'>)} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sed>} {(SQ <'s/^[^0][^xX].*/0x&/'>)}) ] negated: F ) ) } ) ] ) ) (command.ShFunction name: obj_load_addrs_as_cpp_macros body: (BraceGroup children: [ (command.Pipeline children: [ (C {<obj_load_addrs>} {(DQ ($ Id.VSub_Number '$1'))}) (C {<sort>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<read>} {<obj>} {<base>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<echo>} { (DQ <-D__LOAD_ADDR_> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<mangle_objname>} {(DQ (${ Id.VSub_Name obj))}) (C {<tr>} {(SQ <'[a-z]'>)} {(SQ <'[A-Z]'>)}) ] negated: F ) ) ) <Id.Lit_Equals '='> (DQ (${ Id.VSub_Name base) <ULL>) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:min_obj_load_addr) op: assign_op.Equal rhs: {<0x2aaa00000000>} spids: [348] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hex_to_dec>} {($ Id.VSub_DollarName '$base')}) ) } {<-lt>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hex_to_dec>} {($ Id.VSub_DollarName '$min_obj_load_addr')} ) ) } {<Id.Lit_RBracket ']'>} ) (command.Pipeline children: [ (C {<Id.Lit_LBracket '['>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hex_to_dec>} {($ Id.VSub_DollarName '$base')} ) ) } {<-eq>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<hex_to_dec>} {(${ Id.VSub_Name exec_text_addr)} ) ) } {<Id.Lit_RBracket ']'>} ) ] negated: T ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ <'Warning: library '> ($ Id.VSub_DollarName '$obj') <' has a load address '> ($ Id.VSub_DollarName '$base') <' less than the assumed minimum '> ($ Id.VSub_DollarName '$min_obj_load_addr') ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] spids: [352 405] ) ] ) ] ) ) ] negated: F ) ] ) ) ] )