ghc-8.0.2: The GHC API

Description

This module deals with the top-level issues of dynamic linking, calling the object-code linker and the byte-code linker where necessary.

Synopsis

# Documentation

Get the HValue associated with the given name.

Throws a ProgramError if loading fails or the name cannot be found.

Link a single expression, including first linking packages and modules that this expression depends on.

Raises an IO exception (ProgramError) if it can't find a compiled version of the dependents to link.

Arguments

The compilation manager provides us with a list of linkables that it considers "stable", i.e. won't be recompiled this time around. For each of the modules current linked in memory,

• if the linkable is stable (and it's the same one -- the user may have recompiled the module on the side), we keep it,
• we also implicitly unload all temporary bindings at this point.

withExtendedLinkEnv :: ExceptionMonad m => [(Name, ForeignHValue)] -> m a -> m a #

linkPackages :: HscEnv -> [UnitId] -> IO () #

Link exactly the specified packages, and their dependents (unless of course they are already linked). The dependents are linked automatically, and it doesn't matter what order you specify the input packages.

initDynLinker :: HscEnv -> IO () #

Initialise the dynamic linker. This entails

a) Calling the C initialisation procedure,

c) Loading any packages specified on the command line, now held in the -l options in v_Opt_l,
d) Loading any .o/.dll files specified on the command line, now held in ldInputs,