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