View | Details | Raw Unified | Return to bug 220525
Collapse All | Expand All

(-)b/contrib/mdocml/lib.in (+1 lines)
Lines 46-51 LINE("libdevctl", "Device Control Library (libdevctl, \\-ldevctl)") Link Here
46
LINE("libdevinfo",	"Device and Resource Information Utility Library (libdevinfo, \\-ldevinfo)")
46
LINE("libdevinfo",	"Device and Resource Information Utility Library (libdevinfo, \\-ldevinfo)")
47
LINE("libdevstat",	"Device Statistics Library (libdevstat, \\-ldevstat)")
47
LINE("libdevstat",	"Device Statistics Library (libdevstat, \\-ldevstat)")
48
LINE("libdisk",		"Interface to Slice and Partition Labels Library (libdisk, \\-ldisk)")
48
LINE("libdisk",		"Interface to Slice and Partition Labels Library (libdisk, \\-ldisk)")
49
LINE("libdl",		"Dynamic Linker Services Filter (libdl, \\-ldl)")
49
LINE("libdm",		"Device Mapper Library (libdm, \\-ldm)")
50
LINE("libdm",		"Device Mapper Library (libdm, \\-ldm)")
50
LINE("libdwarf",	"DWARF Access Library (libdwarf, \\-ldwarf)")
51
LINE("libdwarf",	"DWARF Access Library (libdwarf, \\-ldwarf)")
51
LINE("libedit",		"Command Line Editor Library (libedit, \\-ledit)")
52
LINE("libedit",		"Command Line Editor Library (libedit, \\-ledit)")
(-)b/lib/Makefile (+1 lines)
Lines 40-45 SUBDIR= ${SUBDIR_BOOTSTRAP} \ Link Here
40
	libdevctl \
40
	libdevctl \
41
	libdevinfo \
41
	libdevinfo \
42
	libdevstat \
42
	libdevstat \
43
	libdl \
43
	libdwarf \
44
	libdwarf \
44
	libedit \
45
	libedit \
45
	libevent \
46
	libevent \
(-)b/lib/libc/gen/dlfcn.c (-32 / +54 lines)
Lines 27-32 Link Here
27
#include <sys/cdefs.h>
27
#include <sys/cdefs.h>
28
__FBSDID("$FreeBSD$");
28
__FBSDID("$FreeBSD$");
29
29
30
#if !defined(IN_LIBDL) || defined(PIC)
31
30
/*
32
/*
31
 * Linkage to services provided by the dynamic linker.
33
 * Linkage to services provided by the dynamic linker.
32
 */
34
 */
Lines 57-151 void _rtld_atfork_post(int *); Link Here
57
59
58
#pragma weak _rtld_error
60
#pragma weak _rtld_error
59
void
61
void
60
_rtld_error(const char *fmt, ...)
62
_rtld_error(const char *fmt __unused, ...)
61
{
63
{
62
}
64
}
63
65
64
#pragma weak dladdr
66
#pragma weak dladdr
65
int
67
int
66
dladdr(const void *addr, Dl_info *dlip)
68
dladdr(const void *addr __unused, Dl_info *dlip __unused)
67
{
69
{
70
68
	_rtld_error(sorry);
71
	_rtld_error(sorry);
69
	return 0;
72
	return (0);
70
}
73
}
71
74
72
#pragma weak dlclose
75
#pragma weak dlclose
73
int
76
int
74
dlclose(void *handle)
77
dlclose(void *handle __unused)
75
{
78
{
79
76
	_rtld_error(sorry);
80
	_rtld_error(sorry);
77
	return -1;
81
	return (-1);
78
}
82
}
79
83
80
#pragma weak dlerror
84
#pragma weak dlerror
81
char *
85
char *
82
dlerror(void)
86
dlerror(void)
83
{
87
{
84
	return sorry;
88
89
	return (sorry);
85
}
90
}
86
91
87
#pragma weak dllockinit
92
#pragma weak dllockinit
88
void
93
void
89
dllockinit(void *context,
94
dllockinit(void *context,
90
	   void *(*lock_create)(void *context),
95
    void *(*lock_create)(void *context) __unused,
91
	   void (*rlock_acquire)(void *lock),
96
    void (*rlock_acquire)(void *lock) __unused,
92
	   void (*wlock_acquire)(void *lock),
97
    void (*wlock_acquire)(void *lock) __unused,
93
	   void (*lock_release)(void *lock),
98
    void (*lock_release)(void *lock) __unused,
94
	   void (*lock_destroy)(void *lock),
99
    void (*lock_destroy)(void *lock) __unused,
95
	   void (*context_destroy)(void *context))
100
    void (*context_destroy)(void *context) __unused)
