Message-ID: <327C1AD3.4033@spy.isp.nsc.ru> Date: Sat, 02 Nov 1996 20:08:51 -0800 From: "Ilya P. Ryzhenkov" Reply-To: ilya AT spy DOT isp DOT nsc DOT ru Organization: Institute of Semiconductor Physics MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp CC: djgpp-announce AT delorie DOT com Subject: ANNOUNCE : Dynamic Link Modules first release Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Greetings ! I've done developing first version of Dynamic Link Modules (DLM) environment for DJGPP. It support the following features : - run-time linking. This means that you have not to call your dynamic linked functions via pointer, they are resolved "in place". - DLM may be loaded and unloaded in any time. You only have to ensure you are not calling function or reference data which is not loaded. - undefined symbols on use cause a special-handled GPF (SIGSEGV) with message, describing DLM and function where error occured and undefined symbol. That's all for debugging yet. - DLMs can have constructor() and destructor() functions, which are called on load and unload, respectively. if constructor returns 0, DLM will be unloaded immediately, without calling to destructor. It was designed for handling unsuccesful DLM initialization, but can be used for "load-run-unload" scheme. - C++ handling. Constructors for static instances of classes will be called after constructor() function on DLM load. Destructors are called before destructor() function on DLM unload. You must load cpp.dlm in constructor() if you use C++. - EXE file in DLM environment consists of * djgpp stub. Standard stub which load COFF file called DLMSTUB * DLM stub. This is EXE program which initialize DLM-engine structures and other stuff, then loads main DLM from itself. * Main DLM. It must contain function main() which will be called after DLM was loaded and all constructors (including constructor()) was executed. If constructor() return 0 - execution fails. - you can put 'extra' symbols in your DLM which will be an external file. file contents will be placed into DLM and new symbol pointing to it will be defined. Note, that address of symbol will be the same as file contents. So, if you want to add text file, you will use char file; printf(&file); in your program to print it's contents if you added file with the symbol name _file - DLM Manager. This is external program which manage converting object to DLMs, dumping DLM structures, adding extra symbols and creating executables (you'll need DLMSTUB.EXE) All this is available at ftp://spy.isp.nsc.ru/sys/pub/dlm/ (get files.bbs for descriptions) Home page is at http://spy.isp.nsc.ru/djgpp/dlm.htm Sources are not available yet. I had no time yet to comment and document them. Feedback is welcome ! I really need your suggestion and comments. Sincerely yours, Ilya ----------------------------------------------------------------------------- mailto://ilya AT spy DOT isp DOT nsc DOT ru http://spy.isp.nsc.ru