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