| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | #include <fcntl.h>#include <stdlib.h>#include <stdio.h>#include <dlfcn.h>#include "thread_db.h"extern void _dlinfo();int main(int argc, char **argv) {	void *handle;	td_err_e (*td_init_p) (void);	fprintf(stderr, "Attempting to dlopen() libpthread.so with RTLD_NOW\n");	handle = dlopen ("libpthread.so", RTLD_NOW);	if (!handle) {		fputs (dlerror(), stderr);		exit(1);	}	td_init_p = dlsym (handle, "__pthread_initialize");	if (td_init_p == NULL) {	    fprintf(stderr, "yipe!  __pthread_initialize() failed!\n");	    return EXIT_FAILURE;	}#if 0 //def __UCLIBC__	_dlinfo();   /* not supported by ld.so.2 */#endif	dlclose(handle);	fprintf(stderr, "Attempting to dlopen() libpthread.so with RTLD_LAZY\n");	handle = dlopen ("libpthread.so", RTLD_LAZY);	if (!handle) {		fputs (dlerror(), stderr);		exit(1);	}	td_init_p = dlsym (handle, "__pthread_initialize");	if (td_init_p == NULL) {	    fprintf(stderr, "yipe!  __pthread_initialize() failed!");	    return EXIT_FAILURE;	}#if 0 //def __UCLIBC__	_dlinfo();   /* not supported by ld.so.2 */#endif	dlclose(handle);	fprintf(stderr, "Everything worked as expected.\n");	return EXIT_SUCCESS;}
 |