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