[LLVMdev] memcpy and bootstrapping

Nick Lewycky nicholas at mxc.ca
Mon May 12 22:09:06 PDT 2008


james woodyatt wrote:
> everyone--
> 
> I don't know whether this is a bug or not.

I assume you're using llvm-gcc? Does it still turn memcpy into 
llvm.memcpy if you pass llvm-gcc -ffreestanding? If so, that's certainly 
a bug. Either way, you should be using -ffreestanding!

Nick

> I'm trying to bootstrap an embedded application and using LLVM tools  
> to generate the assembly code, which I then assemble and link with  
> traditional tools.  The bootstrap loader, of course, runs in a very  
> limited environment, and I have to roll my own memcpy() function for  
> it, i.e. there is no kernel, nothing at all, this stuff runs because  
> the hard reset vectors into it.
> 
> Sadly, memcpy() doesn't get linked into my binary.  Why?  Because I  
> wrote it in C, and I'm using the LLVM tools to link everything  
> together before piping it all into llc and generating one big assembly  
> file for the bootstrap loader.  All the bitcode files that expect to  
> be able to call memcpy() have LLVM.memcpy intrinsics in them instead  
> of function calls, and LLVM-LD refuses to link the bitcode file with  
> my hand-rolled function in it because it doesn't actually see any  
> references.  The result: an object file with an undefined reference to  
> memcpy().
> 
> It seems to me like I shouldn't be surprised that LLVM-LD doesn't look  
> for my hand-rolled memcpy().  I'm using -link-as-library with - 
> internalize-public-api-list=_start.  I suppose I'll end up ripping off  
> bcopy.s for ARM from the obvious place, and assembling that for use in  
> the final link.  That should solve my problem.
> 
> I mention it here because it was a little surprising when my memcpy()  
> didn't show up where I expected.
> 
> 
>> j h woodyatt <jhw at conjury.org>
> http://jhw.vox.com/
> 
> 
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 




More information about the llvm-dev mailing list