usr/src/uts/common/sys/link.h
author Rod Evans <Rod.Evans@Sun.COM>
Wed, 19 May 2010 22:33:49 -0700
changeset 12449 a87750d92895
parent 11827 d7ef53deac3f
child 12736 2d732c7bdbde
permissions -rw-r--r--
6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW PSARC/2010/175 Deferred symbol references 6943432 dlsym(RTLD_PROBE) should only bind to symbol definitions 6668759 an external method for determining whether an ELF dependency is optional
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     1
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     2
 * CDDL HEADER START
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     3
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     4
 * The contents of this file are subject to the terms of the
1682
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
     5
 * Common Development and Distribution License (the "License").
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
     6
 * You may not use this file except in compliance with the License.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     7
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     8
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
     9
 * or http://www.opensolaris.org/os/licensing.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    10
 * See the License for the specific language governing permissions
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    11
 * and limitations under the License.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    12
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    13
 * When distributing Covered Code, include this CDDL HEADER in each
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    14
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    15
 * If applicable, add the following below this CDDL HEADER, with the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    16
 * fields enclosed by brackets "[]" replaced with your own identifying
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    17
 * information: Portions Copyright [yyyy] [name of copyright owner]
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    18
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    19
 * CDDL HEADER END
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    20
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    21
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    22
/*
1682
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
    23
 *	Copyright (c) 1988 AT&T
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
    24
 *	  All Rights Reserved
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
    25
 *
12449
a87750d92895 6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW
Rod Evans <Rod.Evans@Sun.COM>
parents: 11827
diff changeset
    26
 * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    27
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    28
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    29
#ifndef _SYS_LINK_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    30
#define	_SYS_LINK_H
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    31
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    32
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    33
#include <sys/types.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    34
#include <sys/elftypes.h>
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    35
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    36
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    37
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    38
extern "C" {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    39
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    40
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    41
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    42
 * Communication structures for the runtime linker.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    43
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    44
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    45
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    46
 * The following data structure provides a self-identifying union consisting
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    47
 * of a tag from a known list and a value.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    48
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    49
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    50
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    51
	Elf32_Sword d_tag;		/* how to interpret value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    52
	union {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    53
		Elf32_Word	d_val;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    54
		Elf32_Addr	d_ptr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    55
		Elf32_Off	d_off;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    56
	} d_un;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    57
} Elf32_Dyn;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    58
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    59
#if defined(_LP64) || defined(_LONGLONG_TYPE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    60
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    61
	Elf64_Xword d_tag;		/* how to interpret value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    62
	union {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    63
		Elf64_Xword	d_val;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    64
		Elf64_Addr	d_ptr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    65
	} d_un;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    66
} Elf64_Dyn;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    67
#endif	/* defined(_LP64) || defined(_LONGLONG_TYPE) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    68
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    69
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    70
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    71
 * Tag values
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    72
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    73
#define	DT_NULL		0	/* last entry in list */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    74
#define	DT_NEEDED	1	/* a needed object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    75
#define	DT_PLTRELSZ	2	/* size of relocations for the PLT */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    76
#define	DT_PLTGOT	3	/* addresses used by procedure linkage table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    77
#define	DT_HASH		4	/* hash table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    78
#define	DT_STRTAB	5	/* string table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    79
#define	DT_SYMTAB	6	/* symbol table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    80
#define	DT_RELA		7	/* addr of relocation entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    81
#define	DT_RELASZ	8	/* size of relocation table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    82
#define	DT_RELAENT	9	/* base size of relocation entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    83
#define	DT_STRSZ	10	/* size of string table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    84
#define	DT_SYMENT	11	/* size of symbol table entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    85
#define	DT_INIT		12	/* _init addr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    86
#define	DT_FINI		13	/* _fini addr */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    87
#define	DT_SONAME	14	/* name of this shared object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    88
#define	DT_RPATH	15	/* run-time search path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    89
#define	DT_SYMBOLIC	16	/* shared object linked -Bsymbolic */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    90
#define	DT_REL		17	/* addr of relocation entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    91
#define	DT_RELSZ	18	/* size of relocation table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    92
#define	DT_RELENT	19	/* base size of relocation entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    93
#define	DT_PLTREL	20	/* relocation type for PLT entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    94
#define	DT_DEBUG	21	/* pointer to r_debug structure */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    95
#define	DT_TEXTREL	22	/* text relocations remain for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    96
#define	DT_JMPREL	23	/* pointer to the PLT relocation entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    97
#define	DT_BIND_NOW	24	/* perform all relocations at load of object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    98
#define	DT_INIT_ARRAY	25	/* pointer to .initarray */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
    99
