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