static struct jit_reader * jit_reader_load (const char *file_name) { reader_init_fn_type *init_fn; struct gdb_reader_funcs *funcs = NULL; if (jit_debug) fprintf_unfiltered (gdb_stdlog, _("Opening shared object %s.\n"), file_name); gdb_dlhandle_up so = gdb_dlopen (file_name); init_fn = (reader_init_fn_type *) gdb_dlsym (so, reader_init_fn_sym); if (!init_fn) error (_("Could not locate initialization function: %s."), reader_init_fn_sym); if (gdb_dlsym (so, "plugin_is_GPL_compatible") == NULL) error (_("Reader not GPL compatible.")); funcs = init_fn (); if (funcs->reader_version != GDB_READER_INTERFACE_VERSION) error (_("Reader version does not match GDB version.")); return new jit_reader (funcs, std::move (so)); }
static gcc_c_fe_context_function * load_libcc (void) { void *handle; gcc_c_fe_context_function *func; /* gdb_dlopen will call error () on an error, so no need to check value. */ handle = gdb_dlopen (STRINGIFY (GCC_C_FE_LIBCC)); func = (gcc_c_fe_context_function *) gdb_dlsym (handle, STRINGIFY (GCC_C_FE_CONTEXT)); if (func == NULL) error (_("could not find symbol %s in library %s"), STRINGIFY (GCC_C_FE_CONTEXT), STRINGIFY (GCC_C_FE_LIBCC)); return func; }