// RUN: %clangxx_tsan -O1 %s -DBUILD_SO -fPIC -shared -o %t-so.so
// RUN: %clangxx_tsan -O1 %s -o %t && %run %t 2>&1 | FileCheck %s

// If we mention TSAN_OPTIONS, the test won't run from test_output.sh script.

// Test case for
// https://code.google.com/p/thread-sanitizer/issues/detail?id=80

#ifdef BUILD_SO

#include <stdio.h>

extern "C"
void sofunc() {
  fprintf(stderr, "HELLO FROM SO\n");
}

#else  // BUILD_SO

#include <dlfcn.h>
#include <stdio.h>
#include <stddef.h>
#include <unistd.h>
#include <string>

void *lib;
void *lib2;

struct Closer {
  ~Closer() {
    dlclose(lib);
    fprintf(stderr, "CLOSED SO\n");
  }
};
static Closer c;

int main(int argc, char *argv[]) {
  lib = dlopen((std::string(argv[0]) + std::string("-so.so")).c_str(),
      RTLD_NOW|RTLD_NODELETE);
  if (lib == 0) {
    printf("error in dlopen: %s\n", dlerror());
    return 1;
  }
  void *f = dlsym(lib, "sofunc");
  if (f == 0) {
    printf("error in dlsym: %s\n", dlerror());
    return 1;
  }
  ((void(*)())f)();
  return 0;
}

#endif  // BUILD_SO

// CHECK: HELLO FROM SO
// CHECK-NOT: Inconsistency detected by ld.so
// CHECK: CLOSED SO

