mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
Fix recursive dlopen.
The ability to recursively call dlopen is useful for malloc implementations that wish to load other dynamic modules that implement reentrant/AS-safe functions to use in their own implementation. Given that a user malloc implementation may be called by an ongoing dlopen to allocate memory the user malloc implementation interrupts dlopen and if it calls dlopen again that's a reentrant call. This patch fixes the issues with the ld.so.cache mapping and the _r_debug assertion which prevent this from working as expected. See: https://sourceware.org/ml/libc-alpha/2014-12/msg00446.html
This commit is contained in:
13
dlfcn/moddummy2.c
Normal file
13
dlfcn/moddummy2.c
Normal file
@@ -0,0 +1,13 @@
|
||||
/* Provide a dummy DSO for tst-rec-dlopen to use. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
dummy2 (void)
|
||||
{
|
||||
printf ("Called dummy2()\n");
|
||||
/* If the outer dlopen is not dummy1 (becuase of some error)
|
||||
then tst-rec-dlopen will see a value of -1 as the returned
|
||||
result and fail. */
|
||||
return -1;
|
||||
}
|
Reference in New Issue
Block a user