#include <dlfcn.h>
#include <stdio.h>
#include "aa.h"
int aaSymbol;
void
sigprocmask() {
}
int
aaTest()
{
int ret = 0;
void *value;
void *libaa_handle = dlopen("libaa.so", RTLD_LAZY);
void *libc_handle = dlopen("libc.so", RTLD_LAZY);
void *libaa_sigprocmask = dlsym(libaa_handle, "sigprocmask");
void *libc_sigprocmask = dlsym(libc_handle, "sigprocmask");
dlclose(libaa_handle);
dlclose(libc_handle);
if (libaa_sigprocmask == &sigprocmask || libc_sigprocmask == &sigprocmask ||
libc_sigprocmask == libaa_sigprocmask || libaa_sigprocmask == NULL ||
libc_sigprocmask == NULL) {
printf("dlsym(handle, ...)\n FAILED\n");
printf("sigprocmask == %p\n", &sigprocmask);
printf("libaa_sigprocmask == %p\n", libaa_sigprocmask);
printf("libc_sigprocmask == %p\n", libc_sigprocmask);
return (1);
}
value = dlsym(RTLD_DEFAULT, "sigprocmask");
if (value != &sigprocmask) {
printf("dlsym(RTLD_DEFAULT, \"sigprocmask\") == %p FAILED\n", value);
printf("\twas expecting == %p (&sigprocmask)\n", &sigprocmask);
ret = 1;
}
value = dlsym(RTLD_SELF, "sigprocmask");
if (value != libaa_sigprocmask) {
printf("dlsym(RTLD_SELF, \"sigprocmask\") == %p FAILED\n", value);
printf("\twas expecting == %p (libaa_sigprocmask)\n", libaa_sigprocmask);
printf("FAILED\n");
ret = 1;
}
value = dlsym(RTLD_NEXT, "sigprocmask");
if (value != libc_sigprocmask) {
printf("dlsym(RTLD_NEXT, \"sigprocmask\") == %p FAILED\n", value);
printf("\twas expecting == %p (libc_sigprocmask)\n", libc_sigprocmask);
ret = 1;
}
value = dlsym(NULL, "sigprocmask");
if (value != libaa_sigprocmask) {
printf("dlsym(NULL, \"sigprocmask\") == %p FAILED\n", value);
printf("\twas expecting == %p (libaa_sigprocmask)\n", libaa_sigprocmask);
ret = 1;
}
return (ret);
}