96
{
101
{
102
97
	if (context_destroy != NULL)
103
	if (context_destroy != NULL)
98
		context_destroy(context);
104
		context_destroy(context);
99
}
105
}
100
106
101
#pragma weak dlopen
107
#pragma weak dlopen
102
void *
108
void *
103
dlopen(const char *name, int mode)
109
dlopen(const char *name __unused, int mode __unused)
104
{
110
{
111
105
	_rtld_error(sorry);
112
	_rtld_error(sorry);
106
	return NULL;
113
	return (NULL);
107
}
114
}
108
115
109
#pragma weak dlsym
116
#pragma weak dlsym
110
void *
117
void *
111
dlsym(void * __restrict handle, const char * __restrict name)
118
dlsym(void * __restrict handle __unused, const char * __restrict name __unused)
112
{
119
{
120
113
	_rtld_error(sorry);
121
	_rtld_error(sorry);
114
	return NULL;
122
	return (NULL);
115
}
123
}
116
124
117
#pragma weak dlfunc
125
#pragma weak dlfunc
118
dlfunc_t
126
dlfunc_t
119
dlfunc(void * __restrict handle, const char * __restrict name)
127
dlfunc(void * __restrict handle __unused, const char * __restrict name __unused)
120
{
128
{
129
121
	_rtld_error(sorry);
130
	_rtld_error(sorry);
122
	return NULL;
131
	return (NULL);
123
}
132
}
124
133
125
#pragma weak dlvsym
134
#pragma weak dlvsym
126
void *
135
void *
127
dlvsym(void * __restrict handle, const char * __restrict name,
136
dlvsym(void * __restrict handle __unused, const char * __restrict name __unused,
128
    const char * __restrict version)
137
    const char * __restrict version __unused)
129
{
138
{
139
130
	_rtld_error(sorry);
140
	_rtld_error(sorry);
131
	return NULL;
141
	return (NULL);
132
}
142
}
133
143
134
#pragma weak dlinfo
144
#pragma weak dlinfo
135
int
145
int
136
dlinfo(void * __restrict handle, int request, void * __restrict p)
146
dlinfo(void * __restrict handle __unused, int request __unused,
147
    void * __restrict p __unused)
137
{
148
{
149
138
	_rtld_error(sorry);
150
	_rtld_error(sorry);
139
	return 0;
151
	return (0);
140
}
152
}
141
153
142
#pragma weak _rtld_thread_init
154
#pragma weak _rtld_thread_init
143
void
155
void
144
_rtld_thread_init(void * li)
156
_rtld_thread_init(void *li __unused)
145
{
157
{
158
146
	_rtld_error(sorry);
159
	_rtld_error(sorry);
147
}
160
}
148
161
162
#ifndef IN_LIBDL
149
static pthread_once_t dl_phdr_info_once = PTHREAD_ONCE_INIT;
163
static pthread_once_t dl_phdr_info_once = PTHREAD_ONCE_INIT;
150
static struct dl_phdr_info phdr_info;
164
static struct dl_phdr_info phdr_info;
151
165
Lines 181-224 dl_init_phdr_info(void) Link Here
181
	}
195
	}
182
	phdr_info.dlpi_adds = 1;
196
	phdr_info.dlpi_adds = 1;
183
}
197
}
198
#endif
184
199
185
#pragma weak dl_iterate_phdr
200
#pragma weak dl_iterate_phdr
186
int
201
int
187
dl_iterate_phdr(int (*callback)(struct dl_phdr_info *, size_t, void *),
202
dl_iterate_phdr(int (*callback)(struct dl_phdr_info *, size_t, void *) __unused,
188
    void *data)
203
    void *data __unused)
189
{
204
{
190
205
206
#ifndef IN_LIBDL
191
	__init_elf_aux_vector();
207
	__init_elf_aux_vector();
192
	if (__elf_aux_vector == NULL)
208
	if (__elf_aux_vector == NULL)
193
		return (1);
209
		return (1);
194
	_once(&dl_phdr_info_once, dl_init_phdr_info);
210
	_once(&dl_phdr_info_once, dl_init_phdr_info);
195
	return (callback(&phdr_info, sizeof(phdr_info), data));
211
	return (callback(&phdr_info, sizeof(phdr_info), data));
212
#else
213
	return (0);
214
#endif
196
}
215
}
197
216
198
#pragma weak fdlopen
217
#pragma weak fdlopen
199
void *
218
void *
200
fdlopen(int fd, int mode)
219
fdlopen(int fd __unused, int mode __unused)
201
{
220
{
202
221
203
	_rtld_error(sorry);
222
	_rtld_error(sorry);
204
	return NULL;
223
	return (NULL);
205
}
224
}
206
225
207
#pragma weak _rtld_atfork_pre
226
#pragma weak _rtld_atfork_pre
208
void
227
void
209
_rtld_atfork_pre(int *locks)
228
_rtld_atfork_pre(int *locks __unused)
210
{
229
{
211
}
230
}
212
231
213
#pragma weak _rtld_atfork_post
232
#pragma weak _rtld_atfork_post
214
void
233
void
215
_rtld_atfork_post(int *locks)
234
_rtld_atfork_post(int *locks __unused)
216
{
235
{
217
}
236
}
218
237
219
#pragma weak _rtld_addr_phdr
238
#pragma weak _rtld_addr_phdr
220
int
239
int
221
_rtld_addr_phdr(const void *addr, struct dl_phdr_info *phdr_info)
240
_rtld_addr_phdr(const void *addr __unused,
241
    struct dl_phdr_info *phdr_info_a __unused)