#define	DT_FINI_ARRAY	26	/* pointer to .finiarray */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   100
#define	DT_INIT_ARRAYSZ	27	/* size of .initarray */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   101
#define	DT_FINI_ARRAYSZ	28	/* size of .finiarray */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   102
#define	DT_RUNPATH	29	/* run-time search path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   103
#define	DT_FLAGS	30	/* state flags - see DF_* */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   104
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   105
/*
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   106
 * DT_* encoding rules: The value of each dynamic tag determines the
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   107
 * interpretation of the d_un union. This convention provides for simpler
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   108
 * interpretation of dynamic tags by external tools. A tag whose value
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   109
 * is an even number indicates a dynamic section entry that uses d_ptr.
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   110
 * A tag whose value is an odd number indicates a dynamic section entry
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   111
 * that uses d_val, or that uses neither d_ptr nor d_val.
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   112
 *
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   113
 * There are exceptions to the above rule:
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   114
 *	- Tags with values that are less than DT_ENCODING.
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   115
 *	- Tags with values that fall between DT_LOOS and DT_SUNW_ENCODING
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   116
 *	- Tags with values that fall between DT_HIOS and DT_LOPROC
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   117
 *
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   118
 * Third party tools must handle these exception ranges explicitly
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   119
 * on an item by item basis.
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   120
 */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   121
#define	DT_ENCODING		32	/* positive tag DT_* encoding rules */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   122
					/*	start after this */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   123
#define	DT_PREINIT_ARRAY	32    /* pointer to .preinitarray segment */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   124
#define	DT_PREINIT_ARRAYSZ	33    /* size of .preinitarray segment */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   125
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   126
#define	DT_MAXPOSTAGS		34	/* number of positive tags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   127
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   128
/*
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   129
 * DT_* encoding rules do not apply between DT_LOOS and DT_SUNW_ENCODING
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   130
 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   131
#define	DT_LOOS			0x6000000d	/* OS specific range */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   132
#define	DT_SUNW_AUXILIARY	0x6000000d	/* symbol auxiliary name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   133
#define	DT_SUNW_RTLDINF		0x6000000e	/* ld.so.1 info (private) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   134
#define	DT_SUNW_FILTER		0x6000000f	/* symbol filter name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   135
#define	DT_SUNW_CAP		0x60000010	/* hardware/software */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   136
						/*	capabilities */
2766
897bcb036a29 PSARC 2006/526 SHT_SUNW_LDYNSYM - default local symbol addition
ab196087
parents: 1698
diff changeset
   137
#define	DT_SUNW_SYMTAB		0x60000011	/* symtab with local fcn */
897bcb036a29 PSARC 2006/526 SHT_SUNW_LDYNSYM - default local symbol addition
ab196087
parents: 1698
diff changeset
   138
						/*	symbols immediately */
897bcb036a29 PSARC 2006/526 SHT_SUNW_LDYNSYM - default local symbol addition
ab196087
parents: 1698
diff changeset
   139
						/*	preceding DT_SYMTAB */
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   140
#define	DT_SUNW_SYMSZ		0x60000012	/* Size of SUNW_SYMTAB table */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   141
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   142
/*
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   143
 * DT_* encoding rules apply between DT_SUNW_ENCODING and DT_HIOS
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   144
 */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   145
#define	DT_SUNW_ENCODING	0x60000013	/* DT_* encoding rules resume */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   146
						/*	after this */
9273
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   147
#define	DT_SUNW_SORTENT		0x60000013	/* sizeof [SYM|TLS]SORT entry */
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   148
#define	DT_SUNW_SYMSORT		0x60000014	/* sym indices sorted by addr */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   149
#define	DT_SUNW_SYMSORTSZ	0x60000015	/* size of SUNW_SYMSORT */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   150
#define	DT_SUNW_TLSSORT		0x60000016	/* tls sym ndx sort by offset */
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   151
#define	DT_SUNW_TLSSORTSZ	0x60000017	/* size of SUNW_TLSSORT */
11827
d7ef53deac3f 6918143 symbol capabilities
Rod Evans <Rod.Evans@Sun.COM>
parents: 11734
diff changeset
   152
#define	DT_SUNW_CAPINFO		0x60000018	/* capabilities symbols */
3850
71162a8a771b PSARC 2007/127 Reserved space for editing ELF dynamic sections
ab196087
parents: 3492
diff changeset
   153
#define	DT_SUNW_STRPAD		0x60000019	/* # of unused bytes at the */
71162a8a771b PSARC 2007/127 Reserved space for editing ELF dynamic sections
ab196087
parents: 3492
diff changeset
   154
						/*	end of dynstr */
11827
d7ef53deac3f 6918143 symbol capabilities
Rod Evans <Rod.Evans@Sun.COM>
parents: 11734
diff changeset
   155
#define	DT_SUNW_CAPCHAIN	0x6000001a	/* capabilities chain info */
6206
6b0ed502a8e7 PSARC 2008/179 cross link-editor
ab196087
parents: 5220
diff changeset
   156
