1# 2# CDDL HEADER START 3# 4# The contents of this file are subject to the terms of the 5# Common Development and Distribution License, Version 1.0 only 6# (the "License"). You may not use this file except in compliance 7# with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22 23# 24# Copyright 2005 Sun Microsystems, Inc. All rights reserved. 25# Use is subject to license terms. 26# 27# ident "%Z%%M% %I% %E% SMI" 28# 29# Generic interface definition for usr/src/cmd/sgs/liblddbg. 30# 31# For information regarding the establishment of versioned definitions see: 32# The Linker and Libraries Manual (version 2.5 or greater) 33# This is part of the Developers Guide in the Answerbook. Specifically refer 34# to Chapter 2 under section "Defining Additional Symbols" through section 35# "Reducing Symbol Scope", and Chapter 5 "Versioning". 36# 37# For specific OSNET rules for the modification (evolution) of these version 38# definitions see: 39# Policy for Shared Library Version Names and Interface Definitions 40 41 42SUNWprivate_4.47 { 43 global: 44 Dbg_args_files; 45 Dbg_args_flags; 46 Dbg_audit_interface; 47 Dbg_audit_lib; 48 Dbg_audit_object; 49 Dbg_audit_symval; 50 Dbg_audit_version; 51 Dbg_bind_global; 52 Dbg_bind_profile; 53 Dbg_bind_weak; 54 Dbg_bind_plt_summary; 55 Dbg_cap_hw_candidate; 56 Dbg_cap_hw_filter; 57 Dbg_cap_hw_1; 58 Dbg_cap_hw_164; 59 Dbg_cap_mapfile; 60 Dbg_cap_mapfile64; 61 Dbg_cap_sec_entry; 62 Dbg_cap_sec_entry64; 63 Dbg_cap_sec_title; 64 Dbg_ent_print; 65 Dbg_file_analyze; 66 Dbg_file_aout; 67 Dbg_file_archive; 68 Dbg_file_ar_rescan; 69 Dbg_file_bind_entry; 70 Dbg_file_bindings; 71 Dbg_file_cntl; 72 Dbg_file_config_dis; 73 Dbg_file_config_obj; 74 Dbg_file_delete; 75 Dbg_file_dlclose; 76 Dbg_file_dldump; 77 Dbg_file_dlopen; 78 Dbg_file_elf; 79 Dbg_file_filtee; 80 Dbg_file_filter; 81 Dbg_file_fixname; 82 Dbg_file_generic; 83 Dbg_file_hdl_action; 84 Dbg_file_hdl_collect; 85 Dbg_file_hdl_title; 86 Dbg_file_lazyload; 87 Dbg_file_ldso; 88 Dbg_file_mode_promote; 89 Dbg_file_needed; 90 Dbg_file_nl; 91 Dbg_file_output; 92 Dbg_file_preload; 93 Dbg_file_prot; 94 Dbg_file_rejected; 95 Dbg_file_del_rescan; 96 Dbg_file_reuse; 97 Dbg_file_skip; 98 Dbg_got_display; 99 Dbg_libs_audit; 100 Dbg_libs_ignore; 101 Dbg_libs_init; 102 Dbg_libs_l; 103 Dbg_libs_path; 104 Dbg_libs_req; 105 Dbg_libs_update; 106 Dbg_libs_yp; 107 Dbg_libs_ylu; 108 Dbg_libs_find; 109 Dbg_libs_found; 110 Dbg_map_atsign; 111 Dbg_map_dash; 112 Dbg_map_ent; 113 Dbg_map_equal; 114 Dbg_map_parse; 115 Dbg_map_pipe; 116 Dbg_map_seg; 117 Dbg_map_size_new; 118 Dbg_map_size_old; 119 Dbg_map_sort_fini; 120 Dbg_map_sort_orig; 121 Dbg_map_symbol; 122 Dbg_map_version; 123 Dbg_move_adjexpandreloc; 124 Dbg_move_adjmovereloc; 125 Dbg_move_data; 126 Dbg_move_expanding; 127 Dbg_move_input1; 128 Dbg_move_outsctadj; 129 Dbg_move_outsctadj64; 130 Dbg_move_outmove; 131 Dbg_move_mventry; 132 Dbg_move_mventry64; 133 Dbg_move_mventry2; 134 Dbg_move_mventry264; 135 Dbg_move_parexpn; 136 Dbg_reloc_apply; 137 Dbg_reloc_ars_entry; 138 Dbg_reloc_copy; 139 Dbg_reloc_discard; 140 Dbg_reloc_doact; 141 Dbg_reloc_doactiverel; 142 Dbg_reloc_dooutrel; 143 Dbg_reloc_error; 144 Dbg_reloc_generate; 145 Dbg_reloc_in; 146 Dbg_reloc_ors_entry; 147 Dbg_reloc_out; 148 Dbg_reloc_proc; 149 Dbg_reloc_reg_apply; 150 Dbg_reloc_run; 151 Dbg_reloc_transition; 152 Dbg_sec_added; 153 Dbg_sec_created; 154 Dbg_sec_discarded; 155 Dbg_sec_group; 156 Dbg_sec_in; 157 Dbg_sec_order_list; 158 Dbg_sec_order_error; 159 Dbg_sec_strtab; 160 Dbg_seg_entry; 161 Dbg_seg_list; 162 Dbg_seg_os; 163 Dbg_seg_title; 164 Dbg_setup; 165 Dbg_statistics_ar; 166 Dbg_statistics_ld; 167 Dbg_syms_ar_checking; 168 Dbg_syms_ar_entry; 169 Dbg_syms_ar_resolve; 170 Dbg_syms_ar_title; 171 Dbg_syms_created; 172 Dbg_syms_discarded; 173 Dbg_syms_entered; 174 Dbg_syms_entry; 175 Dbg_syms_global; 176 Dbg_syms_ignore; 177 Dbg_syms_lazy_rescan; 178 Dbg_syms_new; 179 Dbg_syms_nl; 180 Dbg_syms_old; 181 Dbg_syms_process; 182 Dbg_syms_reduce; 183 Dbg_syms_reloc; 184 Dbg_syms_resolved; 185 Dbg_syms_resolving1; 186 Dbg_syms_resolving2; 187 Dbg_syms_sec_entry; 188 Dbg_syms_sec_title; 189 Dbg_syms_spec_title; 190 Dbg_syms_up_title; 191 Dbg_syms_updated; 192 Dbg_syms_dlsym; 193 Dbg_syms_lookup_aout; 194 Dbg_syms_lookup; 195 Dbg_syminfo_entry; 196 Dbg_syminfo_title; 197 Dbg_support_action; 198 Dbg_support_load; 199 Dbg_support_req; 200 Dbg_tls_modactivity; 201 Dbg_tls_static_block; 202 Dbg_unused_file; 203 Dbg_unused_rtldinfo; 204 Dbg_unused_sec; 205 Dbg_unused_unref; 206 Dbg_util_broadcast; 207 Dbg_util_call_array; 208 Dbg_util_call_fini; 209 Dbg_util_call_init; 210 Dbg_util_call_main; 211 Dbg_util_collect; 212 Dbg_util_dbnotify; 213 Dbg_util_edge_in; 214 Dbg_util_edge_out; 215 Dbg_util_intoolate; 216 Dbg_util_nl; 217 Dbg_util_no_init; 218 Dbg_util_scc_entry; 219 Dbg_util_scc_title; 220 Dbg_util_str; 221 Dbg_util_wait; 222 Dbg_ver_avail_entry; 223 Dbg_ver_avail_entry64; 224 Dbg_ver_avail_title; 225 Dbg_ver_def_title; 226 Dbg_ver_desc_entry; 227 Dbg_ver_desc_entry64; 228 Dbg_ver_need_title; 229 Dbg_ver_need_entry; 230 Dbg_ver_nointerface; 231 Dbg_ver_symbol; 232 Dbg_audit_interface64; 233 Dbg_audit_lib64; 234 Dbg_audit_object64; 235 Dbg_audit_symval64; 236 Dbg_audit_version64; 237 Dbg_file_analyze64; 238 Dbg_file_aout64; 239 Dbg_file_archive64; 240 Dbg_file_bind_entry64; 241 Dbg_file_bindings64; 242 Dbg_file_config_dis64; 243 Dbg_file_config_obj64; 244 Dbg_file_delete64; 245 Dbg_file_dlclose64; 246 Dbg_file_dldump64; 247 Dbg_file_dlopen64; 248 Dbg_file_elf64; 249 Dbg_file_filtee64; 250 Dbg_file_filter64; 251 Dbg_file_fixname64; 252 Dbg_file_generic64; 253 Dbg_file_hdl_action64; 254 Dbg_file_hdl_collect64; 255 Dbg_file_hdl_title64; 256 Dbg_file_lazyload64; 257 Dbg_file_ldso64; 258 Dbg_file_needed64; 259 Dbg_file_nl64; 260 Dbg_file_output64; 261 Dbg_file_preload64; 262 Dbg_file_prot64; 263 Dbg_file_reuse64; 264 Dbg_file_skip64; 265 Dbg_got_display64; 266 Dbg_map_atsign64; 267 Dbg_map_dash64; 268 Dbg_map_ent64; 269 Dbg_map_equal64; 270 Dbg_map_parse64; 271 Dbg_map_pipe64; 272 Dbg_map_seg64; 273 Dbg_map_size_new64; 274 Dbg_map_size_old64; 275 Dbg_map_sort_fini64; 276 Dbg_map_sort_orig64; 277 Dbg_map_symbol64; 278 Dbg_map_version64; 279 Dbg_pltpad_bindto64; 280 Dbg_pltpad_boundto64; 281 Dbg_reloc_ars_entry64; 282 Dbg_reloc_discard64; 283 Dbg_reloc_doact64; 284 Dbg_reloc_dooutrel64; 285 Dbg_reloc_error64; 286 Dbg_reloc_generate64; 287 Dbg_reloc_in64; 288 Dbg_reloc_ors_entry64; 289 Dbg_reloc_out64; 290 Dbg_reloc_proc64; 291 Dbg_reloc_reg_apply64; 292 Dbg_reloc_transition64; 293 Dbg_sec_added64; 294 Dbg_sec_created64; 295 Dbg_sec_discarded64; 296 Dbg_sec_group64; 297 Dbg_sec_in64; 298 Dbg_sec_order_list64; 299 Dbg_sec_order_error64; 300 Dbg_sec_strtab64; 301 Dbg_seg_entry64; 302 Dbg_seg_list64; 303 Dbg_seg_os64; 304 Dbg_seg_title64; 305 Dbg_statistics_ar64; 306 Dbg_statistics_ld64; 307 Dbg_syminfo_entry64; 308 Dbg_syminfo_title64; 309 Dbg_syms_ar_entry64; 310 Dbg_syms_ar_resolve64; 311 Dbg_syms_ar_checking64; 312 Dbg_syms_created64; 313 Dbg_syms_discarded64; 314 Dbg_syms_entered64; 315 Dbg_syms_entry64; 316 Dbg_syms_global64; 317 Dbg_syms_ignore64; 318 Dbg_syms_new64; 319 Dbg_syms_nl64; 320 Dbg_syms_old64; 321 Dbg_syms_process64; 322 Dbg_syms_reduce64; 323 Dbg_syms_reloc64; 324 Dbg_syms_resolved64; 325 Dbg_syms_resolving164; 326 Dbg_syms_resolving264; 327 Dbg_syms_sec_entry64; 328 Dbg_syms_sec_title64; 329 Dbg_syms_spec_title64; 330 Dbg_syms_up_title64; 331 Dbg_syms_updated64; 332 Dbg_syms_dlsym64; 333 Dbg_syms_lookup_aout64; 334 Dbg_syms_lookup64; 335 Dbg_tls_modactivity64; 336 Dbg_tls_static_block64; 337 Dbg_unused_sec64; 338} SUNWprivate_3.10; 339 340 341# The following interfaces are used by various parts of the link-editors and 342# the elfdump(1). The link-editors are always packaged together but there 343# seems to be a variety of old elfdump's lying around. elfdump only uses 344# this interface, and thus by separating in from the ever changing Dbg_* 345# interfaces we can provide a stable verioning environment for this utility. 346 347SUNWprivate_3.10 { 348 global: 349 Dbg_set; 350 Gelf_cap_print; 351 Gelf_cap_title; 352 Gelf_dyn_print; 353 Gelf_dyn_title; 354 Gelf_elf_data_title; 355 Gelf_elf_header; 356 Gelf_got_entry; 357 Gelf_got_title; 358 Gelf_phdr_entry; 359 Gelf_reloc_entry; 360 Gelf_shdr_entry; 361 Gelf_sym_dem; 362 Gelf_sym_table_entry; 363 Gelf_syminfo_entry; 364 Gelf_syminfo_title; 365 Gelf_sym_table_title; 366 Gelf_ver_def_title; 367 Gelf_ver_need_title; 368 Gelf_ver_line_1; 369 Gelf_ver_line_2; 370 Gelf_ver_line_3; 371 372 local: 373 *; 374}; 375 376# The following functions must be provided by our caller, or one of the callers 377# dependencies. When used with ld.so.1 all functions are provided from ld.so.1, 378# but when used with ld, many of the functions fall back to libc. Presently we 379# don't build liblddbg with a libc dependency simply to avoid having to load it 380# with ld.so.1 which already offers the required interfaces (from libc_pic.a). 381# Distinguishing between `parent' and `extern' symbols offers a small 382# performance advantage with direct bindings, but this is mainly a test of what 383# we're capable of doing, rather than an admission that its really worth it :-). 384 385{ 386 dbg_print = FUNCTION parent; 387 free = FUNCTION parent; 388 malloc = FUNCTION parent; 389 390 _dgettext = FUNCTION extern; 391 _close = FUNCTION extern; 392 _open = FUNCTION extern; 393 _write = FUNCTION extern; 394 dlopen = FUNCTION extern; 395 dlsym = FUNCTION extern; 396 memcpy = FUNCTION extern; 397 qsort = FUNCTION extern; 398 snprintf = FUNCTION extern; 399 sprintf = FUNCTION extern; 400 strcat = FUNCTION extern; 401 strcmp = FUNCTION extern; 402 strcpy = FUNCTION extern; 403 strlen = FUNCTION extern; 404 strrchr = FUNCTION extern; 405 strtok_r = FUNCTION extern; 406}; 407