On Sat 08 Mar 2014 22:30:59 Thomas Klausner wrote: > There is a bug in dlopen(3). The NOTES section claims: > > "The symbols RTLD_DEFAULT and RTLD_NEXT are defined by <dlfcn.h> only > when _GNU_SOURCE was defined before including it." > > However, this is not correct. > > From dlfcn.h on a "Gentoo Base System release 2.1": > #ifdef __USE_GNU > ... > # define RTLD_NEXT ((void *) -1l) > ... > # define RTLD_DEFAULT ((void *) 0) > ... > > You can verify this by compiling the attached program. For me it gives: > test.c: In function `main': > test.c:8: error: `RTLD_NEXT' undeclared (first use in this function) > test.c:8: error: (Each undeclared identifier is reported only once > test.c:8: error: for each function it appears in.) > > It works if I set "__USE_GNU_" instead. > > Please also check the "Glibc extensions: dladdr() and dlvsym()" > section, it also mentions _GNU_SOURCE. the man page is correct. you must define _GNU_SOURCE before including any headers. you must never use the __USE_XXX defines directly. see feature_test_macros(7) for details as the dlopen() man page references. -mike
Attachment:
signature.asc
Description: This is a digitally signed message part.