]> git.ipfire.org Git - thirdparty/glibc.git/blame - bits/dlfcn.h
Add crt1-2.0.o for glibc 2.0 compatibility tests
[thirdparty/glibc.git] / bits / dlfcn.h
CommitLineData
3f80a33b 1/* System dependent definitions for run-time dynamic loading.
dff8da6b 2 Copyright (C) 1996-2024 Free Software Foundation, Inc.
f21acc89
UD
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
f21acc89
UD
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 13 Lesser General Public License for more details.
f21acc89 14
41bdb6e2 15 You should have received a copy of the GNU Lesser General Public
59ba27a6 16 License along with the GNU C Library; if not, see
5a82c748 17 <https://www.gnu.org/licenses/>. */
f21acc89 18
f4017d20
UD
19#ifndef _DLFCN_H
20# error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
21#endif
f21acc89
UD
22
23/* The MODE argument to `dlopen' contains one of the following: */
bf8b3e74
UD
24#define RTLD_LAZY 0x00001 /* Lazy function call binding. */
25#define RTLD_NOW 0x00002 /* Immediate function call binding. */
26#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */
27#define RTLD_NOLOAD 0x00004 /* Do not load the object. */
1fc07491 28#define RTLD_DEEPBIND 0x00008 /* Use deep binding. */
f21acc89
UD
29
30/* If the following bit is set in the MODE argument to `dlopen',
31 the symbols of the loaded object and its dependencies are made
32 visible as if the object were linked directly into the program. */
bf8b3e74 33#define RTLD_GLOBAL 0x00100
4bae5567
UD
34
35/* Unix98 demands the following flag which is the inverse to RTLD_GLOBAL.
36 The implementation does this by default and so we can define the
37 value to zero. */
38#define RTLD_LOCAL 0
a808d541 39
bf8b3e74
UD
40/* Do not delete object when closed. */
41#define RTLD_NODELETE 0x01000
42
a808d541
UD
43#ifdef __USE_GNU
44/* To support profiling of shared objects it is a good idea to call
45 the function found using `dlsym' using the following macro since
46 these calls do not use the PLT. But this would mean the dynamic
47 loader has no chance to find out when the function is called. The
48 macro applies the necessary magic so that profiling is possible.
49 Rewrite
50 foo = (*fctp) (arg1, arg2);
51 into
52 foo = DL_CALL_FCT (fctp, (arg1, arg2));
53*/
54# define DL_CALL_FCT(fctp, args) \
ca6c7389
UD
55 (_dl_mcount_wrapper_check ((void *) (fctp)), (*(fctp)) args)
56
57__BEGIN_DECLS
a808d541
UD
58
59/* This function calls the profiling functions. */
60extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW;
ca6c7389
UD
61
62__END_DECLS
63
a808d541 64#endif