Dynamic linking for mobile programs

  • Anurag Acharya
  • Joel Saltz
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1222)


Dynamic linking provides functionality that is necessary for secure flexible use of mobile programs but it introduces a new class of runtime errors — unbound procedure names. In this chapter, we present a compiler-directed technique for safe dynamic linking for mobile programs. Our technique guarantees that linking failures can occur only when a program arrives at a new execution site and that this failure can be delivered to the program as an error code or an exception. We use interprocedural analysis to identify the set of names that must be linked at the different sites the program executes on. We use a combination of runtime and compile-time techniques to identify the calling context and to link only the names needed in that context. Our technique is able to handle recursive programs as well as separately compiled code that may itself be able to move. We discuss language constructs for controlling the behavior of dynamic linking and the implication of some of these constructs for application structure.


Program Representation Calling Context Program Point Recursive Program Return Result 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    G. Agrawal, A. Acharya, and J. Saltz. An interprocedural framework for placement of asynchronous I/O operations. In Proceedings of the 1996 International Conference on Supercomputing, pages 358–65, May 1996.Google Scholar
  2. 2.
    G. Agrawal, J. Saltz, and R. Das. Interprocedural partial redundancy elimination and its application to distributed memory compilation. In Proceedings of the ACM SIGPLAN'95 Conference on Programming Language Design and Implementation, pages 258–69, Jun 1995.Google Scholar
  3. 3.
    A. Birrell, G. Nelson, S. Owicki, and E. Wobber. Network objects. In Proceedings of the 14th ACM Symposium on Operating System Principles, pages 217–30, Dec 1993.Google Scholar
  4. 4.
    L. Cardelli. A Language With Distributed Scope. In Proceedings of the 22nd ACM Symposium on Principles of Programming Languages, Jan. 1995.Google Scholar
  5. 5.
    L. Cardelli. Personal communication, Nov 1996.Google Scholar
  6. 6.
    L. Cardelli. Mobile Computation, chapter unknown. Springer Verlag, 1997.Google Scholar
  7. 7.
    C. Cowan, T. Autrey, C. Krasic, C. Pu, and J. Walpole. Fast concurrent dynamic linking for an adaptive operating system. In Proceedings of the Third International Conference on Configurable Distributed Systems, pages 108–15, May 1996.Google Scholar
  8. 8.
    F.C.Knabe. Language and compiler support for mobile agents. PhD Thesis, Carnegie Mellon University, Nov. 1995.Google Scholar
  9. 9.
    D. Gelernter and S. Jagannathan. Environments as first class objects. In Proceedings of the 14th Annual ACM Symposium on Principles of Programming Languages, pages 98-110, Jan 1987.Google Scholar
  10. 10.
    J. Gosling and H. McGilton. The Java Language Environment White Paper, 1995.Google Scholar
  11. 11.
    U.R. Gray. Agent TCL: A Flexible and Secure Mobile-agent System. In Proceedings of the Fourth Annual Tcl/Tk Workshop (TCL 96), July 1996.Google Scholar
  12. 12.
    E. Ho, C. Wei-Chau, and L. Leung. Optimizing the performance of dynamically-linked programs. In Proceedings of the 1995 USENIX Technical Conference, pages 225–33, Jan 1995.Google Scholar
  13. 13.
    S. Jagannathan. Dynamic modules in higher-order languages. In Proceedings of the 1994 International Conference on Computer Languages, pages 74–87, May 1994.Google Scholar
  14. 14.
    J. Miller and G. Rozas. Free variables and first-class environments. Lisp and Symbolic Computation, 4(2): 107–41, Apr 1991.Google Scholar
  15. 15.
    M. Nelson and G. Hamilton. High performance dynamic linking through caching. In Proceedings of the Summer 1993 USENIX Conference, pages 253–65, 1993.Google Scholar
  16. 16.
    D. Orr, J. Bonn, J. Lepreau, and R. Mecklenburg. Fast and flexible shared libraries. In Proceedings of the Summer 1993 USENIX Conference, pages 237–51, 1993.Google Scholar
  17. 17.
    C. Queinnec and D. D. Roure. Sharing code through first-class environments. In Proceedings of the 1996 International Conference on Functional Programming, May 1996.Google Scholar
  18. 18.
    M. Ranganathan, A. Acharya, S. Sharma, and J. Saltz. Network-aware Mobile Programs. In Proceedings of the USENIX 1997 Annual Technical Conference, pages 91–104, Jan 1997.Google Scholar
  19. 19.
    M. Shapiro. Flexible bindings for fine-grain distributed objects. Technical Report 2007, Institut National de Recherche et en Automatique, August 1993.Google Scholar
  20. 20.
    M. Shapiro. A binding protocol for distributed shared objects. In Proceedings of the 14th International Conference on Distributed Systems, Jun 1994.Google Scholar
  21. 21.
    E. Sirer, M. Fiucynski, P. Pardyak, and B. Bershad. Safe dynamic linking in an extensible operating system. In The First Workshop on Compiler Support for System Software, Feb 1996.Google Scholar
  22. 22.
    J. White. Talk at the DAGS'96 Workshop on Transportable Agents, Sep 1996.Google Scholar
  23. 23.
    J. White. Telescript Technology: Mobile Agents, 1996. Scholar
  24. 24.
    M. Wolfe. High Performance Compilers for Parallel Computing. Addison-Wesley, 1995.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • Anurag Acharya
  • Joel Saltz

There are no affiliations available

Personalised recommendations