xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/bits/dlfcn.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* System dependent definitions for run-time dynamic loading.
2*53ee8cc1Swenshuai.xi    Copyright (C) 1996, 1997, 1999, 2000, 2001, 2004
3*53ee8cc1Swenshuai.xi 	Free Software Foundation, Inc.
4*53ee8cc1Swenshuai.xi    This file is part of the GNU C Library.
5*53ee8cc1Swenshuai.xi 
6*53ee8cc1Swenshuai.xi    The GNU C Library is free software; you can redistribute it and/or
7*53ee8cc1Swenshuai.xi    modify it under the terms of the GNU Lesser General Public
8*53ee8cc1Swenshuai.xi    License as published by the Free Software Foundation; either
9*53ee8cc1Swenshuai.xi    version 2.1 of the License, or (at your option) any later version.
10*53ee8cc1Swenshuai.xi 
11*53ee8cc1Swenshuai.xi    The GNU C Library is distributed in the hope that it will be useful,
12*53ee8cc1Swenshuai.xi    but WITHOUT ANY WARRANTY; without even the implied warranty of
13*53ee8cc1Swenshuai.xi    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14*53ee8cc1Swenshuai.xi    Lesser General Public License for more details.
15*53ee8cc1Swenshuai.xi 
16*53ee8cc1Swenshuai.xi    You should have received a copy of the GNU Lesser General Public
17*53ee8cc1Swenshuai.xi    License along with the GNU C Library; if not, write to the Free
18*53ee8cc1Swenshuai.xi    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19*53ee8cc1Swenshuai.xi    02111-1307 USA.  */
20*53ee8cc1Swenshuai.xi 
21*53ee8cc1Swenshuai.xi #ifndef _DLFCN_H
22*53ee8cc1Swenshuai.xi # error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
23*53ee8cc1Swenshuai.xi #endif
24*53ee8cc1Swenshuai.xi 
25*53ee8cc1Swenshuai.xi /* The MODE argument to `dlopen' contains one of the following: */
26*53ee8cc1Swenshuai.xi #define RTLD_LAZY	0x0001	/* Lazy function call binding.  */
27*53ee8cc1Swenshuai.xi #define RTLD_NOW	0x0002	/* Immediate function call binding.  */
28*53ee8cc1Swenshuai.xi #define RTLD_BINDING_MASK  0x3	/* Mask of binding time value.  */
29*53ee8cc1Swenshuai.xi #define RTLD_NOLOAD	0x00008	/* Do not load the object.  */
30*53ee8cc1Swenshuai.xi #define RTLD_DEEPBIND	0x00010	/* Use deep binding.  */
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi /* If the following bit is set in the MODE argument to `dlopen',
33*53ee8cc1Swenshuai.xi    the symbols of the loaded object and its dependencies are made
34*53ee8cc1Swenshuai.xi    visible as if the object were linked directly into the program.  */
35*53ee8cc1Swenshuai.xi #define RTLD_GLOBAL	0x0004
36*53ee8cc1Swenshuai.xi 
37*53ee8cc1Swenshuai.xi /* Unix98 demands the following flag which is the inverse to RTLD_GLOBAL.
38*53ee8cc1Swenshuai.xi    The implementation does this by default and so we can define the
39*53ee8cc1Swenshuai.xi    value to zero.  */
40*53ee8cc1Swenshuai.xi #define RTLD_LOCAL      0
41*53ee8cc1Swenshuai.xi 
42*53ee8cc1Swenshuai.xi /* Do not delete object when closed.  */
43*53ee8cc1Swenshuai.xi #define RTLD_NODELETE	0x01000
44*53ee8cc1Swenshuai.xi 
45*53ee8cc1Swenshuai.xi #ifdef __USE_GNU
46*53ee8cc1Swenshuai.xi /* To support profiling of shared objects it is a good idea to call
47*53ee8cc1Swenshuai.xi    the function found using `dlsym' using the following macro since
48*53ee8cc1Swenshuai.xi    these calls do not use the PLT.  But this would mean the dynamic
49*53ee8cc1Swenshuai.xi    loader has no chance to find out when the function is called.  The
50*53ee8cc1Swenshuai.xi    macro applies the necessary magic so that profiling is possible.
51*53ee8cc1Swenshuai.xi    Rewrite
52*53ee8cc1Swenshuai.xi 	foo = (*fctp) (arg1, arg2);
53*53ee8cc1Swenshuai.xi    into
54*53ee8cc1Swenshuai.xi         foo = DL_CALL_FCT (fctp, (arg1, arg2));
55*53ee8cc1Swenshuai.xi */
56*53ee8cc1Swenshuai.xi # define DL_CALL_FCT(fctp, args) \
57*53ee8cc1Swenshuai.xi   (_dl_mcount_wrapper_check ((void *) (fctp)), (*(fctp)) args)
58*53ee8cc1Swenshuai.xi 
59*53ee8cc1Swenshuai.xi __BEGIN_DECLS
60*53ee8cc1Swenshuai.xi 
61*53ee8cc1Swenshuai.xi /* This function calls the profiling functions.  */
62*53ee8cc1Swenshuai.xi extern void _dl_mcount_wrapper_check (void *__selfpc) __THROW;
63*53ee8cc1Swenshuai.xi 
64*53ee8cc1Swenshuai.xi __END_DECLS
65*53ee8cc1Swenshuai.xi 
66*53ee8cc1Swenshuai.xi #endif
67