#define	DT_SUNW_LDMACH		0x6000001b	/* EM_ machine code of linker */
6b0ed502a8e7 PSARC 2008/179 cross link-editor
ab196087
parents: 5220
diff changeset
   157
						/*	that produced object */
11827
d7ef53deac3f 6918143 symbol capabilities
Rod Evans <Rod.Evans@Sun.COM>
parents: 11734
diff changeset
   158
#define	DT_SUNW_CAPCHAINENT	0x6000001d	/* capabilities chain entry */
d7ef53deac3f 6918143 symbol capabilities
Rod Evans <Rod.Evans@Sun.COM>
parents: 11734
diff changeset
   159
#define	DT_SUNW_CAPCHAINSZ	0x6000001f	/* capabilities chain size */
3850
71162a8a771b PSARC 2007/127 Reserved space for editing ELF dynamic sections
ab196087
parents: 3492
diff changeset
   160
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   161
/*
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   162
 * DT_* encoding rules do not apply between DT_HIOS and DT_LOPROC
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   163
 */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   164
#define	DT_HIOS			0x6ffff000
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   165
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   166
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   167
 * The following values have been deprecated and remain here to allow
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   168
 * compatibility with older binaries.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   169
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   170
#define	DT_DEPRECATED_SPARC_REGISTER	0x7000001
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   171
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   172
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   173
 * DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   174
 * Dyn.d_un.d_val field of the Elf*_Dyn structure.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   175
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   176
#define	DT_VALRNGLO	0x6ffffd00
9085
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   177
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   178
#define	DT_GNU_PRELINKED 0x6ffffdf5	/* prelinking timestamp (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   179
#define	DT_GNU_CONFLICTSZ 0x6ffffdf6	/* size of conflict section (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   180
#define	DT_GNU_LIBLISTSZ 0x6ffffdf7	/* size of library list (unused) */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   181
#define	DT_CHECKSUM	0x6ffffdf8	/* elf checksum */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   182
#define	DT_PLTPADSZ	0x6ffffdf9	/* pltpadding size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   183
#define	DT_MOVEENT	0x6ffffdfa	/* move table entry size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   184
#define	DT_MOVESZ	0x6ffffdfb	/* move table size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   185
#define	DT_FEATURE_1	0x6ffffdfc	/* feature holder */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   186
#define	DT_POSFLAG_1	0x6ffffdfd	/* flags for DT_* entries, effecting */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   187
					/*	the following DT_* entry. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   188
					/*	See DF_P1_* definitions */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   189
#define	DT_SYMINSZ	0x6ffffdfe	/* syminfo table size (in bytes) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   190
#define	DT_SYMINENT	0x6ffffdff	/* syminfo entry size (in bytes) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   191
#define	DT_VALRNGHI	0x6ffffdff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   192
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   193
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   194
 * DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   195
 * Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   196
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   197
 * If any adjustment is made to the ELF object after it has been
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   198
 * built, these entries will need to be adjusted.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   199
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   200
#define	DT_ADDRRNGLO	0x6ffffe00
9085
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   201
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   202
#define	DT_GNU_HASH	0x6ffffef5	/* GNU-style hash table (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   203
#define	DT_TLSDESC_PLT	0x6ffffef6	/* GNU (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   204
#define	DT_TLSDESC_GOT	0x6ffffef7	/* GNU (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   205
#define	DT_GNU_CONFLICT	0x6ffffef8	/* start of conflict section (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   206
#define	DT_GNU_LIBLIST	0x6ffffef9	/* Library list (unused) */
ff7eb0bace56 6813909 generalize eh_frame support to non-amd64 platforms
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 7682
diff changeset
   207
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   208
#define	DT_CONFIG	0x6ffffefa	/* configuration information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   209
#define	DT_DEPAUDIT	0x6ffffefb	/* dependency auditing */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   210
#define	DT_AUDIT	0x6ffffefc	/* object auditing */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   211
#define	DT_PLTPAD	0x6ffffefd	/* pltpadding (sparcv9) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   212
#define	DT_MOVETAB	0x6ffffefe	/* move table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   213
#define	DT_SYMINFO	0x6ffffeff	/* syminfo table */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   214
#define	DT_ADDRRNGHI	0x6ffffeff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   215
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   216
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   217
 * The following DT_* entries should have been assigned within one of the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   218
 * DT_* ranges, but existed before such ranges had been established.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   219
 */
4716
c06a3889ba02 6577462 Additional improvements needed to handling of gcc's symbol versioning
ab196087
parents: 4679
diff changeset
   220
