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 (the "License"). 6# You may not use this file except in compliance with the License. 7# 8# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9# or http://www.opensolaris.org/os/licensing. 10# See the License for the specific language governing permissions 11# and limitations under the License. 12# 13# When distributing Covered Code, include this CDDL HEADER in each 14# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15# If applicable, add the following below this CDDL HEADER, with the 16# fields enclosed by brackets "[]" replaced with your own identifying 17# information: Portions Copyright [yyyy] [name of copyright owner] 18# 19# CDDL HEADER END 20# 21 22# 23# Copyright 2006 Sun Microsystems, Inc. All rights reserved. 24# Use is subject to license terms. 25# 26# ident "%Z%%M% %I% %E% SMI" 27# 28# Generic interface definition for usr/src/cmd/sgs/liblddbg. 29# 30# For information regarding the establishment of versioned definitions see: 31# The Linker and Libraries Manual (version 2.5 or greater) 32# This is part of the Developers Guide in the Answerbook. Specifically refer 33# to Chapter 2 under section "Defining Additional Symbols" through section 34# "Reducing Symbol Scope", and Chapter 5 "Versioning". 35# 36# For specific OSNET rules for the modification (evolution) of these version 37# definitions see: 38# Policy for Shared Library Version Names and Interface Definitions 39 40 41SUNWprivate_4.53 { 42 global: 43 dbg_desc = NODIRECT; # interposed - ld.so.1(1) 44 dbg_print = NODIRECT; # interposed - ld(1) and ld.so.1(1) 45 46 Dbg_args_files; 47 Dbg_args_flags; 48 Dbg_audit_interface; 49 Dbg_audit_lib; 50 Dbg_audit_object; 51 Dbg_audit_symval; 52 Dbg_audit_version; 53 54 Dbg_setup; 55 56 Dbg32_bind_global; 57 Dbg64_bind_global; 58 Dbg32_bind_plt_summary; 59 Dbg64_bind_plt_summary; 60 Dbg64_bind_pltpad_from; 61 Dbg64_bind_pltpad_to; 62 Dbg32_bind_weak; 63 Dbg64_bind_weak; 64 65 Dbg32_cap_hw_candidate; 66 Dbg64_cap_hw_candidate; 67 Dbg32_cap_hw_filter; 68 Dbg64_cap_hw_filter; 69 Dbg32_cap_mapfile; 70 Dbg64_cap_mapfile; 71 Dbg32_cap_sec_entry; 72 Dbg64_cap_sec_entry; 73 Dbg32_cap_sec_title; 74 Dbg64_cap_sec_title; 75 Dbg32_cap_val_hw1; 76 Dbg64_cap_val_hw1; 77 78 Dbg32_demangle_name; 79 Dbg64_demangle_name; 80 81 Dbg32_ent_print; 82 Dbg64_ent_print; 83 84 Dbg32_file_analyze; 85 Dbg64_file_analyze; 86 Dbg32_file_aout; 87 Dbg64_file_aout; 88 Dbg32_file_ar; 89 Dbg64_file_ar; 90 Dbg32_file_ar_rescan; 91 Dbg64_file_ar_rescan; 92 Dbg32_file_bind_entry; 93 Dbg64_file_bind_entry; 94 Dbg32_file_bindings; 95 Dbg64_file_bindings; 96 Dbg32_file_cntl; 97 Dbg64_file_cntl; 98 Dbg32_file_config_dis; 99 Dbg64_file_config_dis; 100 Dbg32_file_config_obj; 101 Dbg64_file_config_obj; 102 Dbg32_file_del_rescan; 103 Dbg64_file_del_rescan; 104 Dbg32_file_delete; 105 Dbg64_file_delete; 106 Dbg32_file_dlclose; 107 Dbg64_file_dlclose; 108 Dbg32_file_dldump; 109 Dbg64_file_dldump; 110 Dbg32_file_dlopen; 111 Dbg64_file_dlopen; 112 Dbg32_file_elf; 113 Dbg64_file_elf; 114 Dbg32_file_filtee; 115 Dbg64_file_filtee; 116 Dbg32_file_filter; 117 Dbg64_file_filter; 118 Dbg32_file_fixname; 119 Dbg64_file_fixname; 120 Dbg32_file_generic; 121 Dbg64_file_generic; 122 Dbg32_file_hdl_action; 123 Dbg64_file_hdl_action; 124 Dbg32_file_hdl_collect; 125 Dbg64_file_hdl_collect; 126 Dbg32_file_hdl_title; 127 Dbg64_file_hdl_title; 128 Dbg32_file_lazyload; 129 Dbg64_file_lazyload; 130 Dbg32_file_ldso; 131 Dbg64_file_ldso; 132 Dbg32_file_mode_promote; 133 Dbg64_file_mode_promote; 134 Dbg32_file_needed; 135 Dbg64_file_needed; 136 Dbg32_file_output; 137 Dbg64_file_output; 138 Dbg32_file_preload; 139 Dbg64_file_preload; 140 Dbg32_file_prot; 141 Dbg64_file_prot; 142 Dbg32_file_rejected; 143 Dbg64_file_rejected; 144 Dbg32_file_reuse; 145 Dbg64_file_reuse; 146 Dbg32_file_skip; 147 Dbg64_file_skip; 148 149 Dbg32_got_display; 150 Dbg64_got_display; 151 152 Dbg32_libs_audit; 153 Dbg64_libs_audit; 154 Dbg32_libs_find; 155 Dbg64_libs_find; 156 Dbg32_libs_found; 157 Dbg64_libs_found; 158 Dbg32_libs_ignore; 159 Dbg64_libs_ignore; 160 Dbg32_libs_init; 161 Dbg64_libs_init; 162 Dbg32_libs_l; 163 Dbg64_libs_l; 164 Dbg32_libs_path; 165 Dbg64_libs_path; 166 Dbg32_libs_req; 167 Dbg64_libs_req; 168 Dbg32_libs_update; 169 Dbg64_libs_update; 170 Dbg32_libs_yp; 171 Dbg64_libs_yp; 172 Dbg32_libs_ylu; 173 Dbg64_libs_ylu; 174 175 Dbg32_map_dash; 176 Dbg64_map_dash; 177 Dbg32_map_ent; 178 Dbg64_map_ent; 179 Dbg32_map_parse; 180 Dbg64_map_parse; 181 Dbg32_map_pipe; 182 Dbg64_map_pipe; 183 Dbg32_map_set_atsign; 184 Dbg64_map_set_atsign; 185 Dbg32_map_seg; 186 Dbg64_map_seg; 187 Dbg32_map_set_equal; 188 Dbg64_map_set_equal; 189 Dbg32_map_size_new; 190 Dbg64_map_size_new; 191 Dbg32_map_size_old; 192 Dbg64_map_size_old; 193 Dbg32_map_sort_fini; 194 Dbg64_map_sort_fini; 195 Dbg32_map_sort_orig; 196 Dbg64_map_sort_orig; 197 Dbg32_map_symbol; 198 Dbg64_map_symbol; 199 Dbg32_map_version; 200 Dbg64_map_version; 201 202 Dbg32_move_adjexpandreloc; 203 Dbg64_move_adjexpandreloc; 204 Dbg32_move_adjmovereloc; 205 Dbg64_move_adjmovereloc; 206 Dbg32_move_data; 207 Dbg64_move_data; 208 Dbg32_move_entry1; 209 Dbg64_move_entry1; 210 Dbg32_move_entry2; 211 Dbg64_move_entry2; 212 Dbg32_move_expand; 213 Dbg64_move_expand; 214 Dbg32_move_input; 215 Dbg64_move_input; 216 Dbg32_move_outmove; 217 Dbg64_move_outmove; 218 Dbg32_move_outsctadj; 219 Dbg64_move_outsctadj; 220 Dbg32_move_parexpn; 221 Dbg64_move_parexpn; 222 223 Dbg32_reloc_apply_reg; 224 Dbg64_reloc_apply_reg; 225 Dbg32_reloc_apply_val; 226 Dbg64_reloc_apply_val; 227 Dbg32_reloc_ars_entry; 228 Dbg64_reloc_ars_entry; 229 Dbg32_reloc_copy; 230 Dbg64_reloc_copy; 231 Dbg32_reloc_discard; 232 Dbg64_reloc_discard; 233 Dbg32_reloc_doact; 234 Dbg64_reloc_doact; 235 Dbg32_reloc_doact_title; 236 Dbg64_reloc_doact_title; 237 Dbg32_reloc_dooutrel; 238 Dbg64_reloc_dooutrel; 239 Dbg32_reloc_entry; 240 Dbg64_reloc_entry; 241 Dbg32_reloc_error; 242 Dbg64_reloc_error; 243 Dbg32_reloc_generate; 244 Dbg64_reloc_generate; 245 Dbg32_reloc_in; 246 Dbg64_reloc_in; 247 Dbg32_reloc_ors_entry; 248 Dbg64_reloc_ors_entry; 249 Dbg32_reloc_out; 250 Dbg64_reloc_out; 251 Dbg32_reloc_proc; 252 Dbg64_reloc_proc; 253 Dbg32_reloc_run; 254 Dbg64_reloc_run; 255 Dbg32_reloc_sloppycomdat; 256 Dbg64_reloc_sloppycomdat; 257 Dbg32_reloc_transition; 258 Dbg64_reloc_transition; 259 260 Dbg32_sec_added; 261 Dbg64_sec_added; 262 Dbg32_sec_created; 263 Dbg64_sec_created; 264 Dbg32_sec_discarded; 265 Dbg64_sec_discarded; 266 Dbg32_sec_group; 267 Dbg64_sec_group; 268 Dbg32_sec_in; 269 Dbg64_sec_in; 270 Dbg32_sec_order_error; 271 Dbg64_sec_order_error; 272 Dbg32_sec_order_list; 273 Dbg64_sec_order_list; 274 Dbg32_sec_strtab; 275 Dbg64_sec_strtab; 276 277 Dbg32_seg_entry; 278 Dbg64_seg_entry; 279 Dbg32_seg_list; 280 Dbg64_seg_list; 281 Dbg32_seg_os; 282 Dbg64_seg_os; 283 Dbg32_seg_title; 284 Dbg64_seg_title; 285 286 Dbg32_shdr_modified; 287 Dbg64_shdr_modified; 288 289 Dbg32_statistics_ar; 290 Dbg64_statistics_ar; 291 Dbg32_statistics_ld; 292 Dbg64_statistics_ld; 293 294 Dbg32_support_action; 295 Dbg64_support_action; 296 Dbg32_support_load; 297 Dbg64_support_load; 298 Dbg32_support_req; 299 Dbg64_support_req; 300 301 Dbg32_syminfo_entry; 302 Dbg64_syminfo_entry; 303 Dbg32_syminfo_title; 304 Dbg64_syminfo_title; 305 306 Dbg32_syms_ar_checking; 307 Dbg64_syms_ar_checking; 308 Dbg32_syms_ar_entry; 309 Dbg64_syms_ar_entry; 310 Dbg32_syms_ar_resolve; 311 Dbg64_syms_ar_resolve; 312 Dbg32_syms_ar_title; 313 Dbg64_syms_ar_title; 314 Dbg32_syms_created; 315 Dbg64_syms_created; 316 Dbg32_syms_discarded; 317 Dbg64_syms_discarded; 318 Dbg32_syms_dlsym; 319 Dbg64_syms_dlsym; 320 Dbg32_syms_entered; 321 Dbg64_syms_entered; 322 Dbg32_syms_entry; 323 Dbg64_syms_entry; 324 Dbg32_syms_global; 325 Dbg64_syms_global; 326 Dbg32_syms_ignore; 327 Dbg64_syms_ignore; 328 Dbg32_syms_lazy_rescan; 329 Dbg64_syms_lazy_rescan; 330 Dbg32_syms_lookup; 331 Dbg64_syms_lookup; 332 Dbg32_syms_lookup_aout; 333 Dbg32_syms_new; 334 Dbg64_syms_new; 335 Dbg32_syms_old; 336 Dbg64_syms_old; 337 Dbg32_syms_process; 338 Dbg64_syms_process; 339 Dbg32_syms_reduce; 340 Dbg64_syms_reduce; 341 Dbg32_syms_reloc; 342 Dbg64_syms_reloc; 343 Dbg32_syms_resolved; 344 Dbg64_syms_resolved; 345 Dbg32_syms_resolving; 346 Dbg64_syms_resolving; 347 Dbg32_syms_sec_entry; 348 Dbg64_syms_sec_entry; 349 Dbg32_syms_sec_title; 350 Dbg64_syms_sec_title; 351 Dbg32_syms_spec_title; 352 Dbg64_syms_spec_title; 353 Dbg32_syms_updated; 354 Dbg64_syms_updated; 355 Dbg32_syms_up_title; 356 Dbg64_syms_up_title; 357 358 Dbg_tls_modactivity; 359 Dbg_tls_static_block; 360 Dbg_tls_static_resv; 361 362 Dbg32_util_broadcast; 363 Dbg64_util_broadcast; 364 Dbg32_util_call_array; 365 Dbg64_util_call_array; 366 Dbg32_util_call_fini; 367 Dbg64_util_call_fini; 368 Dbg32_util_call_init; 369 Dbg64_util_call_init; 370 Dbg32_util_call_main; 371 Dbg64_util_call_main; 372 Dbg32_util_collect; 373 Dbg64_util_collect; 374 Dbg32_util_dbnotify; 375 Dbg64_util_dbnotify; 376 Dbg32_util_edge_in; 377 Dbg64_util_edge_in; 378 Dbg32_util_edge_out; 379 Dbg64_util_edge_out; 380 Dbg32_util_lcinterface; 381 Dbg64_util_lcinterface; 382 Dbg32_util_intoolate; 383 Dbg64_util_intoolate; 384 Dbg32_util_nl; 385 Dbg64_util_nl; 386 Dbg32_util_no_init; 387 Dbg64_util_no_init; 388 Dbg32_util_scc_entry; 389 Dbg64_util_scc_entry; 390 Dbg32_util_scc_title; 391 Dbg64_util_scc_title; 392 Dbg32_util_str; 393 Dbg64_util_str; 394 Dbg32_util_wait; 395 Dbg64_util_wait; 396 397 Dbg32_unused_file; 398 Dbg64_unused_file; 399 Dbg32_unused_lcinterface; 400 Dbg64_unused_lcinterface; 401 Dbg32_unused_sec; 402 Dbg64_unused_sec; 403 Dbg32_unused_unref; 404 Dbg64_unused_unref; 405 406 Dbg32_ver_avail_entry; 407 Dbg64_ver_avail_entry; 408 Dbg32_ver_avail_title; 409 Dbg64_ver_avail_title; 410 Dbg32_ver_def_title; 411 Dbg64_ver_def_title; 412 Dbg32_ver_desc_entry; 413 Dbg64_ver_desc_entry; 414 Dbg32_ver_need_entry; 415 Dbg64_ver_need_entry; 416 Dbg32_ver_need_title; 417 Dbg64_ver_need_title; 418 Dbg32_ver_nointerface; 419 Dbg64_ver_nointerface; 420 Dbg32_ver_symbol; 421 Dbg64_ver_symbol; 422 423} SUNWprivate_3.20; 424 425 426# The following interfaces are used by various parts of the link-editors and 427# the elfdump(1). The link-editors are always packaged together but there 428# seems to be a variety of old elfdump's lying around. elfdump only uses 429# this interface, and thus by separating in from the ever changing Dbg_* 430# interfaces we can provide a stable verioning environment for this utility. 431 432SUNWprivate_3.20 { 433 global: 434 Elf_syminfo_entry; 435 Elf_syminfo_title; 436 437 Elf32_cap_entry; 438 Elf64_cap_entry; 439 Elf32_cap_title; 440 Elf64_cap_title; 441 442 Elf32_demangle_name; 443 Elf64_demangle_name; 444 Elf32_dyn_entry; 445 Elf64_dyn_entry; 446 Elf32_dyn_title; 447 Elf64_dyn_title; 448 449 Elf32_ehdr; 450 Elf64_ehdr; 451 452 Elf32_got_entry; 453 Elf64_got_entry; 454 Elf32_got_title; 455 Elf64_got_title; 456 457 Elf32_phdr; 458 Elf64_phdr; 459 460 Elf32_reloc_apply_reg; 461 Elf64_reloc_apply_reg; 462 Elf32_reloc_apply_val; 463 Elf64_reloc_apply_val; 464 Elf32_reloc_entry_1; 465 Elf64_reloc_entry_1; 466 Elf32_reloc_entry_2; 467 Elf64_reloc_entry_2; 468 Elf32_reloc_title; 469 Elf64_reloc_title; 470 471 Elf32_shdr; 472 Elf64_shdr; 473 474 Elf32_syms_table_title; 475 Elf64_syms_table_title; 476 Elf32_syms_table_entry; 477 Elf64_syms_table_entry; 478 479 Elf32_ver_def_title; 480 Elf64_ver_def_title; 481 Elf32_ver_line_1; 482 Elf64_ver_line_1; 483 Elf32_ver_line_2; 484 Elf64_ver_line_2; 485 Elf32_ver_line_3; 486 Elf64_ver_line_3; 487 Elf32_ver_line_4; 488 Elf64_ver_line_4; 489 Elf32_ver_line_5; 490 Elf64_ver_line_5; 491 Elf32_ver_need_title; 492 Elf64_ver_need_title; 493 494 local: 495 *; 496}; 497 498# The following functions must be provided by our caller, or one of the callers 499# dependencies. When used with ld.so.1 all functions are provided from ld.so.1, 500# but when used with ld, many of the functions fall back to libc. Presently we 501# don't build liblddbg with a libc dependency simply to avoid having to load it 502# with ld.so.1 which already offers the required interfaces (from libc_pic.a). 503# Distinguishing between `parent' and `extern' symbols offers a small 504# performance advantage with direct bindings, but this is mainly a test of what 505# we're capable of doing, rather than an admission that its really worth it :-). 506 507{ 508 _dgettext = FUNCTION extern; 509 _close = FUNCTION extern; 510 _open = FUNCTION extern; 511 _write = FUNCTION extern; 512 dlopen = FUNCTION extern; 513 dlsym = FUNCTION extern; 514 free = FUNCTION parent; 515 malloc = FUNCTION parent; 516 memcpy = FUNCTION extern; 517 qsort = FUNCTION extern; 518 snprintf = FUNCTION extern; 519 sprintf = FUNCTION extern; 520 strcat = FUNCTION extern; 521 strcmp = FUNCTION extern; 522 strcpy = FUNCTION extern; 523 strlen = FUNCTION extern; 524 strrchr = FUNCTION extern; 525 strtok_r = FUNCTION extern; 526}; 527