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.46 { 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_bindings; 69 Dbg_file_cntl; 70 Dbg_file_config_dis; 71 Dbg_file_config_obj; 72 Dbg_file_delete; 73 Dbg_file_dlclose; 74 Dbg_file_dldump; 75 Dbg_file_dlopen; 76 Dbg_file_elf; 77 Dbg_file_filtee; 78 Dbg_file_filter; 79 Dbg_file_fixname; 80 Dbg_file_generic; 81 Dbg_file_hdl_action; 82 Dbg_file_hdl_collect; 83 Dbg_file_hdl_title; 84 Dbg_file_lazyload; 85 Dbg_file_ldso; 86 Dbg_file_mode_promote; 87 Dbg_file_needed; 88 Dbg_file_nl; 89 Dbg_file_output; 90 Dbg_file_preload; 91 Dbg_file_prot; 92 Dbg_file_rejected; 93 Dbg_file_del_rescan; 94 Dbg_file_reuse; 95 Dbg_file_skip; 96 Dbg_got_display; 97 Dbg_libs_audit; 98 Dbg_libs_ignore; 99 Dbg_libs_init; 100 Dbg_libs_l; 101 Dbg_libs_path; 102 Dbg_libs_req; 103 Dbg_libs_update; 104 Dbg_libs_yp; 105 Dbg_libs_ylu; 106 Dbg_libs_find; 107 Dbg_libs_found; 108 Dbg_map_atsign; 109 Dbg_map_dash; 110 Dbg_map_ent; 111 Dbg_map_equal; 112 Dbg_map_parse; 113 Dbg_map_pipe; 114 Dbg_map_seg; 115 Dbg_map_size_new; 116 Dbg_map_size_old; 117 Dbg_map_sort_fini; 118 Dbg_map_sort_orig; 119 Dbg_map_symbol; 120 Dbg_map_version; 121 Dbg_move_adjexpandreloc; 122 Dbg_move_adjmovereloc; 123 Dbg_move_data; 124 Dbg_move_expanding; 125 Dbg_move_input1; 126 Dbg_move_outsctadj; 127 Dbg_move_outsctadj64; 128 Dbg_move_outmove; 129 Dbg_move_mventry; 130 Dbg_move_mventry64; 131 Dbg_move_mventry2; 132 Dbg_move_mventry264; 133 Dbg_move_parexpn; 134 Dbg_reloc_apply; 135 Dbg_reloc_ars_entry; 136 Dbg_reloc_copy; 137 Dbg_reloc_discard; 138 Dbg_reloc_doact; 139 Dbg_reloc_doactiverel; 140 Dbg_reloc_dooutrel; 141 Dbg_reloc_error; 142 Dbg_reloc_generate; 143 Dbg_reloc_in; 144 Dbg_reloc_ors_entry; 145 Dbg_reloc_out; 146 Dbg_reloc_proc; 147 Dbg_reloc_reg_apply; 148 Dbg_reloc_run; 149 Dbg_reloc_transition; 150 Dbg_sec_added; 151 Dbg_sec_created; 152 Dbg_sec_discarded; 153 Dbg_sec_group; 154 Dbg_sec_in; 155 Dbg_sec_order_list; 156 Dbg_sec_order_error; 157 Dbg_sec_strtab; 158 Dbg_seg_entry; 159 Dbg_seg_list; 160 Dbg_seg_os; 161 Dbg_seg_title; 162 Dbg_setup; 163 Dbg_statistics_ar; 164 Dbg_statistics_ld; 165 Dbg_syms_ar_checking; 166 Dbg_syms_ar_entry; 167 Dbg_syms_ar_resolve; 168 Dbg_syms_ar_title; 169 Dbg_syms_created; 170 Dbg_syms_discarded; 171 Dbg_syms_entered; 172 Dbg_syms_entry; 173 Dbg_syms_global; 174 Dbg_syms_ignore; 175 Dbg_syms_lazy_rescan; 176 Dbg_syms_new; 177 Dbg_syms_nl; 178 Dbg_syms_old; 179 Dbg_syms_process; 180 Dbg_syms_reduce; 181 Dbg_syms_reloc; 182 Dbg_syms_resolved; 183 Dbg_syms_resolving1; 184 Dbg_syms_resolving2; 185 Dbg_syms_sec_entry; 186 Dbg_syms_sec_title; 187 Dbg_syms_spec_title; 188 Dbg_syms_up_title; 189 Dbg_syms_updated; 190 Dbg_syms_dlsym; 191 Dbg_syms_lookup_aout; 192 Dbg_syms_lookup; 193 Dbg_syminfo_entry; 194 Dbg_syminfo_title; 195 Dbg_support_action; 196 Dbg_support_load; 197 Dbg_support_req; 198 Dbg_tls_modactivity; 199 Dbg_tls_static_block; 200 Dbg_unused_file; 201 Dbg_unused_rtldinfo; 202 Dbg_unused_sec; 203 Dbg_unused_unref; 204 Dbg_util_broadcast; 205 Dbg_util_call_array; 206 Dbg_util_call_fini; 207 Dbg_util_call_init; 208 Dbg_util_call_main; 209 Dbg_util_collect; 210 Dbg_util_dbnotify; 211 Dbg_util_edge_in; 212 Dbg_util_edge_out; 213 Dbg_util_intoolate; 214 Dbg_util_nl; 215 Dbg_util_no_init; 216 Dbg_util_scc_entry; 217 Dbg_util_scc_title; 218 Dbg_util_str; 219 Dbg_util_wait; 220 Dbg_ver_avail_entry; 221 Dbg_ver_avail_entry64; 222 Dbg_ver_avail_title; 223 Dbg_ver_def_title; 224 Dbg_ver_desc_entry; 225 Dbg_ver_desc_entry64; 226 Dbg_ver_need_title; 227 Dbg_ver_need_entry; 228 Dbg_ver_nointerface; 229 Dbg_ver_symbol; 230 Dbg_audit_interface64; 231 Dbg_audit_lib64; 232 Dbg_audit_object64; 233 Dbg_audit_symval64; 234 Dbg_audit_version64; 235 Dbg_file_analyze64; 236 Dbg_file_aout64; 237 Dbg_file_archive64; 238 Dbg_file_bind_entry64; 239 Dbg_file_bindings64; 240 Dbg_file_config_dis64; 241 Dbg_file_config_obj64; 242 Dbg_file_delete64; 243 Dbg_file_dlclose64; 244 Dbg_file_dldump64; 245 Dbg_file_dlopen64; 246 Dbg_file_elf64; 247 Dbg_file_filtee64; 248 Dbg_file_filter64; 249 Dbg_file_fixname64; 250 Dbg_file_generic64; 251 Dbg_file_hdl_action64; 252 Dbg_file_hdl_collect64; 253 Dbg_file_hdl_title64; 254 Dbg_file_lazyload64; 255 Dbg_file_ldso64; 256 Dbg_file_needed64; 257 Dbg_file_nl64; 258 Dbg_file_output64; 259 Dbg_file_preload64; 260 Dbg_file_prot64; 261 Dbg_file_reuse64; 262 Dbg_file_skip64; 263 Dbg_got_display64; 264 Dbg_map_atsign64; 265 Dbg_map_dash64; 266 Dbg_map_ent64; 267 Dbg_map_equal64; 268 Dbg_map_parse64; 269 Dbg_map_pipe64; 270 Dbg_map_seg64; 271 Dbg_map_size_new64; 272 Dbg_map_size_old64; 273 Dbg_map_sort_fini64; 274 Dbg_map_sort_orig64; 275 Dbg_map_symbol64; 276 Dbg_map_version64; 277 Dbg_pltpad_bindto64; 278 Dbg_pltpad_boundto64; 279 Dbg_reloc_ars_entry64; 280 Dbg_reloc_discard64; 281 Dbg_reloc_doact64; 282 Dbg_reloc_dooutrel64; 283 Dbg_reloc_error64; 284 Dbg_reloc_generate64; 285 Dbg_reloc_in64; 286 Dbg_reloc_ors_entry64; 287 Dbg_reloc_out64; 288 Dbg_reloc_proc64; 289 Dbg_reloc_reg_apply64; 290 Dbg_reloc_transition64; 291 Dbg_sec_added64; 292 Dbg_sec_created64; 293 Dbg_sec_discarded64; 294 Dbg_sec_group64; 295 Dbg_sec_in64; 296 Dbg_sec_order_list64; 297 Dbg_sec_order_error64; 298 Dbg_sec_strtab64; 299 Dbg_seg_entry64; 300 Dbg_seg_list64; 301 Dbg_seg_os64; 302 Dbg_seg_title64; 303 Dbg_statistics_ar64; 304 Dbg_statistics_ld64; 305 Dbg_syminfo_entry64; 306 Dbg_syminfo_title64; 307 Dbg_syms_ar_entry64; 308 Dbg_syms_ar_resolve64; 309 Dbg_syms_ar_checking64; 310 Dbg_syms_created64; 311 Dbg_syms_discarded64; 312 Dbg_syms_entered64; 313 Dbg_syms_entry64; 314 Dbg_syms_global64; 315 Dbg_syms_ignore64; 316 Dbg_syms_new64; 317 Dbg_syms_nl64; 318 Dbg_syms_old64; 319 Dbg_syms_process64; 320 Dbg_syms_reduce64; 321 Dbg_syms_reloc64; 322 Dbg_syms_resolved64; 323 Dbg_syms_resolving164; 324 Dbg_syms_resolving264; 325 Dbg_syms_sec_entry64; 326 Dbg_syms_sec_title64; 327 Dbg_syms_spec_title64; 328 Dbg_syms_up_title64; 329 Dbg_syms_updated64; 330 Dbg_syms_dlsym64; 331 Dbg_syms_lookup_aout64; 332 Dbg_syms_lookup64; 333 Dbg_tls_modactivity64; 334 Dbg_tls_static_block64; 335 Dbg_unused_sec64; 336} SUNWprivate_3.10; 337 338 339# The following interfaces are used by various parts of the link-editors and 340# the elfdump(1). The link-editors are always packaged together but there 341# seems to be a variety of old elfdump's lying around. elfdump only uses 342# this interface, and thus by separating in from the ever changing Dbg_* 343# interfaces we can provide a stable verioning environment for this utility. 344 345SUNWprivate_3.10 { 346 global: 347 Dbg_set; 348 Gelf_cap_print; 349 Gelf_cap_title; 350 Gelf_dyn_print; 351 Gelf_dyn_title; 352 Gelf_elf_data_title; 353 Gelf_elf_header; 354 Gelf_got_entry; 355 Gelf_got_title; 356 Gelf_phdr_entry; 357 Gelf_reloc_entry; 358 Gelf_shdr_entry; 359 Gelf_sym_dem; 360 Gelf_sym_table_entry; 361 Gelf_syminfo_entry; 362 Gelf_syminfo_title; 363 Gelf_sym_table_title; 364 Gelf_ver_def_title; 365 Gelf_ver_need_title; 366 Gelf_ver_line_1; 367 Gelf_ver_line_2; 368 Gelf_ver_line_3; 369 370 local: 371 *; 372}; 373 374# The following functions must be provided by our caller, or one of the callers 375# dependencies. When used with ld.so.1 all functions are provided from ld.so.1, 376# but when used with ld, many of the functions fall back to libc. Presently we 377# don't build liblddbg with a libc dependency simply to avoid having to load it 378# with ld.so.1 which already offers the required interfaces (from libc_pic.a). 379# Distinguishing between `parent' and `extern' symbols offers a small 380# performance advantage with direct bindings, but this is mainly a test of what 381# we're capable of doing, rather than an admission that its really worth it :-). 382 383{ 384 dbg_print = FUNCTION parent; 385 free = FUNCTION parent; 386 malloc = FUNCTION parent; 387 388 _dgettext = FUNCTION extern; 389 _close = FUNCTION extern; 390 _open = FUNCTION extern; 391 _write = FUNCTION extern; 392 dlopen = FUNCTION extern; 393 dlsym = FUNCTION extern; 394 memcpy = FUNCTION extern; 395 qsort = FUNCTION extern; 396 snprintf = FUNCTION extern; 397 sprintf = FUNCTION extern; 398 strcat = FUNCTION extern; 399 strcmp = FUNCTION extern; 400 strcpy = FUNCTION extern; 401 strlen = FUNCTION extern; 402 strrchr = FUNCTION extern; 403 strtok_r = FUNCTION extern; 404}; 405