summaryrefslogtreecommitdiff
path: root/src/third_party/unwind/dist/tests/check-namespace.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/unwind/dist/tests/check-namespace.sh.in')
-rw-r--r--src/third_party/unwind/dist/tests/check-namespace.sh.in382
1 files changed, 382 insertions, 0 deletions
diff --git a/src/third_party/unwind/dist/tests/check-namespace.sh.in b/src/third_party/unwind/dist/tests/check-namespace.sh.in
new file mode 100644
index 00000000000..5ed94fd2a26
--- /dev/null
+++ b/src/third_party/unwind/dist/tests/check-namespace.sh.in
@@ -0,0 +1,382 @@
+#!/bin/sh
+verbose=false
+if [ "$1" = "-v" ]; then
+ verbose=true
+ shift
+fi
+
+build_plat=@build_arch@
+plat=@arch@
+os=@target_os@
+num_errors=0
+
+LIBUNWIND=../src/.libs/libunwind.so
+LIBUNWIND_GENERIC=../src/.libs/libunwind-${plat}.so
+
+fetch_symtab () {
+ filename=$1
+
+ if [ ! -r $filename ]; then
+ return
+ fi
+
+ if $verbose; then
+ echo "Checking $filename..."
+ fi
+
+ #
+ # Unfortunately, "nm --defined" is a GNU-extension. For portability,
+ # build the list of defined symbols by hand.
+ #
+ symtab=`nm -g $filename`
+ saved_IFS="$IFS"
+ IFS=""
+ undef=`nm -g -u $filename`
+ for line in $undef; do
+ symtab=`echo "$symtab" | grep -v "^${line}"\$`
+ done;
+ IFS="$saved_IFS"
+}
+
+ignore () {
+ sym=$1
+ symtab=`echo "$symtab" | grep -v " ${sym}\$"`
+}
+
+match () {
+ sym=$1
+ if `echo "$symtab" | grep -q " ${sym}\$"`; then
+ symtab=`echo "$symtab" | grep -v " ${sym}\$"`
+ else
+ echo " ERROR: Symbol \"$sym\" missing."
+ num_errors=`expr $num_errors + 1`
+ fi
+}
+
+#
+# Filter out miscellaneous symbols that get defined by the
+# linker for each shared object.
+#
+filter_misc () {
+ ignore _DYNAMIC
+ ignore _GLOBAL_OFFSET_TABLE_
+ ignore __bss_start
+ ignore _edata
+ ignore _end
+ ignore _Uelf32_get_proc_name
+ ignore _Uelf32_valid_object
+ ignore _Uelf64_get_proc_name
+ ignore _Uelf64_valid_object
+ ignore _U.*debug_level
+ ignore ICRT.INTERNAL # ICC 8.x defines this
+
+ # Ignore symbols generated by the ARM Linux default linker script.
+ # For details see the binutils sources (src/ld/emulparams/armelf_linux.sh).
+ if [ ${plat} = "arm" ]; then
+ ignore __bss_start__
+ ignore __bss_end__
+ ignore __end__
+ ignore _bss_end__
+ fi
+
+ if [ ${plat} = "mips" ]; then
+ ignore _fbss
+ ignore _fdata
+ ignore _ftext
+ ignore _gp
+ fi
+}
+
+check_local_unw_abi () {
+ match _UL${plat}_apply_reg_state
+ match _UL${plat}_reg_states_iterate
+ match _UL${plat}_create_addr_space
+ match _UL${plat}_destroy_addr_space
+ match _UL${plat}_get_fpreg
+ match _UL${plat}_get_proc_info
+ match _UL${plat}_get_proc_info_by_ip
+ match _UL${plat}_get_proc_name
+ match _UL${plat}_get_reg
+ match _UL${plat}_get_save_loc
+ match _UL${plat}_init_local
+ match _UL${plat}_init_local2
+ match _UL${plat}_init_remote
+ match _UL${plat}_is_signal_frame
+ match _UL${plat}_local_addr_space
+ match _UL${plat}_resume
+ match _UL${plat}_set_caching_policy
+ match _UL${plat}_set_cache_size
+ match _UL${plat}_set_reg
+ match _UL${plat}_set_fpreg
+ match _UL${plat}_step
+
+ match _U${plat}_flush_cache
+ match _U${plat}_get_accessors
+ match _U${plat}_getcontext
+ match _U${plat}_regname
+ match _U${plat}_strerror
+
+ match _U_dyn_cancel
+ match _U_dyn_info_list_addr
+ match _U_dyn_register
+
+ match unw_backtrace
+ match backtrace
+
+ case ${plat} in
+ arm)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _UL${plat}_search_unwind_table
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ ;;
+ hppa)
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_setcontext
+ ;;
+ ia64)
+ match _UL${plat}_search_unwind_table
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ ;;
+ x86)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ ;;
+ x86_64)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ match _U${plat}_setcontext
+ ;;
+ ppc*)
+ match _U${plat}_get_func_addr
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ ;;
+ tilegx)
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ match _UL${plat}_local_addr_space_init
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match ${plat}_lock
+ ;;
+ s390x)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ match _U${plat}_setcontext
+ ;;
+
+ *)
+ match _U${plat}_is_fpreg
+ match _UL${plat}_dwarf_search_unwind_table
+ match _UL${plat}_dwarf_find_unwind_table
+ ;;
+ esac
+
+ if [ x@enable_debug_frame@ = xyes ]; then
+ match _UL${plat}_dwarf_find_debug_frame
+ fi
+
+}
+
+check_generic_unw_abi () {
+ match _U${plat}_apply_reg_state
+ match _U${plat}_reg_states_iterate
+ match _U${plat}_create_addr_space
+ match _U${plat}_destroy_addr_space
+ match _U${plat}_flush_cache
+ match _U${plat}_get_accessors
+ match _U${plat}_get_fpreg
+ match _U${plat}_get_proc_info
+ match _U${plat}_get_proc_info_by_ip
+ match _U${plat}_get_proc_name
+ match _U${plat}_get_reg
+ match _U${plat}_get_save_loc
+ match _U${plat}_init_local
+ match _U${plat}_init_local2
+ match _U${plat}_init_remote
+ match _U${plat}_is_signal_frame
+ match _U${plat}_local_addr_space
+ match _U${plat}_regname
+ match _U${plat}_resume
+ match _U${plat}_set_caching_policy
+ match _U${plat}_set_cache_size
+ match _U${plat}_set_fpreg
+ match _U${plat}_set_reg
+ match _U${plat}_step
+ match _U${plat}_strerror
+
+ case ${plat} in
+ arm)
+ match _U${plat}_is_fpreg
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_search_unwind_table
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ hppa)
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ ;;
+ ia64)
+ match _U${plat}_search_unwind_table
+ match _U${plat}_find_dyn_list
+ if [ $plat = $build_plat ]; then
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ case $os in
+ linux*)
+ match _U${plat}_get_kernel_table
+ ;;
+ esac
+ fi
+ ;;
+ x86)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ x86_64)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ ppc*)
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_get_func_addr
+ match _U${plat}_is_fpreg
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ tilegx)
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_is_fpreg
+ match _U${plat}_local_addr_space_init
+ match ${plat}_lock
+ ;;
+ s390x)
+ match _U${plat}_is_fpreg
+ match _U${plat}_get_elf_image
+ match _U${plat}_get_exe_image_path
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ *)
+ match _U${plat}_is_fpreg
+ match _U${plat}_dwarf_search_unwind_table
+ match _U${plat}_dwarf_find_unwind_table
+ ;;
+ esac
+
+ if [ x@enable_debug_frame@ = xyes ]; then
+ match _U${plat}_dwarf_find_debug_frame
+ fi
+}
+
+check_cxx_abi () {
+ match _Unwind_Backtrace
+ match _Unwind_DeleteException
+ match _Unwind_FindEnclosingFunction
+ match _Unwind_ForcedUnwind
+ match _Unwind_GetBSP
+ match _Unwind_GetCFA
+ match _Unwind_GetDataRelBase
+ match _Unwind_GetGR
+ match _Unwind_GetIP
+ match _Unwind_GetIPInfo
+ match _Unwind_GetLanguageSpecificData
+ match _Unwind_GetRegionStart
+ match _Unwind_GetTextRelBase
+ match _Unwind_RaiseException
+ match _Unwind_Resume
+ match _Unwind_Resume_or_Rethrow
+ match _Unwind_SetGR
+ match _Unwind_SetIP
+ match __libunwind_Unwind_Backtrace
+ match __libunwind_Unwind_DeleteException
+ match __libunwind_Unwind_FindEnclosingFunction
+ match __libunwind_Unwind_ForcedUnwind
+ match __libunwind_Unwind_GetBSP
+ match __libunwind_Unwind_GetCFA
+ match __libunwind_Unwind_GetDataRelBase
+ match __libunwind_Unwind_GetGR
+ match __libunwind_Unwind_GetIP
+ match __libunwind_Unwind_GetIPInfo
+ match __libunwind_Unwind_GetLanguageSpecificData
+ match __libunwind_Unwind_GetRegionStart
+ match __libunwind_Unwind_GetTextRelBase
+ match __libunwind_Unwind_RaiseException
+ match __libunwind_Unwind_Resume
+ match __libunwind_Unwind_Resume_or_Rethrow
+ match __libunwind_Unwind_SetGR
+ match __libunwind_Unwind_SetIP
+ case $os in
+ linux*)
+ # needed only for Intel 8.0 bug-compatibility
+ match _ReadSLEB
+ match _ReadULEB
+ ;;
+ esac
+}
+
+check_empty () {
+ if [ -n "$symtab" ]; then
+ printf " ERROR: Extraneous symbols:\n$symtab\n"
+ num_errors=`expr $num_errors + 1`
+ fi
+}
+
+if [ $plat = $build_plat ]; then
+ fetch_symtab $LIBUNWIND
+ filter_misc
+ check_local_unw_abi
+ if [ x@enable_cxx_exceptions@ = xyes ]; then
+ check_cxx_abi
+ fi
+ check_empty
+fi
+
+fetch_symtab $LIBUNWIND_GENERIC
+filter_misc
+check_generic_unw_abi
+check_empty
+
+if [ $num_errors -gt 0 ]; then
+ echo "FAILURE: Detected $num_errors errors"
+ exit 1
+fi
+
+if $verbose; then
+ echo " SUCCESS: all checks passed"
+fi
+exit 0