13640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm#!/bin/sh
23640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmverbose=false
33640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmif [ "$1" = "-v" ]; then
43640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    verbose=true
53640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    shift
63640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfi
73640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
83640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmbuild_plat=@build_arch@
93640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmplat=@arch@
103640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmos=@target_os@
113640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmnum_errors=0
123640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
133640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmLIBUNWIND=../src/.libs/libunwind.so
143640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmLIBUNWIND_GENERIC=../src/.libs/libunwind-${plat}.so
153640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
166f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreirafetch_symtab () {
173640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    filename=$1
183640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
193640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    if [ ! -r $filename ]; then
203640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	return
213640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    fi
223640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
233640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    if $verbose; then
243640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	echo "Checking $filename..."
253640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    fi
263640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
273640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    #
283640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    # Unfortunately, "nm --defined" is a GNU-extension.  For portability,
293640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    # build the list of defined symbols by hand.
303640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    #
313640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    symtab=`nm -g $filename`
323640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    saved_IFS="$IFS"
333640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    IFS=""
343640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    undef=`nm -g -u $filename`
353640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    for line in $undef; do
363640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	symtab=`echo "$symtab" | grep -v "^${line}"\$`
373640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    done;
383640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    IFS="$saved_IFS"
393640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
403640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
416f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiraignore () {
423640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    sym=$1
433640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    symtab=`echo "$symtab" | grep -v " ${sym}\$"`
443640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
453640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
466f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiramatch () {
473640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    sym=$1
483640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    if `echo "$symtab" | grep -q " ${sym}\$"`; then
493640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	symtab=`echo "$symtab" | grep -v " ${sym}\$"`
503640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    else
513640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	echo "  ERROR: Symbol \"$sym\" missing."
523640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	num_errors=`expr $num_errors + 1`
533640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    fi
543640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
553640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
563640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm#
573640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm# Filter out miscellaneous symbols that get defined by the
583640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm# linker for each shared object.
593640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm#
606f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreirafilter_misc () {
613640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _DYNAMIC
623640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _GLOBAL_OFFSET_TABLE_
633640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore __bss_start
643640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _edata
653640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _end
663640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _Uelf32_get_proc_name
673640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _Uelf32_valid_object
683640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _Uelf64_get_proc_name
693640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _Uelf64_valid_object
703640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore _U.*debug_level
713640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    ignore ICRT.INTERNAL	# ICC 8.x defines this
729a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner
739a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner    # Ignore symbols generated by the ARM Linux default linker script.
749a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner    # For details see the binutils sources (src/ld/emulparams/armelf_linux.sh).
759a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner    if [ ${plat} = "arm" ]; then
769a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	ignore __bss_start__
779a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	ignore __bss_end__
789a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	ignore __end__
799a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	ignore _bss_end__
809a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner    fi
816f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala
826f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala    if [ ${plat} = "mips" ]; then
836f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala	ignore _fbss
846f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala	ignore _fdata
856f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala	ignore _ftext
866f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala	ignore _gp
876f374ccb5a3da0af7c6f39ef9ea06eacfe8542c6Tommi Rantala    fi
883640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
893640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
906f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiracheck_local_unw_abi () {
913640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_create_addr_space
923640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_destroy_addr_space
933640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_fpreg
943640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_proc_info
953640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_proc_info_by_ip
963640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_proc_name
973640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_reg
983640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_get_save_loc
993640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_init_local
1003640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_init_remote
1013640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_is_signal_frame
1028e53e62db913470952b8eb541834b876f7a6882cArun Sharma    match _UL${plat}_handle_signal_frame
1033640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_local_addr_space
1043640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_resume
1053640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_set_caching_policy
1063640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_set_reg
1073640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_set_fpreg
1083640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _UL${plat}_step
1093640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
1103640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_flush_cache
1113640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_accessors
1123640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_getcontext
1133640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_regname
114511d5428287c0be5796f4c3a65c570ae0cb7e7f0bea.com!thallgre    match _U${plat}_strerror
1153640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
1163640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U_dyn_cancel
1173640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U_dyn_info_list_addr
1183640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U_dyn_register
1193640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
12050bc12afba900c478d5d760966ef5b6f32229c99Lassi Tuura    match unw_backtrace
1213640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match backtrace
1223640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
1233640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    case ${plat} in
1249a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	arm)
1259a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_get_elf_image
1269a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_is_fpreg
1279a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _UL${plat}_search_unwind_table
1289a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _UL${plat}_dwarf_search_unwind_table
1297e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _UL${plat}_dwarf_find_unwind_table
1309a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    ;;
131b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	hppa)
132b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _UL${plat}_dwarf_search_unwind_table
1337e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _UL${plat}_dwarf_find_unwind_table
134b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_get_elf_image
135b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_setcontext
136b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    ;;
1373640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	ia64)
1383640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _UL${plat}_search_unwind_table
1393640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _U${plat}_get_elf_image
1403640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    ;;
141d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	x86)
142d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_get_elf_image
143d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_is_fpreg
144d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _UL${plat}_dwarf_search_unwind_table
1457e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _UL${plat}_dwarf_find_unwind_table
146d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    ;;
147b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	x86_64)
148b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_get_elf_image
149b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_is_fpreg
150b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _UL${plat}_dwarf_search_unwind_table
1517e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _UL${plat}_dwarf_find_unwind_table
152ef29eade44fc2aa7e49811a8bd76e941b369b914Arun Sharma	    match _U${plat}_setcontext
153b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    ;;
154a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	ppc*)
155a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_get_func_addr
156a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_get_elf_image
157a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_is_fpreg
158a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _UL${plat}_dwarf_search_unwind_table
159a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _UL${plat}_dwarf_find_unwind_table
160a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    ;;
1613640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	*)
162d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_is_fpreg
1633640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _UL${plat}_dwarf_search_unwind_table
1647e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _UL${plat}_dwarf_find_unwind_table
1653640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    ;;
1663640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    esac
167546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma
168546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma    if [ x@enable_debug_frame@ = xyes ]; then
169546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma	match _UL${plat}_dwarf_find_debug_frame
170546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma    fi
171546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma
1723640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
1733640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
1746f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiracheck_generic_unw_abi () {
1753640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_create_addr_space
1763640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_destroy_addr_space
1773640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_flush_cache
1783640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_accessors
1793640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_fpreg
1803640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_proc_info
1813640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_proc_info_by_ip
1823640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_proc_name
1833640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_reg
1843640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_get_save_loc
1853640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_init_local
1863640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_init_remote
1873640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_is_signal_frame
1888e53e62db913470952b8eb541834b876f7a6882cArun Sharma    match _U${plat}_handle_signal_frame
1893640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_local_addr_space
1903640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_regname
1913640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_resume
1923640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_set_caching_policy
1933640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_set_fpreg
1943640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_set_reg
1953640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _U${plat}_step
196511d5428287c0be5796f4c3a65c570ae0cb7e7f0bea.com!thallgre    match _U${plat}_strerror
1973640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
1983640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    case ${plat} in
1999a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	arm)
2009a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_is_fpreg
2019a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_get_elf_image
2029a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_search_unwind_table
2039a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    match _U${plat}_dwarf_search_unwind_table
2047e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _U${plat}_dwarf_find_unwind_table
2059a311bf48b08dcf18c09f289c3b7bf2382282e61Ken Werner	    ;;
206b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	hppa)
207b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_dwarf_search_unwind_table
2087e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _U${plat}_dwarf_find_unwind_table
209b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_get_elf_image
210b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    ;;
2113640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	ia64)
2123640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _U${plat}_search_unwind_table
2133640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _U${plat}_find_dyn_list
21472a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm	    if [ $plat = $build_plat ]; then
21572a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm		match _U${plat}_get_elf_image
21672a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm		case $os in
21772a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm		    linux*)
21872a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm			match _U${plat}_get_kernel_table
21972a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm			;;
22072a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm		esac
22172a03113c88e9bd365d3283ffd97f6972c9edcabhp.com!davidm	    fi
2223640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    ;;
223d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	x86)
224d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_get_elf_image
225d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_is_fpreg
226d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    match _U${plat}_dwarf_search_unwind_table
2277e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _U${plat}_dwarf_find_unwind_table
228b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    ;;
229b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	x86_64)
230b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_get_elf_image
231b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_is_fpreg
232b09eae12032b0f47c14f63a1e35f6d48d3a41a9chp.com!davidm	    match _U${plat}_dwarf_search_unwind_table
2337e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _U${plat}_dwarf_find_unwind_table
234d7f8bd62d4dc0bfd3b43df9248e60d0549f98e7bhp.com!davidm	    ;;
235a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	ppc*)
236a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_get_elf_image
237a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_get_func_addr
238a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_is_fpreg
239a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_dwarf_search_unwind_table
240a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    match _U${plat}_dwarf_find_unwind_table
241a63c209fed74b161b36b80340aa0f1b9f5114e16Tommi Rantala	    ;;
2423640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	*)
2433640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _U${plat}_is_fpreg
2443640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _U${plat}_dwarf_search_unwind_table
2457e5d2791f9218e5d00c1ce52c6ebe8474bf476c3Arun Sharma	    match _U${plat}_dwarf_find_unwind_table
2463640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    ;;
2473640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    esac
248546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma
249546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma    if [ x@enable_debug_frame@ = xyes ]; then
250546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma	match _U${plat}_dwarf_find_debug_frame
251546463d1e78d52197ff2c204f793c343abb97dc5Arun Sharma    fi
2523640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
2533640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
2546f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiracheck_cxx_abi () {
2553640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_Backtrace
2563640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_DeleteException
2573640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_FindEnclosingFunction
2583640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_ForcedUnwind
2593640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetBSP
2603640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetCFA
2613640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetDataRelBase
2623640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetGR
2633640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetIP
2642fce54102cdb03aa2d3105c750685dc7cf2677b1Arun Sharma    match _Unwind_GetIPInfo
2653640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetLanguageSpecificData
2663640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetRegionStart
2673640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_GetTextRelBase
2683640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_RaiseException
2693640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_Resume
2703640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_Resume_or_Rethrow
2713640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_SetGR
2723640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    match _Unwind_SetIP
273efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_Backtrace
274efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_DeleteException
275efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_FindEnclosingFunction
276efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_ForcedUnwind
277efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetBSP
278efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetCFA
279efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetDataRelBase
280efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetGR
281efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetIP
2822fce54102cdb03aa2d3105c750685dc7cf2677b1Arun Sharma    match __libunwind_Unwind_GetIPInfo
283efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetLanguageSpecificData
284efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetRegionStart
285efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_GetTextRelBase
286efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_RaiseException
287efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_Resume
288efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_Resume_or_Rethrow
289efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_SetGR
290efa755a556f760e8a208bfd7a26c1e4063a64bd2homeip.net!davidm    match __libunwind_Unwind_SetIP
2913640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    case $os in
2923640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	linux*)
2933640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    # needed only for Intel 8.0 bug-compatibility
2943640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _ReadSLEB
2953640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    match _ReadULEB
2963640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	    ;;
2973640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    esac
2983640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
2993640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
3006f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreiracheck_empty () {
3013640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    if [ -n "$symtab" ]; then
30256f07a8e550dab4734524e3f03ac98c9fbd52fc6Tommi Rantala	printf "  ERROR: Extraneous symbols:\n$symtab\n"
3033640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm	num_errors=`expr $num_errors + 1`
3043640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    fi
3053640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm}
3063640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
3073640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmif [ $plat = $build_plat ]; then
3083640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    fetch_symtab $LIBUNWIND
3093640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    filter_misc
3103640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    check_local_unw_abi
3111227c41d20be7e31ce8b5284b27d1d75009cd3ebArun Sharma    if [ x@enable_cxx_exceptions@ = xyes ]; then
31283cef8b8f51eb46b23f6e72493d070c95a544919Arun Sharma      check_cxx_abi
31383cef8b8f51eb46b23f6e72493d070c95a544919Arun Sharma    fi
3143640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    check_empty
3153640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfi
3163640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
3173640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfetch_symtab $LIBUNWIND_GENERIC
3183640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfilter_misc
3193640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmcheck_generic_unw_abi
3203640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmcheck_empty
3213640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
3223640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmif [ $num_errors -gt 0 ]; then
3233640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    echo "FAILURE: Detected $num_errors errors"
3246f282a00f55d0bc11f131da5d3591a1a4030a9f9Bruna Moreira    exit 1
3253640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfi
3263640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm
3273640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmif $verbose; then
3283640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidm    echo "  SUCCESS: all checks passed"
3293640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmfi
3303640bb40a264ce250153f5463e2ad24b16e94205mostang.com!davidmexit 0
331