[llvm-commits] [patch] RFC: BrainF -jit fix

Chris Lattner clattner at apple.com
Wed Jun 17 11:46:53 PDT 2009


Hi Xerxes,

I'm sorry I didn't see this email, this should be fixed on mainline.

-Chris

On Jun 17, 2009, at 5:49 AM, Xerxes Rånby wrote:

> 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
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list