| 1234567891011121314151617181920212223242526272829303132333435363738 | #include <stdio.h>#include <pthread.h>void __attribute__((constructor)) libtest2_ctor(void);void libtest2_ctor(void){    printf("libtest2: constructor!\n");}void __attribute__((destructor)) libtest2_dtor(void);void libtest2_dtor(void){    printf("libtest2: destructor!\n");}void function1(void);void function1(void){    printf("libtest2: I am function1!\n");}void __attribute__((weak)) function2(void);void function2(void){    printf("libtest2: I am weak function2!\n");}int libtest2_func(const char *s);int libtest2_func(const char *s){    printf( "libtest2: function1 = %p\n"	    "libtest2: function2 = %p\n",	    function1, function2);    function1();    function2();    return 0;}
 |