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
165 match _UL${plat}_local_addr_space_init
166 match _U${plat}_get_elf_image
171 match _U${plat}_is_fpreg
172 match _UL${plat}_dwarf_search_unwind_table
173 match _UL${plat}_dwarf_find_unwind_table
177 if [ x@enable_debug_frame@ = xyes ]; then
178 match _UL${plat}_dwarf_find_debug_frame
183 check_generic_unw_abi () {
184 match _U${plat}_create_addr_space
185 match _U${plat}_destroy_addr_space
186 match _U${plat}_flush_cache
187 match _U${plat}_get_accessors
188 match _U${plat}_get_fpreg
189 match _U${plat}_get_proc_info
190 match _U${plat}_get_proc_info_by_ip
191 match _U${plat}_get_proc_name
192 match _U${plat}_get_reg
193 match _U${plat}_get_save_loc
194 match _U${plat}_init_local
195 match _U${plat}_init_remote
196 match _U${plat}_is_signal_frame
197 match _U${plat}_handle_signal_frame
198 match _U${plat}_local_addr_space
199 match _U${plat}_regname
200 match _U${plat}_resume
201 match _U${plat}_set_caching_policy
202 match _U${plat}_set_fpreg
203 match _U${plat}_set_reg
205 match _U${plat}_strerror
209 match _U${plat}_is_fpreg
210 match _U${plat}_get_elf_image
211 match _U${plat}_search_unwind_table
212 match _U${plat}_dwarf_search_unwind_table
213 match _U${plat}_dwarf_find_unwind_table
216 match _U${plat}_dwarf_search_unwind_table
217 match _U${plat}_dwarf_find_unwind_table
218 match _U${plat}_get_elf_image
221 match _U${plat}_search_unwind_table
222 match _U${plat}_find_dyn_list
223 if [ $plat = $build_plat ]; then
224 match _U${plat}_get_elf_image
227 match _U${plat}_get_kernel_table
233 match _U${plat}_get_elf_image
234 match _U${plat}_is_fpreg
235 match _U${plat}_dwarf_search_unwind_table
236 match _U${plat}_dwarf_find_unwind_table
239 match _U${plat}_get_elf_image
240 match _U${plat}_is_fpreg
241 match _U${plat}_dwarf_search_unwind_table
242 match _U${plat}_dwarf_find_unwind_table
245 match _U${plat}_get_elf_image
246 match _U${plat}_get_func_addr
247 match _U${plat}_is_fpreg
248 match _U${plat}_dwarf_search_unwind_table
249 match _U${plat}_dwarf_find_unwind_table
252 match _U${plat}_dwarf_search_unwind_table
253 match _U${plat}_dwarf_find_unwind_table
254 match _U${plat}_get_elf_image
255 match _U${plat}_is_fpreg
256 match _U${plat}_local_addr_space_init
260 match _U${plat}_is_fpreg
261 match _U${plat}_dwarf_search_unwind_table
262 match _U${plat}_dwarf_find_unwind_table
266 if [ x@enable_debug_frame@ = xyes ]; then
267 match _U${plat}_dwarf_find_debug_frame
272 match _Unwind_Backtrace
273 match _Unwind_DeleteException
274 match _Unwind_FindEnclosingFunction
275 match _Unwind_ForcedUnwind
278 match _Unwind_GetDataRelBase
281 match _Unwind_GetIPInfo
282 match _Unwind_GetLanguageSpecificData
283 match _Unwind_GetRegionStart
284 match _Unwind_GetTextRelBase
285 match _Unwind_RaiseException
287 match _Unwind_Resume_or_Rethrow
290 match __libunwind_Unwind_Backtrace
291 match __libunwind_Unwind_DeleteException
292 match __libunwind_Unwind_FindEnclosingFunction
293 match __libunwind_Unwind_ForcedUnwind
294 match __libunwind_Unwind_GetBSP
295 match __libunwind_Unwind_GetCFA
296 match __libunwind_Unwind_GetDataRelBase
297 match __libunwind_Unwind_GetGR
298 match __libunwind_Unwind_GetIP
299 match __libunwind_Unwind_GetIPInfo
300 match __libunwind_Unwind_GetLanguageSpecificData
301 match __libunwind_Unwind_GetRegionStart
302 match __libunwind_Unwind_GetTextRelBase
303 match __libunwind_Unwind_RaiseException
304 match __libunwind_Unwind_Resume
305 match __libunwind_Unwind_Resume_or_Rethrow
306 match __libunwind_Unwind_SetGR
307 match __libunwind_Unwind_SetIP
310 # needed only for Intel 8.0 bug-compatibility
318 if [ -n "$symtab" ]; then
319 printf " ERROR: Extraneous symbols:\n$symtab\n"
320 num_errors=`expr $num_errors + 1`
324 if [ $plat = $build_plat ]; then
325 fetch_symtab $LIBUNWIND
328 if [ x@enable_cxx_exceptions@ = xyes ]; then
334 fetch_symtab $LIBUNWIND_GENERIC
336 check_generic_unw_abi
339 if [ $num_errors -gt 0 ]; then
340 echo "FAILURE: Detected $num_errors errors"
345 echo " SUCCESS: all checks passed"