view gen/linker.h @ 979:523bf4f166bc

Fix some assembler issues: The assembler was miscompiling "add" (specifically, the "add reg/mem, imm" variations). The change that caused this seems to have been made because without it, some "add"s didn't compile at all. This patch reverts the previous change, and makes sure assembler operands are remapped correctly even though the input operands auto-generated due to updating operations aren't explicitly used.
author Frits van Bommel <fvbommel wxs.nl>
date Wed, 18 Feb 2009 21:46:14 +0100
parents 075c1272a01d
children a8cb25d478c4
line wrap: on
line source

#ifndef LDC_GEN_LINKER_H
#define LDC_GEN_LINKER_H

#include <vector>

namespace llvm
{
    class Module;
}

/**
 * Links the modules given in MV in to dst.
 * @param dst Destination module.
 * @param MV Vector of modules to link in to destination.
 */
void linkModules(llvm::Module* dst, const std::vector<llvm::Module*>& MV);

/**
 * Link an executable.
 * @param argv0 the argv[0] value as passed to main
 * @return 0 on success.
 */
int linkExecutable(const char* argv0);

/**
 * Link an executable only from object files.
 * @param argv0 the argv[0] value as passed to main
 * @return 0 on success.
 */
int linkObjToExecutable(const char* argv0);

/**
 * Delete the executable that was previously linked with linkExecutable.
 */
void deleteExecutable();

/**
 * Runs the executable that was previously linked with linkExecutable.
 * @return the return status of the executable.
 */
int runExectuable();

#endif // LDC_GEN_LINKER_H