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