# Module mod_dld

This module is contained in the `mod_dld.c` file, and is not compiled in by default. It provides for loading of executable code and modules into the server at start-up time, using the GNU dld library.

## Summary

The optional dld module is a proof-of-concept piece of code which loads other modules into the server as it is configuring itself (the first time only; for now, rereading the config files cannot affect the state of loaded modules), using the GNU dynamic linking library, DLD. It isn't compiled into the server by default, since not everyone has DLD, but it works when I try it. (Famous last words.)

Note that for some reason, `LoadFile /lib/libc.a` seems to be required for just about everything.

Note: that DLD needs to read the symbol table out of the server binary when starting up; these commands will fail if the server can't find its own binary when it starts up, or if that binary is stripped.

## Directives

- LoadFile
- LoadModule

## LoadFile

Syntax: LoadFile filename filename ...
Context: server config
Status: Experimental
Module: mod_dld

The LoadFile directive links in the named object files or libraries when the server is started; this is used to load additional code which may be required for some module to work. Filename is relative to ServerRoot.

## LoadModule

Syntax: LoadModule module filename
Context: server config
Status: Experimental
Module: mod_dld

The LoadModule directive links in the object file or library filename and adds the module structure named module to the list of active modules. Module is the name of the external variable of type `module` in the file. Example:

> `LoadModule ai_backcompat_module modules/mod_ai_backcompat.o
> LoadFile /lib/libc.a`

loads the module in the modules subdirectory of the ServerRoot.