[LLVMdev] how to get and modify a global variable inside a module
Clemens Hammacher
hammacher at cs.uni-saarland.de
Wed Dec 5 07:40:22 PST 2012
On 12/5/12 2:49 PM, Dong Chen wrote:
> here is the thing. i want to know the exact main memory address of the
> Global Varibale's address when ExecutionEngine execut the *.ll code. further
> more, i want to change the address, is it possible?
I assume you want to adjust the value at that address, right?
Then you might want to check the ExecutionEngine::getPointerToGlobal
method. You can just cast the void* to the appropriate pointer type, and
write to it.
If you really want to change the address of the GlobalValue (i.e. the
mapping from GlobalValue to main memory address), you can use the
addGlobalMapping or updateGlobalMapping methods, but this should only be
done before JITting any function which uses the GlobalValue. Otherwise
you have to call recompileAndRelinkFunction for each function that uses
the GlobalValue.
Cheers,
Clemens
More information about the llvm-dev
mailing list