#define	DT_VERSYM	0x6ffffff0	/* version symbol table - unused by */
c06a3889ba02 6577462 Additional improvements needed to handling of gcc's symbol versioning
ab196087
parents: 4679
diff changeset
   221
					/*	Solaris (see libld/update.c) */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   222
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   223
#define	DT_RELACOUNT	0x6ffffff9	/* number of RELATIVE relocations */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   224
#define	DT_RELCOUNT	0x6ffffffa	/* number of RELATIVE relocations */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   225
#define	DT_FLAGS_1	0x6ffffffb	/* state flags - see DF_1_* defs */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   226
#define	DT_VERDEF	0x6ffffffc	/* version definition table and */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   227
#define	DT_VERDEFNUM	0x6ffffffd	/*	associated no. of entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   228
#define	DT_VERNEED	0x6ffffffe	/* version needed table and */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   229
#define	DT_VERNEEDNUM	0x6fffffff	/* 	associated no. of entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   230
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   231
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   232
 * DT_* entries between DT_HIPROC and DT_LOPROC are reserved for processor
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   233
 * specific semantics.
3492
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   234
 *
cd4326c9ab0e PSARC 2007/026 ELF symbol sort sections
ab196087
parents: 3466
diff changeset
   235
 * DT_* encoding rules apply to all tag values larger than DT_LOPROC.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   236
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   237
#define	DT_LOPROC	0x70000000	/* processor specific range */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   238
#define	DT_AUXILIARY	0x7ffffffd	/* shared library auxiliary name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   239
#define	DT_USED		0x7ffffffe	/* ignored - same as needed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   240
#define	DT_FILTER	0x7fffffff	/* shared library filter name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   241
#define	DT_HIPROC	0x7fffffff
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   242
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   243
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   244
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   245
 * Values for DT_FLAGS
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   246
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   247
#define	DF_ORIGIN	0x00000001	/* ORIGIN processing required */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   248
#define	DF_SYMBOLIC	0x00000002	/* symbolic bindings in effect */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   249
#define	DF_TEXTREL	0x00000004	/* text relocations remain */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   250
#define	DF_BIND_NOW	0x00000008	/* process all relocations */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   251
#define	DF_STATIC_TLS	0x00000010	/* obj. contains static TLS refs */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   252
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   253
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   254
 * Values for the DT_POSFLAG_1 .dynamic entry.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   255
 * These values only affect the following DT_* entry.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   256
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   257
#define	DF_P1_LAZYLOAD	0x00000001	/* following object is to be */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   258
					/*	lazy loaded */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   259
#define	DF_P1_GROUPPERM	0x00000002	/* following object's symbols are */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   260
					/*	not available for general */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   261
					/*	symbol bindings. */
12449
a87750d92895 6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW
Rod Evans <Rod.Evans@Sun.COM>
parents: 11827
diff changeset
   262
#define	DF_P1_DEFERRED	0x00000004	/* following object is deferred */
a87750d92895 6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW
Rod Evans <Rod.Evans@Sun.COM>
parents: 11827
diff changeset
   263
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   264
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   265
 * Values for the DT_FLAGS_1 .dynamic entry.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   266
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   267
#define	DF_1_NOW	0x00000001	/* set RTLD_NOW for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   268
#define	DF_1_GLOBAL	0x00000002	/* set RTLD_GLOBAL for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   269
#define	DF_1_GROUP	0x00000004	/* set RTLD_GROUP for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   270
#define	DF_1_NODELETE	0x00000008	/* set RTLD_NODELETE for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   271
#define	DF_1_LOADFLTR	0x00000010	/* trigger filtee loading at runtime */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   272
#define	DF_1_INITFIRST	0x00000020	/* set RTLD_INITFIRST for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   273
#define	DF_1_NOOPEN	0x00000040	/* set RTLD_NOOPEN for this object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   274
#define	DF_1_ORIGIN	0x00000080	/* ORIGIN processing required */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   275
#define	DF_1_DIRECT	0x00000100	/* direct binding enabled */
10792
809cb9af791e 6888489 Null environment variables are not overriding crle(1) replaceable environment variables.
Rod Evans <Rod.Evans@Sun.COM>
parents: 9273
diff changeset
   276
#define	DF_1_TRANS	0x00000200	/* unused historical name */
3466
4cc6ca6917b5 PSARC/2006/714 ld(1) mapfile: symbol interpose definition
rie
parents: 2766
diff changeset
   277
#define	DF_1_INTERPOSE	0x00000400	/* object is an interposer */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   278
#define	DF_1_NODEFLIB	0x00000800	/* ignore default library search path */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   279
#define	DF_1_NODUMP	0x00001000	/* object can't be dldump(3x)'ed */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   280
#define	DF_1_CONFALT	0x00002000	/* configuration alternative created */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   281
#define	DF_1_ENDFILTEE	0x00004000	/* filtee terminates filters search */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   282
#define	DF_1_DISPRELDNE	0x00008000	/* disp reloc applied at build time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   283
#define	DF_1_DISPRELPND	0x00010000	/* disp reloc applied at run-time */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   284
#define	DF_1_NODIRECT	0x00020000	/* object contains symbols that */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   285
					/*	cannot be directly bound to */
