search for: getorinsertglobal

Displaying 14 results from an estimated 14 matches for "getorinsertglobal".

2014 Feb 18
3
[LLVMdev] How to codegen an LLVM-IR that has dynamic arrays in it?
Hi Fellows, Is there a way to allocate dynamic array within an LLVM IR file from my code generator? Say., how to create an array type with a size determined through a global variable. Symbolically, something like below: Value *sz = Mod->getOrInsertGlobal("SIZE", Int32Ty); Type *ArrayTy = ArrayType::get(FloatTy, sz) AllocaInst *AI = CreateAlloca(ArrayTy, 0, ""); Thanks, Paul -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail...
2017 May 30
2
llvm::GlobalVariable usage (newbie question)
The docs are pretty vague about this. After digging into the examples I got the following to work with JIT to gain a pointer to variable elsewhere in the runtime, but I'd like to understand what is going on here, and if there is a, um, nicer API that I'm missing? llvm::Value* C::getGlobalVariable(const char* name, llvm::Type* t) {
2013 Jun 24
2
[LLVMdev] Questions on writing a pass that adds instrumentation code
...art of the function? (Even though my goal, as phrased above, would work if I put the load/add/store instrumentation just before the terminator of the first basic block, that doesn't serve my broader goal.) 2. I currently create the global variables holding the counter by calling "module.getOrInsertGlobal(...)". Will this ensure that the global starts with the value 0, or do I have to do this via other means? (E.g. make an explicit GlobalVariable object instead of using that convenience function) 3. How can I add code that is called when the program exits? 4. Suppose I want to call a functi...
2009 Oct 06
0
[LLVMdev] 2.6/trunk Execution Engine question
...e <assert.h> using namespace llvm; static raw_stdout_ostream raw_cout; int main(int argc, char** argv) { // Test JITting a variable without JITting any functions.' Module* mod = new Module("test", getGlobalContext()); GlobalVariable* gv = cast<GlobalVariable>(mod->getOrInsertGlobal("TestGV", Type::getInt32Ty(getGlobalContext()))); gv->setInitializer(ConstantInt::get( Type::getInt32Ty(getGlobalContext()), 24601)); ModuleProvider* modp = new ExistingModuleProvider(mod); InitializeNativeTarget(); std::string errstring; ExecutionEngine* eeng = ExecutionEn...
2009 Oct 06
1
[LLVMdev] 2.6/trunk Execution Engine question
On Tue, Oct 6, 2009 at 5:49 PM, Reid Kleckner <rnk at mit.edu> wrote: >> Also, the null pointer is coming from a call to JCE->allocateSpace(). >> This is a virtual function; I'm trying to discover what subclass it >> is. > > So, there's JITEmitter::allocateSpace which overrides > JITCodeEmitter::allocateSpace(), but *most* of the time it just calls >
2015 Mar 24
2
[LLVMdev] IR blocks for calling function pointers
Hello, I am trying to create IR block for making a call to function pointer. For creating the IR for a function call to "foo", with "foo" being defined as "void foo(int)", I can use the "getOrInsertFunction" call from Module class as follows: std::vector<Type*> FooArgs; FooArgs.push_back(IRB.getInt64Ty()); Value *FooFunction =
2020 Jun 03
2
Fwd: I cannot change value of global variable in LLVM IR using IRBuilder
...and I want to update value of global variable in LLVM IR. I created new global variable in ModulePass: bool runOnModule(llvm::Module &M) { IRBuilder<> Builder(M.getContext()); Instruction *I = &*inst_begin(M.getFunction("main")); Builder.SetInsertPoint(I); M.getOrInsertGlobal("globalKey", Builder.getInt64Ty()); GlobalVariable* gVar = M.getNamedGlobal("globalKey"); gVar->setLinkage(GlobalValue::InternalLinkage); gVar->setAlignment(Align(8)); gVar->setInitializer(Builder.getInt64(0)); gVar->setConstant(false); for (...
2020 Jun 03
2
Fwd: I cannot change value of global variable in LLVM IR using IRBuilder
...LLVM IR. I created new global variable in ModulePass: > > bool runOnModule(llvm::Module &M) { > > IRBuilder<> Builder(M.getContext()); > > Instruction *I = &*inst_begin(M.getFunction("main")); > > Builder.SetInsertPoint(I); > > M.getOrInsertGlobal("globalKey", Builder.getInt64Ty()); > > GlobalVariable* gVar = M.getNamedGlobal("globalKey"); > > gVar->setLinkage(GlobalValue::InternalLinkage); > > gVar->setAlignment(Align(8)); > > gVar->setInitializer(Builder.getInt64(0)); &gt...
2019 Feb 22
1
Create the GlobalVariable which have extern in one header file
I have changed it to ExternalLinkage. Now, in LLVM IR, it looks like that: @DATA_TABLE = external global [0 x i8*], section "data_section", align 16 #0 @DATA_TABLE.1 = global [10 x i8*] [i8* inttoptr (i64 53415718 to i8*), i8* bitcast (void (%class.Hello*)* @_ZN5Hello5ptofnEv to i8*),...], section "data_section", align 16 #0 In my uses: %arrayidx = getelementptr inbounds [0 x
2014 Oct 07
2
[LLVMdev] Debug Info and DFSan
...nted(const Function *F); @@ -573,6 +575,8 @@ bool DataFlowSanitizer::runOnModule(Module &M) { if (ABIList.isIn(M, "skip")) return false; + FunctionDIs = makeSubprogramMap(M); + if (!GetArgTLSPtr) { Type *ArgTLSTy = ArrayType::get(ShadowTy, 64); ArgTLS = Mod->getOrInsertGlobal("__dfsan_arg_tls", ArgTLSTy); @@ -725,6 +729,12 @@ bool DataFlowSanitizer::runOnModule(Module &M) { Value *WrappedFnCst = ConstantExpr::getBitCast(NewF, PointerType::getUnqual(FT)); F.replaceAllUsesWith(WrappedFnCst); + + // Patch the pointer to LLVM func...
2019 Jul 05
2
Allocating shadow tables at the bottom of memory on Linux.
...ntation pass as an exercise to get up to speed on how llvm operates. I am curious about what the best way would be to create a shadow table at a fixed address in low memory starting at 0x10000 and extending upwards. I am unclear about the correct approach from looking at the DataFlowSanitizer since getOrInsertGlobal seems to be used on a limited number of times in runModule primarily to allocate thread local storage and I am uncertain how the code ensures that the runtime metadata doesnt get overwritten by alloca calls for the stack. Thanks in advance, Carter. -------------- next part -------------- An HTML...
2014 Oct 07
2
[LLVMdev] Debug Info and DFSan
...le(Module &M) { > > if (ABIList.isIn(M, "skip")) > > return false; > > > > + FunctionDIs = makeSubprogramMap(M); > > + > > if (!GetArgTLSPtr) { > > Type *ArgTLSTy = ArrayType::get(ShadowTy, 64); > > ArgTLS = Mod->getOrInsertGlobal("__dfsan_arg_tls", ArgTLSTy); > > @@ -725,6 +729,12 @@ bool DataFlowSanitizer::runOnModule(Module &M) { > > Value *WrappedFnCst = > > ConstantExpr::getBitCast(NewF, PointerType::getUnqual(FT)); > > F.replaceAllUsesWith(WrappedFnCst); &g...
2009 Oct 06
4
[LLVMdev] 2.6/trunk Execution Engine question
> 6. When ExecutionEngine::create was called with parameter > "GVsWithCode" set to its default value of true, I got a segfault when > trying to get a pointer to one of my globals.  JIT::getMemoryForGV was > returning NULL in that case.  Explicitly passing false for > "GVsWithCode" cleared it up. That's no good. Could you send me a stack trace and explain
2014 Oct 07
2
[LLVMdev] Debug Info and DFSan
On Tue, Oct 7, 2014 at 12:18 PM, David Blaikie <dblaikie at gmail.com> wrote: > > > On Tue, Oct 7, 2014 at 12:10 PM, David Blaikie <dblaikie at gmail.com> wrote: > >> >> >> On Tue, Oct 7, 2014 at 11:48 AM, Peter Collingbourne <peter at pcc.me.uk> >> wrote: >> >>> On Tue, Oct 07, 2014 at 10:04:30AM -0700, David Blaikie wrote: