[LLVMdev] Bit-code file input to ld (was: ...From module/bitcode to Mach-O dylib file directly)

Luke Evans luke at eversosoft.com
Mon Mar 16 13:51:56 PDT 2009


> It is simpler. There is not any Mach-O envelope. The platform linker
> can directly read Mach-O files as well as llvm bit-code file (using
> llvm bit-code file reader).
>
> > Not sure if/where the exact form of the Mach-O file that carries bit
> > code is documented.


Thanks for that.  Yes, I see what you mean (no Mach-O envelope), yet  
there seems to be something fundamentally different between a bit-code  
file I create from Apple's llvm-gcc-4.2, and one created from the LLVM  
APIs.
Particularly:
- ld won't consume the/a bit-code file that is directly generated by  
the LLVM APIs:  "ld warning: in foo.bc, file is not of required  
architecture"
- The bit-code file I have from LLVM differs from ones generated by  
Apple's llvm-gcc-4.2.  The latter has a "DE C0 17 0B" magic  
introducer, and there seems to be another 16 bytes before the "BC  
Code" (42 43 C0 DE) magic appears.
Whereas, the file generated from the LLVM APIs starts immediately with  
the "BC  Code" magic number.

There's a really good chance that this is just a case of 'user  
error'.  At the very least it seems to me that I'm not doing something  
that's required to emit bit-code files in the format that they are  
consumable by ld.  Alternatively, there is some kind of wrapper that  
the llvm-gcc-4.2 tool produces around the basic bit-code, though not  
as you've pointed out, a Mach-O format.

FWIW, here are the first 24 bytes, up to and including what I  
recognise as the LLVM bit-code magic number:
DE C0  17 0B  00 00  00 00  14 00  00 00  AC 01  00 00  07 00  00 00   
42 43  C0 DE...

The 'file' util identifies this as "Compiled PSI (v1) data", though  
that's probably not relevant/useful, as it just comes from the DE C0,  
which could be any number of things.

Anyway, I guess my simple question is:
What do I need to do to get home-brew bit-code output from the LLVM  
bit-code writer to conform to whatever requirements that ld has for  
input?

-- lwe


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090316/8146a964/attachment.html>


More information about the llvm-dev mailing list