1682
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
   286
#define	DF_1_IGNMULDEF	0x00040000	/* internal: krtld ignore muldefs */
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
   287
#define	DF_1_NOKSYMS	0x00080000	/* internal: don't export object's */
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
   288
					/*	symbols via /dev/ksyms */
11734
d29dc9c2b6c5 6916788 ld version 2 mapfile syntax
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 10792
diff changeset
   289
#define	DF_1_NOHDR	0x00100000	/* mapfile: 1st segment mapping */
1698
0cf90a9f4e74 6397256 ldd dumps core in elf_fix_name
ab196087
parents: 1682
diff changeset
   290
					/*	omits ELF & program headers */
3850
71162a8a771b PSARC 2007/127 Reserved space for editing ELF dynamic sections
ab196087
parents: 3492
diff changeset
   291
#define	DF_1_EDITED	0x00200000	/* object has been modified since */
71162a8a771b PSARC 2007/127 Reserved space for editing ELF dynamic sections
ab196087
parents: 3492
diff changeset
   292
					/*	being built by 'ld' */
1682
79d68fa5aedd 6398893 Extended section processing needs some work
rie
parents: 0
diff changeset
   293
#define	DF_1_NORELOC	0x00400000	/* internal: unrelocated object */
3466
4cc6ca6917b5 PSARC/2006/714 ld(1) mapfile: symbol interpose definition
rie
parents: 2766
diff changeset
   294
#define	DF_1_SYMINTPOSE	0x00800000	/* individual symbol interposers */
4cc6ca6917b5 PSARC/2006/714 ld(1) mapfile: symbol interpose definition
rie
parents: 2766
diff changeset
   295
					/*	exist */
4679
3d9b5e6569cc PSARC/2007/413 Add -zglobalaudit option to ld
rie
parents: 3850
diff changeset
   296
#define	DF_1_GLOBAUDIT	0x01000000	/* establish global auditing */
5220
caa2c0074088 PSARC/2007/559 new symbol visibilities - EXPORTED, SINGLETON, and ELIMINATE
rie
parents: 4716
diff changeset
   297
