Index: openssl/crypto/dso/dso.h |
=================================================================== |
--- openssl/crypto/dso/dso.h (revision 105093) |
+++ openssl/crypto/dso/dso.h (working copy) |
@@ -170,6 +170,11 @@ |
/* [De]Initialisation handlers. */ |
int (*init)(DSO *dso); |
int (*finish)(DSO *dso); |
+ |
+ /* Return pathname of the module containing location */ |
+ int (*pathbyaddr)(void *addr,char *path,int sz); |
+ /* Perform global symbol lookup, i.e. among *all* modules */ |
+ void *(*globallookup)(const char *symname); |
} DSO_METHOD; |
/**********************************************************************/ |
@@ -183,7 +188,7 @@ |
* for use in the dso_bind handler. All in all, let each |
* method control its own destiny. "Handles" and such go in |
* a STACK. */ |
- STACK *meth_data; |
+ STACK_OF(void) *meth_data; |
int references; |
int flags; |
/* For use by applications etc ... use this for your bits'n'pieces, |
@@ -296,6 +301,30 @@ |
/* If VMS is defined, use shared images. If not, return NULL. */ |
DSO_METHOD *DSO_METHOD_vms(void); |
+/* This function writes null-terminated pathname of DSO module |
+ * containing 'addr' into 'sz' large caller-provided 'path' and |
+ * returns the number of characters [including trailing zero] |
+ * written to it. If 'sz' is 0 or negative, 'path' is ignored and |
+ * required amount of charachers [including trailing zero] to |
+ * accomodate pathname is returned. If 'addr' is NULL, then |
+ * pathname of cryptolib itself is returned. Negative or zero |
+ * return value denotes error. |
+ */ |
+int DSO_pathbyaddr(void *addr,char *path,int sz); |
+ |
+/* This function should be used with caution! It looks up symbols in |
+ * *all* loaded modules and if module gets unloaded by somebody else |
+ * attempt to dereference the pointer is doomed to have fatal |
+ * consequences. Primary usage for this function is to probe *core* |
+ * system functionality, e.g. check if getnameinfo(3) is available |
+ * at run-time without bothering about OS-specific details such as |
+ * libc.so.versioning or where does it actually reside: in libc |
+ * itself or libsocket. */ |
+void *DSO_global_lookup(const char *name); |
+ |
+/* If BeOS is defined, use shared images. If not, return NULL. */ |
+DSO_METHOD *DSO_METHOD_beos(void); |
+ |
/* BEGIN ERROR CODES */ |
/* The following lines are auto generated by the script mkerr.pl. Any changes |
* made after this point may be overwritten when the script is next run. |
@@ -305,6 +334,11 @@ |
/* Error codes for the DSO functions. */ |
/* Function codes. */ |
+#define DSO_F_BEOS_BIND_FUNC 144 |
+#define DSO_F_BEOS_BIND_VAR 145 |
+#define DSO_F_BEOS_LOAD 146 |
+#define DSO_F_BEOS_NAME_CONVERTER 147 |
+#define DSO_F_BEOS_UNLOAD 148 |
#define DSO_F_DLFCN_BIND_FUNC 100 |
#define DSO_F_DLFCN_BIND_VAR 101 |
#define DSO_F_DLFCN_LOAD 102 |
@@ -324,22 +358,29 @@ |
#define DSO_F_DSO_FREE 111 |
#define DSO_F_DSO_GET_FILENAME 127 |
#define DSO_F_DSO_GET_LOADED_FILENAME 128 |
+#define DSO_F_DSO_GLOBAL_LOOKUP 139 |
#define DSO_F_DSO_LOAD 112 |
#define DSO_F_DSO_MERGE 132 |
#define DSO_F_DSO_NEW_METHOD 113 |
+#define DSO_F_DSO_PATHBYADDR 140 |
#define DSO_F_DSO_SET_FILENAME 129 |
#define DSO_F_DSO_SET_NAME_CONVERTER 122 |
#define DSO_F_DSO_UP_REF 114 |
+#define DSO_F_GLOBAL_LOOKUP_FUNC 138 |
+#define DSO_F_PATHBYADDR 137 |
#define DSO_F_VMS_BIND_SYM 115 |
#define DSO_F_VMS_LOAD 116 |
#define DSO_F_VMS_MERGER 133 |
#define DSO_F_VMS_UNLOAD 117 |
#define DSO_F_WIN32_BIND_FUNC 118 |
#define DSO_F_WIN32_BIND_VAR 119 |
+#define DSO_F_WIN32_GLOBALLOOKUP 142 |
+#define DSO_F_WIN32_GLOBALLOOKUP_FUNC 143 |
#define DSO_F_WIN32_JOINER 135 |
#define DSO_F_WIN32_LOAD 120 |
#define DSO_F_WIN32_MERGER 134 |
#define DSO_F_WIN32_NAME_CONVERTER 125 |
+#define DSO_F_WIN32_PATHBYADDR 141 |
#define DSO_F_WIN32_SPLITTER 136 |
#define DSO_F_WIN32_UNLOAD 121 |