Mail Archives: djgpp/1996/11/02/10:20:32
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 -