#define	DF_1_SINGLETON	0x02000000	/* singleton symbols exist */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   298
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   299
/*
1698
0cf90a9f4e74 6397256 ldd dumps core in elf_fix_name
ab196087
parents: 1682
diff changeset
   300
 * Values set to DT_FEATURE_1 tag's d_val.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   301
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   302
#define	DTF_1_PARINIT	0x00000001	/* partially initialization feature */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   303
#define	DTF_1_CONFEXP	0x00000002	/* configuration file expected */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   304
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   305
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   306
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   307
 * Version structures.  There are three types of version structure:
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   308
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   309
 *  o	A definition of the versions within the image itself.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   310
 *	Each version definition is assigned a unique index (starting from
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   311
 *	VER_NDX_BGNDEF)	which is used to cross-reference symbols associated to
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   312
 *	the version.  Each version can have one or more dependencies on other
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   313
 *	version definitions within the image.  The version name, and any
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   314
 *	dependency names, are specified in the version definition auxiliary
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   315
 *	array.  Version definition entries require a version symbol index table.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   316
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   317
 *  o	A version requirement on a needed dependency.  Each needed entry
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   318
 *	specifies the shared object dependency (as specified in DT_NEEDED).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   319
 *	One or more versions required from this dependency are specified in the
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   320
 *	version needed auxiliary array.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   321
 *
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   322
 *  o	A version symbol index table.  Each symbol indexes into this array
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   323
 *	to determine its version index.  Index values of VER_NDX_BGNDEF or
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   324
 *	greater indicate the version definition to which a symbol is associated.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   325
 *	(the size of a symbol index entry is recorded in the sh_info field).
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   326
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   327
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   328
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   329
typedef struct {			/* Version Definition Structure. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   330
	Elf32_Half	vd_version;	/* this structures version revision */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   331
	Elf32_Half	vd_flags;	/* version information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   332
	Elf32_Half	vd_ndx;		/* version index */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   333
	Elf32_Half	vd_cnt;		/* no. of associated aux entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   334
	Elf32_Word	vd_hash;	/* version name hash value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   335
	Elf32_Word	vd_aux;		/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   336
					/*	verdef to verdaux array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   337
	Elf32_Word	vd_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   338
} Elf32_Verdef;				/*	verdef to next verdef entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   339
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   340
typedef struct {			/* Verdef Auxiliary Structure. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   341
	Elf32_Word	vda_name;	/* first element defines the version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   342
					/*	name. Additional entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   343
					/*	define dependency names. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   344
	Elf32_Word	vda_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   345
} Elf32_Verdaux;			/*	verdaux to next verdaux entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   346
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   347
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   348
typedef	struct {			/* Version Requirement Structure. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   349
	Elf32_Half	vn_version;	/* this structures version revision */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   350
	Elf32_Half	vn_cnt;		/* no. of associated aux entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   351
	Elf32_Word	vn_file;	/* name of needed dependency (file) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   352
	Elf32_Word	vn_aux;		/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   353
					/*	verneed to vernaux array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   354
	Elf32_Word	vn_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   355
} Elf32_Verneed;			/*	verneed to next verneed entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   356
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   357
typedef struct {			/* Verneed Auxiliary Structure. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   358
	Elf32_Word	vna_hash;	/* version name hash value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   359
	Elf32_Half	vna_flags;	/* version information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   360
	Elf32_Half	vna_other;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   361
	Elf32_Word	vna_name;	/* version name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   362
	Elf32_Word	vna_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   363
} Elf32_Vernaux;			/*	vernaux to next vernaux entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   364
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   365
typedef	Elf32_Half 	Elf32_Versym;	/* Version symbol index array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   366
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   367
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   368
	Elf32_Half	si_boundto;	/* direct bindings - symbol bound to */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   369
	Elf32_Half	si_flags;	/* per symbol flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   370
} Elf32_Syminfo;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   371
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   372
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   373
#if defined(_LP64) || defined(_LONGLONG_TYPE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   374
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   375
	Elf64_Half	vd_version;	/* this structures version revision */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   376
	Elf64_Half	vd_flags;	/* version information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   377
	Elf64_Half	vd_ndx;		/* version index */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   378
	Elf64_Half	vd_cnt;		/* no. of associated aux entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   379
	Elf64_Word	vd_hash;	/* version name hash value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   380
	Elf64_Word	vd_aux;		/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   381
					/*	verdef to verdaux array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   382
	Elf64_Word	vd_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   383
} Elf64_Verdef;				/*	verdef to next verdef entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   384
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   385
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   386
	Elf64_Word	vda_name;	/* first element defines the version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   387
					/*	name. Additional entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   388
					/*	define dependency names. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   389
	Elf64_Word	vda_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   390
} Elf64_Verdaux;			/*	verdaux to next verdaux entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   391
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   392
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   393
	Elf64_Half	vn_version;	/* this structures version revision */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   394
	Elf64_Half	vn_cnt;		/* no. of associated aux entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   395
	Elf64_Word	vn_file;	/* name of needed dependency (file) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   396
	Elf64_Word	vn_aux;		/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   397
					/*	verneed to vernaux array */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   398
	Elf64_Word	vn_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   399
} Elf64_Verneed;			/*	verneed to next verneed entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   400
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   401
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   402
	Elf64_Word	vna_hash;	/* version name hash value */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   403
	Elf64_Half	vna_flags;	/* version information */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   404
	Elf64_Half	vna_other;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   405
	Elf64_Word	vna_name;	/* version name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   406
	Elf64_Word	vna_next;	/* no. of bytes from start of this */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   407
} Elf64_Vernaux;			/*	vernaux to next vernaux entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   408
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   409
typedef	Elf64_Half	Elf64_Versym;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   410
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   411
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   412
	Elf64_Half	si_boundto;	/* direct bindings - symbol bound to */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   413
	Elf64_Half	si_flags;	/* per symbol flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   414
} Elf64_Syminfo;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   415
#endif	/* defined(_LP64) || defined(_LONGLONG_TYPE) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   416
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   417
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   418
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   419
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   420
 * Versym symbol index values.  Values greater than VER_NDX_GLOBAL
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   421
 * and less then VER_NDX_LORESERVE associate symbols with user
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   422
 * specified version descriptors.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   423
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   424
#define	VER_NDX_LOCAL		0	/* symbol is local */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   425
#define	VER_NDX_GLOBAL		1	/* symbol is global and assigned to */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   426
					/*	the base version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   427
#define	VER_NDX_LORESERVE	0xff00	/* beginning of RESERVED entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   428
#define	VER_NDX_ELIMINATE	0xff01	/* symbol is to be eliminated */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   429
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   430
/*
7682
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   431
 * Verdef (vd_flags) and Vernaux (vna_flags) flags values.
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   432
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   433
#define	VER_FLG_BASE		0x1	/* version definition of file itself */
7682
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   434
					/*	(Verdef only) */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   435
#define	VER_FLG_WEAK		0x2	/* weak version identifier */
7682
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   436
#define	VER_FLG_INFO		0x4	/* version is recorded in object for */
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   437
					/*	informational purposes */
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   438
					/*	(Versym reference) only. No */
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   439
					/*	runtime verification is */
