(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: (command.BraceGroup children: [ (command.Pipeline children: [ (command.Simple words: [ {(setarch)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:37) command_list: (command.CommandList children:[(C {(uname)} {(-m)})]) ) } {(-R)} {(sh)} {(-c)} {(SQ (Token id:Id.Lit_Chars val:'LD_TRACE_LOADED_OBJECTS=1 ' span_id:52)) (DQ ($ Id.VSub_Number '$1')) } ] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'2>&' span_id:58) fd: 2 arg_word: {(1)} ) ] ) (C {(grep)} {(SQ (Token id:Id.Lit_Chars val:'=>' span_id:68))}) (C {(grep)} {(-v)} {(SQ (Token id:Id.Lit_Chars val:linux-vdso span_id:78))}) (C {(grep)} {(-v)} {(SQ (Token id:Id.Lit_Chars val:'not found' span_id:88))}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/.*=> //' span_id:98))}) (C {(tr)} {(-d)} {(SQ (Token id:Id.Lit_Chars val:'()' span_id:108))}) (C {(tr)} {(-s)} {(SQ (Token id:Id.Lit_Chars val:'[:blank:]' span_id:120))} {(SQ (Token id:Id.Lit_Chars val:'\\t' span_id:124))} ) ] negated: F ) (C {(/bin/echo)} {(-n)} { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:133) command_list: (command.CommandList children: [(C {(readlink)} {(-f)} {(DQ ($ Id.VSub_Number '$1'))})] ) ) ) } ) (C {(/bin/echo)} {(-e)} {(SQ (Token id:Id.Lit_Chars val:'\\t' span_id:152)) (DQ (${ Id.VSub_Name exec_text_addr)) } ) ] ) ) (command.ShFunction name: mangle_objname body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'/ .-' span_id:186))} {(SQ (Token id:Id.Lit_Chars val:_ span_id:190))} ) ] negated: F ) ] ) ) (command.ShFunction name: hex_to_dec body: (command.BraceGroup children: [ (C {(printf)} {(DQ ('%d'))} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:213) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(sed)} {(SQ (Token id:Id.Lit_Chars val:'s/^[^0][^xX].*/0x&/' span_id:226))} ) ] negated: F ) ] ) ) } ) ] ) ) (command.ShFunction name: obj_load_addrs_as_cpp_macros body: (command.BraceGroup children: [ (command.Pipeline children: [ (C {(obj_load_addrs)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(sort)}) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:286) cond: [ (command.Sentence child: (C {(read)} {(obj)} {(base)}) terminator: (Token id:Id.Op_Semi val:';' span_id:293) ) ] body: (command.DoGroup children: [ (C {(echo)} { (DQ (-D__LOAD_ADDR_) (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:311) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(mangle_objname)} {(DQ (${ Id.VSub_Name obj))}) (C {(tr)} {(SQ (Token id:Id.Lit_Chars val:'[a-z]' span_id:326))} {(SQ (Token id:Id.Lit_Chars val:'[A-Z]' span_id:330))} ) ] 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: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(Id.Lit_LBracket '[')} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 356 ) command_list: (command.CommandList children: [ (C {(hex_to_dec)} {($ Id.VSub_DollarName '$base')}) ] ) ) } {(-lt)} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 366 ) command_list: (command.CommandList children: [ (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: (Token id: Id.Left_DollarParen val: '$(' span_id: 382 ) command_list: (command.CommandList children: [ (C {(hex_to_dec)} {($ Id.VSub_DollarName '$base')} ) ] ) ) } {(-eq)} { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 392 ) command_list: (command.CommandList children: [ (C {(hex_to_dec)} {(${ Id.VSub_Name exec_text_addr)} ) ] ) ) } {(Id.Lit_RBracket ']')} ) ] negated: T ) ] ) terminator: (Token id:Id.Op_Semi val:';' span_id:403) ) ] 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.Redir op: (Token id:Id.Redir_GreatAnd val:'1>&' span_id:419) fd: 1 arg_word: {(2)} ) ] ) ] spids: [352 405] ) ] ) ] ) ) ] negated: F ) ] ) ) ] )