s4:torture: Adapt KDC canon test to Heimdal upstream changes
[samba.git] / third_party / heimdal / lib / roken / dlfcn.hin
1 /***********************************************************************
2  * Copyright (c) 2009, Secure Endpoints Inc.
3  * All rights reserved.
4  * 
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 
9  * - Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  * 
12  * - Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in
14  *   the documentation and/or other materials provided with the
15  *   distribution.
16  * 
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
20  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
21  * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
28  * OF THE POSSIBILITY OF SUCH DAMAGE.
29  * 
30  **********************************************************************/
31
32 #ifndef __dlfcn_h__
33 #define __dlfcn_h__
34
35 #include <windows.h>
36
37 #ifndef ROKEN_LIB_FUNCTION
38 #ifdef _WIN32
39 #define ROKEN_LIB_FUNCTION
40 #define ROKEN_LIB_CALL     __cdecl
41 #else
42 #define ROKEN_LIB_FUNCTION
43 #define ROKEN_LIB_CALL
44 #endif
45 #endif
46
47 #ifdef _WIN32
48 typedef int (__stdcall *DLSYM_RET_TYPE)();
49 #else
50 #define DLSYM_RET_TYPE void *
51 #endif
52
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56
57 /* Relocations are performed when the object is loaded. */
58 #define RTLD_NOW    0
59
60 /* Relocations are performed at an implementation-defined time.
61  * Windows API does not support lazy symbol resolving (when first reference
62  * to a given symbol occurs). So RTLD_LAZY implementation is same as RTLD_NOW.
63  */
64 #define RTLD_LAZY   RTLD_NOW
65
66 /* All symbols are available for relocation processing of other modules. */
67 #define RTLD_GLOBAL (1 << 1)
68
69 /* All symbols are not made available for relocation processing by other modules. */
70 #define RTLD_LOCAL  (1 << 2)
71
72 /* These two were added in The Open Group Base Specifications Issue 6.
73  * Note: All other RTLD_* flags in any dlfcn.h are not standard compliant.
74  */
75
76 /* The symbol lookup happens in the normal global scope. */
77 #define RTLD_DEFAULT    ((void *)0LL)
78
79 /* Specifies the next object after this one that defines name. */
80 #define RTLD_NEXT       ((void *)-1LL)
81
82 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
83 dlclose(void *);
84
85 ROKEN_LIB_FUNCTION char  * ROKEN_LIB_CALL
86 dlerror(void);
87
88 ROKEN_LIB_FUNCTION void  * ROKEN_LIB_CALL
89 dlopen(const char *, int);
90
91 ROKEN_LIB_FUNCTION DLSYM_RET_TYPE ROKEN_LIB_CALL
92 dlsym(void *, const char *);
93
94 typedef struct Dl_info
95 {
96    const char *dli_fname;  /* Filename of defining object (thread unsafe and reused on every call to dladdr) */
97    void       *dli_fbase;  /* Load address of that object */
98    const char *dli_sname;  /* Name of nearest lower symbol */
99    void       *dli_saddr;  /* Exact value of nearest symbol */
100 } Dl_info, Dl_info_t;
101
102 ROKEN_LIB_FUNCTION int ROKEN_LIB_CALL
103 dladdr(void *addr, Dl_info *dli);
104
105 #ifdef __cplusplus
106 } /* extern "C" */
107 #endif
108
109 #endif  /* __dlfcn_h__ */