b04d06fd448f 6749055 ld should generate GNU style VERSYM indexes for VERNEED records
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 6206
diff changeset
   440
					/*	required. (Vernaux only) */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   441
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   442
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   443
 * Verdef version values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   444
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   445
#define	VER_DEF_NONE		0	/* Ver_def version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   446
#define	VER_DEF_CURRENT		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   447
#define	VER_DEF_NUM		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   448
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   449
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   450
 * Verneed version values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   451
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   452
#define	VER_NEED_NONE		0	/* Ver_need version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   453
#define	VER_NEED_CURRENT	1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   454
#define	VER_NEED_NUM		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   455
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   456
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   457
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   458
 * Syminfo flag values
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   459
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   460
#define	SYMINFO_FLG_DIRECT	0x0001	/* symbol ref has direct association */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   461
					/*	to object containing defn. */
9273
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   462
#define	SYMINFO_FLG_FILTER	0x0002	/* symbol ref is associated to a */
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   463
					/* 	standard filter */
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   464
#define	SYMINFO_FLG_PASSTHRU	SYMINFO_FLG_FILTER /* unused historical name */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   465
#define	SYMINFO_FLG_COPY	0x0004	/* symbol is a copy-reloc */
3466
4cc6ca6917b5 PSARC/2006/714 ld(1) mapfile: symbol interpose definition
rie
parents: 2766
diff changeset
   466
#define	SYMINFO_FLG_LAZYLOAD	0x0008	/* object containing defn. should be */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   467
					/*	lazily-loaded */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   468
#define	SYMINFO_FLG_DIRECTBIND	0x0010	/* ref should be bound directly to */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   469
					/*	object containing defn. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   470
#define	SYMINFO_FLG_NOEXTDIRECT	0x0020	/* don't let an external reference */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   471
					/*	directly bind to this symbol */
9273
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   472
#define	SYMINFO_FLG_AUXILIARY	0x0040	/* symbol ref is associated to a */
9a0603d78ad3 6821619 Solaris linkers need systematic approach to ELF OSABI
Ali Bahrami <Ali.Bahrami@Sun.COM>
parents: 9085
diff changeset
   473
					/* 	auxiliary filter */
3466
4cc6ca6917b5 PSARC/2006/714 ld(1) mapfile: symbol interpose definition
rie
parents: 2766
diff changeset
   474
#define	SYMINFO_FLG_INTERPOSE	0x0080	/* symbol defines an interposer */
11827
d7ef53deac3f 6918143 symbol capabilities
Rod Evans <Rod.Evans@Sun.COM>
parents: 11734
diff changeset
   475
#define	SYMINFO_FLG_CAP		0x0100	/* symbol is capabilities specific */
12449
a87750d92895 6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW
Rod Evans <Rod.Evans@Sun.COM>
parents: 11827
diff changeset
   476
#define	SYMINFO_FLG_DEFERRED	0x0200	/* symbol should not be included in */
a87750d92895 6943772 Testing for a symbols existence with RTLD_PROBE is compromised by RTLD_BIND_NOW
Rod Evans <Rod.Evans@Sun.COM>
parents: 11827
diff changeset
   477
					/*	BIND_NOW relocations */
