mirror of
https://github.com/openssl/openssl.git
synced 2024-11-27 20:14:20 +08:00
Add the possibility to have symbols loaded globally with DSO.
This commit is contained in:
parent
98cec7fc7b
commit
e666c4599f
3
CHANGES
3
CHANGES
@ -4,6 +4,9 @@
|
||||
|
||||
Changes between 0.9.7c and 0.9.8 [xx XXX xxxx]
|
||||
|
||||
*) Add the possibility to load symbols globally with DSO.
|
||||
[Götz Babin-Ebell <babin-ebell@trustcenter.de> via Richard Levitte]
|
||||
|
||||
*) Add the functions ERR_set_mark() and ERR_pop_to_mark() for better
|
||||
control of the error stack.
|
||||
[Richard Levitte]
|
||||
|
@ -95,6 +95,13 @@ extern "C" {
|
||||
*/
|
||||
#define DSO_FLAG_UPCASE_SYMBOL 0x10
|
||||
|
||||
/* This flag loads the library with public symbols.
|
||||
* Meaning: The exported symbols of this library are public
|
||||
* to all libraries loaded after this library.
|
||||
* At the moment only implemented in unix.
|
||||
*/
|
||||
#define DSO_FLAG_GLOBAL_SYMBOLS 0x20
|
||||
|
||||
|
||||
typedef void (*DSO_FUNC_TYPE)(void);
|
||||
|
||||
|
@ -140,13 +140,19 @@ static int dlfcn_load(DSO *dso)
|
||||
void *ptr = NULL;
|
||||
/* See applicable comments in dso_dl.c */
|
||||
char *filename = DSO_convert_filename(dso, NULL);
|
||||
int flags = DLOPEN_FLAG;
|
||||
|
||||
if(filename == NULL)
|
||||
{
|
||||
DSOerr(DSO_F_DLFCN_LOAD,DSO_R_NO_FILENAME);
|
||||
goto err;
|
||||
}
|
||||
ptr = dlopen(filename, DLOPEN_FLAG);
|
||||
|
||||
#ifdef RTLD_GLOBAL
|
||||
if (dso->flags & DSO_FLAG_GLOBAL_SYMBOLS)
|
||||
flags |= RTLD_GLOBAL;
|
||||
#endif
|
||||
ptr = dlopen(filename, flags);
|
||||
if(ptr == NULL)
|
||||
{
|
||||
DSOerr(DSO_F_DLFCN_LOAD,DSO_R_LOAD_FAILED);
|
||||
|
Loading…
Reference in New Issue
Block a user