[llvm-commits] [patch] RFC: BrainF -jit fix
Xerxes Rånby
xerxes at zafena.se
Wed Jun 17 05:49:19 PDT 2009
Xerxes Rånby skrev:
> This patch makes the BrainF -jit work once again, the fix are similar
> to Chris r73595 change for lli.
>
> BrainF -jit /home/xerxes/hello.bf
> ------- Running JIT -------
> Hello World!
>
> instead of
>
> BrainF -jit /home/xerxes/hello.bf
> ------- Running JIT -------
> Segmentation fault
>
> Cheers
> Xerxes
Rather than having to rely on using a macro to create
InitializeX86Target() i would have been happy to use
InitializeAllTargets() like this:
Index: llvm/examples/BrainF/BrainFDriver.cpp
===================================================================
--- llvm.orig/examples/BrainF/BrainFDriver.cpp 2009-06-17
12:20:14.000000000 +0200
+++ llvm/examples/BrainF/BrainFDriver.cpp 2009-06-17
14:36:00.000000000 +0200
@@ -34,6 +34,7 @@
#include "llvm/ExecutionEngine/JIT.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ManagedStatic.h"
+#include "llvm/InitializeAllTargets.h"
#include <fstream>
#include <iostream>
using namespace llvm;
@@ -133,6 +134,9 @@
abort();
}
+ // If we have a native target, initialize it to ensure it is linked in.
+ InitializeAllTargets();
+
//Write it out
if (JIT) {
std::cout << "------- Running JIT -------\n";
================================================ snap
Yet llvm/InitializeAllTargets.h semms unusable for this purpose, it
simple spits out:
llvm[0]: Linking Debug executable BrainF
/home/xerxes/llvm/examples/BrainF/Debug/BrainFDriver.o: In function
`InitializeAllTargets':
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeCppBackendTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeMSILTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeCBackendTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeMSP430Target()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeXCoreTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializePIC16Target()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeCellSPUTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeMipsTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeARMTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeIA64Target()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeAlphaTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializePowerPCTarget()'
/home/xerxes/llvm/include/llvm/Config/Targets.def:26: undefined
reference to `llvm::InitializeSparcTarget()'
during linking.
Anyone know a better way to initialize the JIT without having to rely on
arch dependent code?
Cheers
Xerxes
More information about the llvm-commits
mailing list