[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