0
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   478
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   479
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   480
 * Syminfo.si_boundto values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   481
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   482
#define	SYMINFO_BT_SELF		0xffff	/* symbol bound to self */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   483
#define	SYMINFO_BT_PARENT	0xfffe	/* symbol bound to parent */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   484
#define	SYMINFO_BT_NONE		0xfffd	/* no special symbol binding */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   485
#define	SYMINFO_BT_EXTERN	0xfffc	/* symbol defined as external */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   486
#define	SYMINFO_BT_LOWRESERVE	0xff00	/* beginning of reserved entries */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   487
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   488
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   489
 * Syminfo version values.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   490
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   491
#define	SYMINFO_NONE		0	/* Syminfo version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   492
#define	SYMINFO_CURRENT		1
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   493
#define	SYMINFO_NUM		2
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   494
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   495
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   496
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   497
 * Public structure defined and maintained within the runtime linker
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   498
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   499
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   500
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   501
typedef struct link_map	Link_map;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   502
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   503
struct link_map {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   504
	unsigned long	l_addr;		/* address at which object is mapped */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   505
	char 		*l_name;	/* full name of loaded object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   506
#ifdef _LP64
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   507
	Elf64_Dyn	*l_ld;		/* dynamic structure of object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   508
#else
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   509
	Elf32_Dyn	*l_ld;		/* dynamic structure of object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   510
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   511
	Link_map	*l_next;	/* next link object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   512
	Link_map	*l_prev;	/* previous link object */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   513
	char		*l_refname;	/* filters reference name */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   514
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   515
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   516
#ifdef _SYSCALL32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   517
typedef struct link_map32 Link_map32;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   518
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   519
struct link_map32 {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   520
	Elf32_Word	l_addr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   521
	Elf32_Addr	l_name;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   522
	Elf32_Addr	l_ld;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   523
	Elf32_Addr	l_next;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   524
	Elf32_Addr	l_prev;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   525
	Elf32_Addr	l_refname;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   526
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   527
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   528
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   529
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   530
	RT_CONSISTENT,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   531
	RT_ADD,
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   532
	RT_DELETE
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   533
} r_state_e;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   534
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   535
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   536
	RD_FL_NONE = 0,		/* no flags */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   537
	RD_FL_ODBG = (1<<0),	/* old style debugger present */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   538
	RD_FL_DBG = (1<<1)	/* debugging enabled */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   539
} rd_flags_e;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   540
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   541
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   542
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   543
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   544
 * Debugging events enabled inside of the runtime linker.  To
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   545
 * access these events see the librtld_db interface.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   546
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   547
typedef enum {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   548
	RD_NONE = 0,		/* no event */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   549
	RD_PREINIT,		/* the Initial rendezvous before .init */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   550
	RD_POSTINIT,		/* the Second rendezvous after .init */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   551
	RD_DLACTIVITY		/* a dlopen or dlclose has happened */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   552
} rd_event_e;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   553
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   554
struct r_debug {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   555
	int		r_version;	/* debugging info version no. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   556
	Link_map	*r_map;		/* address of link_map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   557
	unsigned long	r_brk;		/* address of update routine */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   558
	r_state_e	r_state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   559
	unsigned long	r_ldbase;	/* base addr of ld.so */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   560
	Link_map	*r_ldsomap;	/* address of ld.so.1's link map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   561
	rd_event_e	r_rdevent;	/* debug event */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   562
	rd_flags_e	r_flags;	/* misc flags. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   563
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   564
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   565
#ifdef _SYSCALL32
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   566
struct r_debug32 {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   567
	Elf32_Word	r_version;	/* debugging info version no. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   568
	Elf32_Addr	r_map;		/* address of link_map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   569
	Elf32_Word	r_brk;		/* address of update routine */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   570
	r_state_e	r_state;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   571
	Elf32_Word	r_ldbase;	/* base addr of ld.so */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   572
	Elf32_Addr	r_ldsomap;	/* address of ld.so.1's link map */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   573
	rd_event_e	r_rdevent;	/* debug event */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   574
	rd_flags_e	r_flags;	/* misc flags. */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   575
};
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   576
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   577
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   578
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   579
#define	R_DEBUG_VERSION	2		/* current r_debug version */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   580
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   581
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   582
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   583
 * Attribute/value structures used to bootstrap ELF-based dynamic linker.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   584
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   585
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   586
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   587
	Elf32_Sword eb_tag;		/* what this one is */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   588
	union {				/* possible values */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   589
		Elf32_Word eb_val;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   590
		Elf32_Addr eb_ptr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   591
		Elf32_Off  eb_off;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   592
	} eb_un;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   593
} Elf32_Boot;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   594
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   595
#if defined(_LP64) || defined(_LONGLONG_TYPE)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   596
typedef struct {
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   597
	Elf64_Xword eb_tag;		/* what this one is */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   598
	union {				/* possible values */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   599
		Elf64_Xword eb_val;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   600
		Elf64_Addr eb_ptr;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   601
		Elf64_Off eb_off;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   602
	} eb_un;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   603
} Elf64_Boot;
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   604
#endif	/* defined(_LP64) || defined(_LONGLONG_TYPE) */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   605
#endif	/* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   606
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   607
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   608
 * Attributes
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   609
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   610
#define	EB_NULL		0		/* (void) last entry */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   611
#define	EB_DYNAMIC	1		/* (*) dynamic structure of subject */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   612
#define	EB_LDSO_BASE	2		/* (caddr_t) base address of ld.so */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   613
#define	EB_ARGV		3		/* (caddr_t) argument vector */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   614
#define	EB_ENVP		4		/* (char **) environment strings */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   615
#define	EB_AUXV		5		/* (auxv_t *) auxiliary vector */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   616
#define	EB_DEVZERO	6		/* (int) fd for /dev/zero */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   617
#define	EB_PAGESIZE	7		/* (int) page size */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   618
#define	EB_MAX		8		/* number of "EBs" */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   619
#define	EB_MAX_SIZE32	64		/* size in bytes, _ILP32 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   620
#define	EB_MAX_SIZE64	128		/* size in bytes, _LP64 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   621
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   622
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   623
#ifndef	_ASM
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   624
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   625
#ifdef __STDC__
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   626
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   627
/*
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   628
 * Concurrency communication structure for libc callbacks.
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   629
 */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   630
extern void	_ld_libc(void *);
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   631
#else /* __STDC__ */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   632
extern void	_ld_libc();
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   633
#endif /* __STDC__ */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   634
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   635
#pragma unknown_control_flow(_ld_libc)
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   636
#endif /* _ASM */
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   637
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   638
#ifdef	__cplusplus
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   639
}
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   640
#endif
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   641
68f95e015346 OpenSolaris Launch
stevel@tonic-gate
parents:
diff changeset
   642
#endif	/* _SYS_LINK_H */