diff options
author | Josh Rahm <rahm@google.com> | 2024-02-09 13:17:43 -0700 |
---|---|---|
committer | Josh Rahm <rahm@google.com> | 2024-02-09 13:17:43 -0700 |
commit | 50d91022f328c6f3dd7d166967732dec9734887c (patch) | |
tree | a88b5ae0485db6caf811b569162773ffa15ebc4d /src | |
parent | ebde8665851ca21ff00685eeaf5057ccec6eb05d (diff) | |
download | wetterhorn-50d91022f328c6f3dd7d166967732dec9734887c.tar.gz wetterhorn-50d91022f328c6f3dd7d166967732dec9734887c.tar.bz2 wetterhorn-50d91022f328c6f3dd7d166967732dec9734887c.zip |
Move the harness to its own CMake project.
Diffstat (limited to 'src')
-rw-r--r-- | src/harness/main.c | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/src/harness/main.c b/src/harness/main.c deleted file mode 100644 index 1580bd6..0000000 --- a/src/harness/main.c +++ /dev/null @@ -1,69 +0,0 @@ -#include <stdio.h> - -#include <dlfcn.h> - -typedef void* dllib_t; - -typedef void* opqst_t; - -dllib_t open_library(const char* library, int* err) -{ - dllib_t lib = dlopen(library, RTLD_LAZY); - - if (!lib) { - fprintf(stderr, "Error opening shared library: %s\n", dlerror()); - *err = 1; - } - *err = 0; - return lib; -} - -void* getsym(dllib_t handle, char* sym, int* err) -{ - void* ret = dlsym(handle, sym); - if (!ret) { - fprintf(stderr, "Unable to read symbol '%s'\n", sym); - *err |= 1; - return NULL; - } - return ret; -} - -void use_library(int argc, char** argv, dllib_t lib, int* err) -{ - *err = 0; - - opqst_t (*init)(int* argc, char*** argv) = getsym(lib, "plugin_init", err); - void (*teardown)() = getsym(lib, "plugin_teardown", err); - opqst_t (*sym)(opqst_t) = getsym(lib, "handle_thing", err); - - if (*err) { - fprintf(stderr, "Unable to find symbol call_in.\n"); - return; - } - - opqst_t st = init(&argc, &argv); - for (int i = 0; i < 100000; ++ i) { - st = sym(st); - printf("stable_ptr: %p\n", st); - } - teardown(); -} - -int main(int argc, char** argv) -{ - if (!argv[0] && !argv[1]) { - fprintf(stderr, "Missing argument.\n"); - return 1; - } - - int err = 0; - dllib_t lib = open_library(argv[1], &err); - - if (err) { - return err; - } - - use_library(argc, argv, lib, &err); - return 0; -} |