blob: f4a3317eba238e51466012bc8b9e2ccacd69474d [file] [log] [blame]
/* A small program used to check that LOCAL_WHOLE_STATIC_LIBRARIES builds
* and works properly. Here, we check that the 'foo2' function which is
* never called from main is still included in the final executable
* image.
*/
#include <stdio.h>
#include <unistd.h>
#include <dlfcn.h>
int main(int argc, char *argv[])
{
char cwd[PATH_MAX];
if (getcwd(cwd, sizeof(cwd)) == NULL) {
perror("getcwd");
return 1;
}
char buf[PATH_MAX];
sprintf(buf, "%s/libbar.so", cwd);
void* lib = dlopen(buf, RTLD_NOW);
if (lib == NULL) {
fprintf(stderr, "Could not dlopen(\"libbar.so\"): %s\n", dlerror());
return 1;
}
if (dlsym(lib, "foo2") == NULL) {
fprintf(stderr, "Symbol 'foo2' is missing from shared library!!\n");
return 2;
}
dlclose(lib);
return 0;
}