From b730fbc6b86d777e80856e997ddc56fc4a851769 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Fri, 17 May 2013 01:20:39 -0400 Subject: Remove the dlopen() pointer from struct filedef. This pointer is almost never needed, and it increases the size of the filedef struct for all files (of which there are a huge number for large builds). Instead keep a bit field marking whether the file is a loaded object and if so call a new function to unload it. In load.c we keep a simple linked list of loaded objects (of which there will be very few typically) and their dlopen() pointers. --- commands.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'commands.c') diff --git a/commands.c b/commands.c index e8a9f1c..1627702 100644 --- a/commands.c +++ b/commands.c @@ -471,10 +471,9 @@ execute_file_commands (struct file *file) set_file_variables (file); /* If this is a loaded dynamic object, unload it before remaking. - Some systems don't allow to overwrite a loaded shared - library. */ - if (file->dlopen_ptr) - dlclose (file->dlopen_ptr); + Some systems don't support overwriting a loaded object. */ + if (file->loaded) + unload_file (file->name); /* Start the commands running. */ new_job (file); -- cgit v1.2.3