]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/mips/bits/dlfcn.h
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / sysdeps / mips / bits / dlfcn.h
CommitLineData
1d325002 1/* System dependent definitions for run-time dynamic loading.
f7a9f785 2 Copyright (C) 1996-2016 Free Software Foundation, Inc.
8c0c6f59
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
3214b89b
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.
8c0c6f59
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
3214b89b 13 Lesser General Public License for more details.
8c0c6f59 14
3214b89b 15 You should have received a copy of the GNU Lesser General Public
ab84e3ff
PE
16 License along with the GNU C Library. If not, see
17 <http://www.gnu.org/licenses/>. */
8c0c6f59 18
90571408
UD
19#ifndef _DLFCN_H
20# error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
21#endif
8c0c6f59
UD
22
23/* The MODE argument to `dlopen' contains one of the following: */
f8bc20d3
UD
24#define RTLD_LAZY 0x0001 /* Lazy function call binding. */
25#define RTLD_NOW 0x0002 /* Immediate function call binding. */
2863de95 26#define RTLD_BINDING_MASK 0x3 /* Mask of binding time value. */
f8bc20d3 27#define RTLD_NOLOAD 0x00008 /* Do not load the object. */
2863de95 28#define RTLD_DEEPBIND 0x00010 /* Use deep binding. */
8c0c6f59
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. */
f8bc20d3 33#define RTLD_GLOBAL 0x0004
8c0c6f59 34
10b20b58
UD
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
e6e840f0 39
f8bc20d3
UD
40/* Do not delete object when closed. */
41#define RTLD_NODELETE 0x01000
42
e6e840f0
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) \
80ad17ca
UD
55 (_dl_mcount_wrapper_check ((void *) (fctp)), (*(fctp)) args)
56
57__BEGIN_DECLS
e6e840f0
UD
58
59/* This function calls the profiling functions. */
60extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW;
80ad17ca
UD
61
62__END_DECLS
63
e6e840f0 64#endif