www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/11/02/10:20:32

Message-ID: <327C1AD3.4033@spy.isp.nsc.ru>
Date: Sat, 02 Nov 1996 20:08:51 -0800
From: "Ilya P. Ryzhenkov" <ilya AT spy DOT isp DOT nsc DOT ru>
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

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

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019