X-Git-Url: https://git.openssl.org/gitweb/?a=blobdiff_plain;f=include%2Finternal%2Fdso.h;h=c076c5887a2a5f97f5210cc769f111aef3470984;hb=50ecedda40d0e57c635d673c1e66cb688ed9719e;hp=d371fbe4656c2db940e0c21b673b7b1dd5e2ba18;hpb=0cd0a820abc6124cf8e176fa92d620a2abf9e419;p=openssl.git diff --git a/include/internal/dso.h b/include/internal/dso.h index d371fbe465..c076c5887a 100644 --- a/include/internal/dso.h +++ b/include/internal/dso.h @@ -11,6 +11,7 @@ # define HEADER_DSO_H # include +# include #ifdef __cplusplus extern "C" { @@ -43,10 +44,9 @@ extern "C" { # define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY 0x02 /* - * The following flag controls the translation of symbol names to upper case. - * This is currently only being implemented for OpenVMS. + * Don't unload the DSO when we call DSO_free() */ -# define DSO_FLAG_UPCASE_SYMBOL 0x10 +# define DSO_FLAG_NO_UNLOAD_ON_FREE 0x04 /* * This flag loads the library with public symbols. Meaning: The exported @@ -136,6 +136,23 @@ DSO_FUNC_TYPE DSO_bind_func(DSO *dso, const char *symname); */ DSO_METHOD *DSO_METHOD_openssl(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 characters [including + * trailing zero] to accommodate 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); + +/* + * Like DSO_pathbyaddr() but instead returns a handle to the DSO for the symbol + * or NULL on error. + */ +DSO *DSO_dsobyaddr(void *addr, int flags); + /* * 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 @@ -147,68 +164,7 @@ DSO_METHOD *DSO_METHOD_openssl(void); */ void *DSO_global_lookup(const char *name); -/* 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. - */ - -void ERR_load_DSO_strings(void); - -/* Error codes for the DSO functions. */ - -/* Function codes. */ -# define DSO_F_DLFCN_BIND_FUNC 100 -# define DSO_F_DLFCN_LOAD 102 -# define DSO_F_DLFCN_MERGER 130 -# define DSO_F_DLFCN_NAME_CONVERTER 123 -# define DSO_F_DLFCN_UNLOAD 103 -# define DSO_F_DL_BIND_FUNC 104 -# define DSO_F_DL_LOAD 106 -# define DSO_F_DL_MERGER 131 -# define DSO_F_DL_NAME_CONVERTER 124 -# define DSO_F_DL_UNLOAD 107 -# define DSO_F_DSO_BIND_FUNC 108 -# define DSO_F_DSO_CONVERT_FILENAME 126 -# define DSO_F_DSO_CTRL 110 -# define DSO_F_DSO_FREE 111 -# define DSO_F_DSO_GET_FILENAME 127 -# 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_SET_FILENAME 129 -# define DSO_F_DSO_UP_REF 114 -# 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 101 -# define DSO_F_WIN32_GLOBALLOOKUP 142 -# 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_SPLITTER 136 -# define DSO_F_WIN32_UNLOAD 121 - -/* Reason codes. */ -# define DSO_R_CTRL_FAILED 100 -# define DSO_R_DSO_ALREADY_LOADED 110 -# define DSO_R_EMPTY_FILE_STRUCTURE 113 -# define DSO_R_FAILURE 114 -# define DSO_R_FILENAME_TOO_BIG 101 -# define DSO_R_FINISH_FAILED 102 -# define DSO_R_INCORRECT_FILE_SYNTAX 115 -# define DSO_R_LOAD_FAILED 103 -# define DSO_R_NAME_TRANSLATION_FAILED 109 -# define DSO_R_NO_FILENAME 111 -# define DSO_R_NULL_HANDLE 104 -# define DSO_R_SET_FILENAME_FAILED 112 -# define DSO_R_STACK_ERROR 105 -# define DSO_R_SYM_FAILURE 106 -# define DSO_R_UNLOAD_FAILED 107 -# define DSO_R_UNSUPPORTED 108 +int ERR_load_DSO_strings(void); # ifdef __cplusplus }