| #include "dylib.h" | |
| #include <limits.h> | |
| #include <stdio.h> | |
| #include <stdlib.h> | |
| #include <string.h> | |
| int main(int argc, char const *argv[]) { | |
| const char *a_name = "loadunload_a"; | |
| const char *c_name = "loadunload_c"; | |
| void *a_dylib_handle = NULL; | |
| void *c_dylib_handle = NULL; // Set break point at this line for test_lldb_process_load_and_unload_commands(). | |
| int (*a_function)(void); | |
| a_dylib_handle = dylib_open(a_name); | |
| if (a_dylib_handle == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(1); | |
| } | |
| a_function = (int (*)())dylib_get_symbol(a_dylib_handle, "a_function"); | |
| if (a_function == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(2); | |
| } | |
| printf("First time around, got: %d\n", a_function()); | |
| dylib_close(a_dylib_handle); | |
| c_dylib_handle = dylib_open(c_name); | |
| if (c_dylib_handle == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(3); | |
| } | |
| a_function = (int (*)())dylib_get_symbol(c_dylib_handle, "c_function"); | |
| if (a_function == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(4); | |
| } | |
| a_dylib_handle = dylib_open(a_name); | |
| if (a_dylib_handle == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(5); | |
| } | |
| a_function = (int (*)())dylib_get_symbol(a_dylib_handle, "a_function"); | |
| if (a_function == NULL) { | |
| fprintf(stderr, "%s\n", dylib_last_error()); | |
| exit(6); | |
| } | |
| printf("Second time around, got: %d\n", a_function()); | |
| dylib_close(a_dylib_handle); | |
| int LLDB_DYLIB_IMPORT d_function(void); | |
| printf("d_function returns: %d\n", d_function()); | |
| return 0; | |
| } |