(List (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS false]})]) (If (Com {[LIT_OTHER "["]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[DQ [LIT_CHARS -v]]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS true]})]) (Com {[LIT_CHARS shift]}) ) ) (= scope= flags=0 words=[] bindings=[('build_plat', {[LIT_CHARS x86]})]) (= scope= flags=0 words=[] bindings=[('plat', {[LIT_CHARS x86]})]) (= scope= flags=0 words=[] bindings=[('os', {[LIT_CHARS linux-gnu]})]) (= scope= flags=0 words=[] bindings=[('num_errors', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('LIBUNWIND', {[LIT_CHARS ../src/.libs/libunwind.so]})]) (= scope= flags=0 words=[] bindings=[('LIBUNWIND_GENERIC', {[LIT_CHARS ../src/.libs/libunwind-] [VarSub plat] [LIT_CHARS .so]})]) (FunctionDef fetch_symtab [] (List (= scope= flags=0 words=[] bindings=[('filename', {[VarSub 1]})]) (If (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -r]} {[VarSub filename]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]}) ) (If (Com {[VarSub verbose]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Checking "][VarSub filename][LIT_CHARS ...]]}) ) (= scope= flags=0 words=[] bindings=[('symtab', {[ComSub (Com {[LIT_CHARS nm]} {[LIT_CHARS -g]} {[VarSub filename]})]})]) (= scope= flags=0 words=[] bindings=[('saved_IFS', {[DQ [VarSub IFS]]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('undef', {[ComSub (Com {[LIT_CHARS nm]} {[LIT_CHARS -g]} {[LIT_CHARS -u]} {[VarSub filename]})]})]) (For line [{[VarSub undef]}]) (= scope= flags=0 words=[] bindings=[('symtab', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub symtab]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS "^"][VarSub line]] [\ LIT_ESCAPED_CHAR "\\$"]}) )]})]) ) (= scope= flags=0 words=[] bindings=[('IFS', {[DQ [VarSub saved_IFS]]})]) ) ) (FunctionDef ignore [] (List (= scope= flags=0 words=[] bindings=[('sym', {[VarSub 1]})]) (= scope= flags=0 words=[] bindings=[('symtab', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub symtab]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS " "][VarSub sym][\ LIT_ESCAPED_CHAR "\\$"]]}) )]})]) ) ) (FunctionDef match [] (List (= scope= flags=0 words=[] bindings=[('sym', {[VarSub 1]})]) (If (Com {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub symtab]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -q]} {[DQ [LIT_CHARS " "][VarSub sym][\ LIT_ESCAPED_CHAR "\\$"]]}) )]}) (= scope= flags=0 words=[] bindings=[('symtab', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub symtab]]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -v]} {[DQ [LIT_CHARS " "][VarSub sym][\ LIT_ESCAPED_CHAR "\\$"]]}) )]})]) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " ERROR: Symbol "][\ LIT_ESCAPED_CHAR "\\\""][VarSub sym][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " missing."]]}) (= scope= flags=0 words=[] bindings=[('num_errors', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub num_errors]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) ) ) ) ) (FunctionDef filter_misc [] (List (Com {[LIT_CHARS ignore]} {[LIT_CHARS _DYNAMIC]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _GLOBAL_OFFSET_TABLE_]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS __bss_start]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _edata]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _end]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _Uelf32_get_proc_name]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _Uelf32_valid_object]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _Uelf64_get_proc_name]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _Uelf64_valid_object]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS _U.] [LIT_OTHER "*"] [LIT_CHARS debug_level]}) (Com {[LIT_CHARS ignore]} {[LIT_CHARS ICRT.INTERNAL]}) ) ) (FunctionDef check_local_unw_abi [] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _create_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _destroy_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_proc_info]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_proc_info_by_ip]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_proc_name]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_reg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _get_save_loc]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _init_local]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _init_remote]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _is_signal_frame]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _handle_signal_frame]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _local_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _resume]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _set_caching_policy]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _set_reg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _set_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _step]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _flush_cache]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_accessors]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _getcontext]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _regname]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _strerror]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U_dyn_cancel]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U_dyn_info_list_addr]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U_dyn_register]}) (Com {[LIT_CHARS match]} {[LIT_CHARS unw_backtrace]}) (Com {[LIT_CHARS match]} {[LIT_CHARS backtrace]}) (Case to_match={[VarSub plat]}, pat_word_list=[[{[LIT_CHARS hppa]}], [{[LIT_CHARS ia64]}], [{[LIT_CHARS x86]}], [{[LIT_CHARS x86_64]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _setcontext]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _search_unwind_table]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _setcontext]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS xno]} {[LIT_OTHER "="]} {[LIT_CHARS xyes]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _UL] [VarSub plat] [LIT_CHARS _dwarf_find_debug_frame]}) ) ) ) (FunctionDef check_generic_unw_abi [] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _create_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _destroy_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _flush_cache]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_accessors]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_proc_info]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_proc_info_by_ip]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_proc_name]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_reg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_save_loc]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _init_local]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _init_remote]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_signal_frame]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _handle_signal_frame]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _local_addr_space]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _regname]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _resume]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _set_caching_policy]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _set_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _set_reg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _step]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _strerror]}) (Case to_match={[VarSub plat]}, pat_word_list=[[{[LIT_CHARS hppa]}], [{[LIT_CHARS ia64]}], [{[LIT_CHARS x86]}], [{[LIT_CHARS x86_64]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _search_unwind_table]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _find_dyn_list]}) (If (Com {[LIT_OTHER "["]} {[VarSub plat]} {[LIT_OTHER "="]} {[VarSub build_plat]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Case to_match={[VarSub os]}, pat_word_list=[[{[LIT_CHARS linux] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_kernel_table]}) ) ) ) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _get_elf_image]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) ) (List (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _is_fpreg]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _dwarf_search_unwind_table]}) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS xno]} {[LIT_OTHER "="]} {[LIT_CHARS xyes]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _U] [VarSub plat] [LIT_CHARS _dwarf_find_debug_frame]}) ) ) ) (FunctionDef check_cxx_abi [] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_Backtrace]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_DeleteException]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_FindEnclosingFunction]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_ForcedUnwind]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetBSP]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetCFA]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetDataRelBase]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetGR]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetIP]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetIPInfo]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetLanguageSpecificData]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetRegionStart]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_GetTextRelBase]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_RaiseException]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_Resume]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_Resume_or_Rethrow]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_SetGR]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _Unwind_SetIP]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_Backtrace]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_DeleteException]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_FindEnclosingFunction]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_ForcedUnwind]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetBSP]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetCFA]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetDataRelBase]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetGR]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetIP]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetIPInfo]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetLanguageSpecificData]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetRegionStart]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_GetTextRelBase]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_RaiseException]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_Resume]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_Resume_or_Rethrow]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_SetGR]}) (Com {[LIT_CHARS match]} {[LIT_CHARS __libunwind_Unwind_SetIP]}) (Case to_match={[VarSub os]}, pat_word_list=[[{[LIT_CHARS linux] [LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS match]} {[LIT_CHARS _ReadSLEB]}) (Com {[LIT_CHARS match]} {[LIT_CHARS _ReadULEB]}) ) ) ) ) (FunctionDef check_empty [] (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -n]} {[DQ [VarSub symtab]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -e]} {[DQ [LIT_CHARS " ERROR: Extraneous symbols:"][\ LIT_ESCAPED_CHAR "\\n"][VarSub symtab]]}) (= scope= flags=0 words=[] bindings=[('num_errors', {[ComSub (Com {[LIT_CHARS expr]} {[VarSub num_errors]} {[LIT_OTHER "+"]} {[LIT_CHARS 1]})]})]) ) ) ) (If (Com {[LIT_OTHER "["]} {[VarSub plat]} {[LIT_OTHER "="]} {[VarSub build_plat]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS fetch_symtab]} {[VarSub LIBUNWIND]}) (Com {[LIT_CHARS filter_misc]}) (Com {[LIT_CHARS check_local_unw_abi]}) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS xno]} {[LIT_OTHER "="]} {[LIT_CHARS xyes]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS check_cxx_abi]}) ) (Com {[LIT_CHARS check_empty]}) ) ) (Com {[LIT_CHARS fetch_symtab]} {[VarSub LIBUNWIND_GENERIC]}) (Com {[LIT_CHARS filter_misc]}) (Com {[LIT_CHARS check_generic_unw_abi]}) (Com {[LIT_CHARS check_empty]}) (If (Com {[LIT_OTHER "["]} {[VarSub num_errors]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "FAILURE: Detected "][VarSub num_errors][LIT_CHARS " errors"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (If (Com {[VarSub verbose]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " SUCCESS: all checks passed"]]}) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]}) )