Dynamic Dynamic Loader logo

Dynamic Dynamic Loader (DDL) Project

NMSU

HOME

EVENT TOOL FRAMEWORK

DOCUMENTATION

DOWNLOAD

WRAPPER REDIRECTION

TABLE BASED REDIRECTION

REDIRECTION USING TCL

C++ REDIRECTION

FAQ

RESEARCH GROUP

PUBLICATIONS

FUTURE DIRECTIONS



Back to PLEASE Lab



Introduction

Maintenance of software requires an ability to understand what the current system is doing, and the ability to change the system and deploy a new, and hopefully better, version. Towards these ends, the creation of run-time introspective and manipulative mechanisms has been researched and practiced heavily.

While new languages (such as Java) and new frameworks (such as J2EE and .NET) offer some opportunity to provide these services, there is still much software running on legacy platforms, and much software still being created for these platforms.

Dynamic link libraries, also called shared libraries, delay the binding of externally needed symbols (functions, methods, global data) to the runtime of the program. An extra module, the dynamic linker, is loaded with the program, and accomplishes the dynamic linking necessary for the program to complete its execution. In this sense, the dynamic link library platform offers a potential foundation for building a true component-based software system framework.

It also is a natural place to allow introspection and manipulation to occur. Since symbols are not yet bound, a dynamic linker could allow a tool builder access to the binding operation, and allow the tool to take a variety of actions. Inserting wrappers for tracing, security, assertion checks, and many other uses ought to be possible. Redirecting a binding to another symbol should be supported. Finally, run-time modification of bindings should be possible. All of this is feasible without any modification or translation of the object code of the application.

DDL is a framework of modifications and extensions to the dynamic linker that allow us to have dynamic control over the linking process, and to implement the full range of desired features listed above. DDL allows powerful control over the linking process, enables the easy construction of runtime monitoring tools, and supports the runtime evolution of dynamically linked programs. DDL is a modification of the GNU dynamic loader, which is part of the GNU C library. Our current tests have only been on the GNU/Linux platform, although the GNU libraries (and the dynamic linker) are ported to many other platform.



National Science Foundation This work was supported in part by the National Science Foundation under grants CCR-0306457, EIA-9810732 and EIA-0220590. The content of the information does not necessarily reflect the position or the policy of the government and no official endorsement should be inferred.