222
{
242
{
223
243
224
	return (0);
244
	return (0);
Lines 234-241 _rtld_get_stack_prot(void) Link Here
234
254
235
#pragma weak _rtld_is_dlopened
255
#pragma weak _rtld_is_dlopened
236
int
256
int
237
_rtld_is_dlopened(void *arg)
257
_rtld_is_dlopened(void *arg __unused)
238
{
258
{
239
259
240
	return (0);
260
	return (0);
241
}
261
}
262
263
#endif /* !defined(IN_LIBDL) || defined(PIC) */
(-)b/lib/libc/gen/dlopen.3 (-1 / +9 lines)
Lines 32-38 Link Here
32
.\" @(#) dlopen.3 1.6 90/01/31 SMI
32
.\" @(#) dlopen.3 1.6 90/01/31 SMI
33
.\" $FreeBSD$
33
.\" $FreeBSD$
34
.\"
34
.\"
35
.Dd February 14, 2015
35
.Dd July 7, 2017
36
.Dt DLOPEN 3
36
.Dt DLOPEN 3
37
.Os
37
.Os
38
.Sh NAME
38
.Sh NAME
Lines 377-382 option to Link Here
377
for symbols defined in the executable to become visible to
377
for symbols defined in the executable to become visible to
378
.Fn dlsym .
378
.Fn dlsym .
379
.Pp
379
.Pp
380
Other ELF platforms require linking with
381
.Lb libdl
382
to provide
383
.Fn dlopen
384
and other functions.
385
.Fx
386
does not require linking with the library, but supports it for compatibility.
387
.Pp
380
In previous implementations, it was necessary to prepend an underscore
388
In previous implementations, it was necessary to prepend an underscore
381
to all external symbols in order to gain symbol
389
to all external symbols in order to gain symbol
382
compatibility with object code compiled from the C language.
390
compatibility with object code compiled from the C language.
(-)b/lib/libdl/Makefile (+15 lines)
Added Link Here
1
# $FreeBSD$
2
3
LIB=dl
4
SHLIB_MAJOR=1
5
6
.PATH:	${SRCTOP}/lib/libc/gen
7
CFLAGS+=-I${SRCTOP}/lib/libc/include
8
CFLAGS+=-DIN_LIBDL
9
LDFLAGS+=-Wl,--filter=libc.so.7
10
VERSION_DEF=${SRCTOP}/lib/libc/Versions.def
11
SYMBOL_MAPS=${.CURDIR}/Symbol.map
12
13
SRCS =	dlfcn.c
14
15
.include <bsd.lib.mk>
(-)b/lib/libdl/Symbol.map (+20 lines)
Added Link Here
1
/*
2
 * $FreeBSD$
3
 */
4
5
FBSD_1.0 {
6
	dladdr;
7
	dlclose;
8
	dlerror;
9
	dlfunc;
10
	dlopen;
11
	dlsym;
12
	dlvsym;
13
	dlinfo;
14
	dl_iterate_phdr;
15
};
16
17
18
FBSD_1.3 {
19
	fdlopen;
20
};
(-)b/share/mk/bsd.libnames.mk (+1 lines)
Lines 56-61 LIBDEVDCTL?= ${LIBDESTDIR}${LIBDIR_BASE}/libdevdctl.a Link Here
56
LIBDEVINFO?=	${LIBDESTDIR}${LIBDIR_BASE}/libdevinfo.a
56
LIBDEVINFO?=	${LIBDESTDIR}${LIBDIR_BASE}/libdevinfo.a
57
LIBDEVSTAT?=	${LIBDESTDIR}${LIBDIR_BASE}/libdevstat.a
57
LIBDEVSTAT?=	${LIBDESTDIR}${LIBDIR_BASE}/libdevstat.a
58
LIBDIALOG?=	${LIBDESTDIR}${LIBDIR_BASE}/libdialog.a
58
LIBDIALOG?=	${LIBDESTDIR}${LIBDIR_BASE}/libdialog.a
59
LIBDL?=		${LIBDESTDIR}${LIBDIR_BASE}/libdl.a
59
LIBDNS?=	${LIBDESTDIR}${LIBDIR_BASE}/libdns.a
60
LIBDNS?=	${LIBDESTDIR}${LIBDIR_BASE}/libdns.a
60
LIBDPV?=	${LIBDESTDIR}${LIBDIR_BASE}/libdpv.a
61
LIBDPV?=	${LIBDESTDIR}${LIBDIR_BASE}/libdpv.a
61
LIBDTRACE?=	${LIBDESTDIR}${LIBDIR_BASE}/libdtrace.a
62
LIBDTRACE?=	${LIBDESTDIR}${LIBDIR_BASE}/libdtrace.a
(-)b/share/mk/src.libnames.mk (+1 lines)
Lines 88-93 _LIBRARIES= \ Link Here
88
		devinfo \
88
		devinfo \
89
		devstat \
89
		devstat \
90
		dialog \
90
		dialog \
91
		dl \
91
		dpv \
92
		dpv \
92
		dtrace \
93
		dtrace \
93
		dwarf \
94
		dwarf \

Return to bug 220525