From: Vibhu M. <vi...@ho...> - 2024-04-06 00:58:40
|
The configure flag --without-dynamic-modules solves the executable image saving/loading problem. ---- Details: src/lispbibl.d contains this code below, which I'm guessing causes an import table entitled "lisp.exe" and containing function names to be placed in base/lisp.exe. Such a title is apparently what causes a problem if the executable file is renamed to something else or saved as an executable image named other than "lisp.exe". Disabling dynamic modules prevents such a table from being produced and embedded, allowing (saveinitmem "test2" :executable t) to create a successfully startable file named other than "lisp.exe". Extract from src/lispbibl.d: /* this is necessary to avoid messages like Info: resolving _mv_space by linking to __imp__mv_space (auto-import) on woe32. */ #if defined(DYNAMIC_MODULES) #if defined(WIN32_NATIVE) || defined(UNIX_CYGWIN) #define DYNAMIC_TABLES 1 #define modexp __declspec(dllexport) #define modimp __declspec(dllimport) #define EXECUTABLE_NAME "lisp.exe" #else #define DYNAMIC_TABLES 0 #define modexp #define modimp extern #endif #else #define DYNAMIC_TABLES 0 #define modexp #define modimp extern #endif Cross-check: I notice that indeed (software-type): 1. in my earlier problematic cygwin target build shows the -DDYNAMIC_MODULES flag. 2. in the new build described above doesn't show that flag. 3. in the old mingw target build that didn't exhibit the problem, doesn't show that flag, so it must have been turned off automatically for mingw. So it does look like my theory above is correct. Also, the clisp packaged with cygwin does show -DDYNAMIC_MODULES in (software-type), which may be why its builder patched his build to disable saving executable images. Vibhu |