3 if [ "$1" = "-v" ]; then
8 build_plat=@build_arch@
13 LIBUNWIND=../src/.libs/libunwind.so
14 LIBUNWIND_GENERIC=../src/.libs/libunwind-${plat}.so
19 if [ ! -r $filename ]; then
24 echo "Checking $filename..."
28 # Unfortunately, "nm --defined" is a GNU-extension. For portability,
29 # build the list of defined symbols by hand.
31 symtab=`nm -g $filename`
34 undef=`nm -g -u $filename`
35 for line in $undef; do
36 symtab=`echo "$symtab" | grep -v "^${line}"\$`
43 symtab=`echo "$symtab" | grep -v " ${sym}\$"`
48 if `echo "$symtab" | grep -q " ${sym}\$"`; then
49 symtab=`echo "$symtab" | grep -v " ${sym}\$"`
51 echo " ERROR: Symbol \"$sym\" missing."
52 num_errors=`expr $num_errors + 1`
57 # Filter out miscellaneous symbols that get defined by the
58 # linker for each shared object.
62 ignore _GLOBAL_OFFSET_TABLE_
66 ignore _Uelf32_get_proc_name
67 ignore _Uelf32_valid_object
68 ignore _Uelf64_get_proc_name
69 ignore _Uelf64_valid_object
70 ignore _U.*debug_level
71 ignore ICRT.INTERNAL # ICC 8.x defines this
73 # Ignore symbols generated by the ARM Linux default linker script.
74 # For details see the binutils sources (src/ld/emulparams/armelf_linux.sh).
75 if [ ${plat} = "arm" ]; then
82 if [ ${plat} = "mips" ]; then
90 check_local_unw_abi () {
91 match _UL${plat}_create_addr_space
92 match _UL${plat}_destroy_addr_space
93 match _UL${plat}_get_fpreg
94 match _UL${plat}_get_proc_info
95 match _UL${plat}_get_proc_info_by_ip
96 match _UL${plat}_get_proc_name
97 match _UL${plat}_get_reg
98 match _UL${plat}_get_save_loc
99 match _UL${plat}_init_local
100 match _UL${plat}_init_remote
101 match _UL${plat}_is_signal_frame
102 match _UL${plat}_handle_signal_frame
103 match _UL${plat}_local_addr_space
104 match _UL${plat}_resume
105 match _UL${plat}_set_caching_policy
106 match _UL${plat}_set_reg
107 match _UL${plat}_set_fpreg
108 match _UL${plat}_step
110 match _U${plat}_flush_cache
111 match _U${plat}_get_accessors
112 match _U${plat}_getcontext
113 match _U${plat}_regname
114 match _U${plat}_strerror
117 match _U_dyn_info_list_addr
118 match _U_dyn_register
125 match _U${plat}_get_elf_image
126 match _U${plat}_is_fpreg
127 match _UL${plat}_search_unwind_table
128 match _UL${plat}_dwarf_search_unwind_table
129 match _UL${plat}_dwarf_find_unwind_table
132 match _UL${plat}_dwarf_search_unwind_table
133 match _UL${plat}_dwarf_find_unwind_table
134 match _U${plat}_get_elf_image
135 match _U${plat}_setcontext
138 match _UL${plat}_search_unwind_table
139 match _U${plat}_get_elf_image
142 match _U${plat}_get_elf_image
143 match _U${plat}_is_fpreg
144 match _UL${plat}_dwarf_search_unwind_table
145 match _UL${plat}_dwarf_find_unwind_table
148 match _U${plat}_get_elf_image
149 match _U${plat}_is_fpreg
150 match _UL${plat}_dwarf_search_unwind_table
151 match _UL${plat}_dwarf_find_unwind_table
152 match _U${plat}_setcontext
155 match _U${plat}_get_func_addr
156 match _U${plat}_get_elf_image
157 match _U${plat}_is_fpreg
158 match _UL${plat}_dwarf_search_unwind_table
159 match _UL${plat}_dwarf_find_unwind_table
162 match _U${plat}_is_fpreg
163 match _UL${plat}_dwarf_search_unwind_table
164 match _UL${plat}_dwarf_find_unwind_table
168 if [ x@enable_debug_frame@ = xyes ]; then
169 match _UL${plat}_dwarf_find_debug_frame
174 check_generic_unw_abi () {
175 match _U${plat}_create_addr_space
176 match _U${plat}_destroy_addr_space
177 match _U${plat}_flush_cache
178 match _U${plat}_get_accessors
179 match _U${plat}_get_fpreg
180 match _U${plat}_get_proc_info
181 match _U${plat}_get_proc_info_by_ip
182 match _U${plat}_get_proc_name
183 match _U${plat}_get_reg
184 match _U${plat}_get_save_loc
185 match _U${plat}_init_local
186 match _U${plat}_init_remote
187 match _U${plat}_is_signal_frame
188 match _U${plat}_handle_signal_frame
189 match _U${plat}_local_addr_space
190 match _U${plat}_regname
191 match _U${plat}_resume
192 match _U${plat}_set_caching_policy
193 match _U${plat}_set_fpreg
194 match _U${plat}_set_reg
196 match _U${plat}_strerror
200 match _U${plat}_is_fpreg
201 match _U${plat}_get_elf_image
202 match _U${plat}_search_unwind_table
203 match _U${plat}_dwarf_search_unwind_table
204 match _U${plat}_dwarf_find_unwind_table
207 match _U${plat}_dwarf_search_unwind_table
208 match _U${plat}_dwarf_find_unwind_table
209 match _U${plat}_get_elf_image
212 match _U${plat}_search_unwind_table
213 match _U${plat}_find_dyn_list
214 if [ $plat = $build_plat ]; then
215 match _U${plat}_get_elf_image
218 match _U${plat}_get_kernel_table
224 match _U${plat}_get_elf_image
225 match _U${plat}_is_fpreg
226 match _U${plat}_dwarf_search_unwind_table
227 match _U${plat}_dwarf_find_unwind_table
230 match _U${plat}_get_elf_image
231 match _U${plat}_is_fpreg
232 match _U${plat}_dwarf_search_unwind_table
233 match _U${plat}_dwarf_find_unwind_table
236 match _U${plat}_get_elf_image
237 match _U${plat}_get_func_addr
238 match _U${plat}_is_fpreg
239 match _U${plat}_dwarf_search_unwind_table
240 match _U${plat}_dwarf_find_unwind_table
243 match _U${plat}_is_fpreg
244 match _U${plat}_dwarf_search_unwind_table
245 match _U${plat}_dwarf_find_unwind_table
249 if [ x@enable_debug_frame@ = xyes ]; then
250 match _U${plat}_dwarf_find_debug_frame
255 match _Unwind_Backtrace
256 match _Unwind_DeleteException
257 match _Unwind_FindEnclosingFunction
258 match _Unwind_ForcedUnwind
261 match _Unwind_GetDataRelBase
264 match _Unwind_GetIPInfo
265 match _Unwind_GetLanguageSpecificData
266 match _Unwind_GetRegionStart
267 match _Unwind_GetTextRelBase
268 match _Unwind_RaiseException
270 match _Unwind_Resume_or_Rethrow
273 match __libunwind_Unwind_Backtrace
274 match __libunwind_Unwind_DeleteException
275 match __libunwind_Unwind_FindEnclosingFunction
276 match __libunwind_Unwind_ForcedUnwind
277 match __libunwind_Unwind_GetBSP
278 match __libunwind_Unwind_GetCFA
279 match __libunwind_Unwind_GetDataRelBase
280 match __libunwind_Unwind_GetGR
281 match __libunwind_Unwind_GetIP
282 match __libunwind_Unwind_GetIPInfo
283 match __libunwind_Unwind_GetLanguageSpecificData
284 match __libunwind_Unwind_GetRegionStart
285 match __libunwind_Unwind_GetTextRelBase
286 match __libunwind_Unwind_RaiseException
287 match __libunwind_Unwind_Resume
288 match __libunwind_Unwind_Resume_or_Rethrow
289 match __libunwind_Unwind_SetGR
290 match __libunwind_Unwind_SetIP
293 # needed only for Intel 8.0 bug-compatibility
301 if [ -n "$symtab" ]; then
302 printf " ERROR: Extraneous symbols:\n$symtab\n"
303 num_errors=`expr $num_errors + 1`
307 if [ $plat = $build_plat ]; then
308 fetch_symtab $LIBUNWIND
311 if [ x@enable_cxx_exceptions@ = xyes ]; then
317 fetch_symtab $LIBUNWIND_GENERIC
319 check_generic_unw_abi
322 if [ $num_errors -gt 0 ]; then
323 echo "FAILURE: Detected $num_errors errors"
328 echo " SUCCESS: all checks passed"