[LLVMdev] 2.6/trunk Execution Engine question
Kenneth Uildriks
kennethuil at gmail.com
Tue Oct 6 13:53:10 PDT 2009
On Tue, Oct 6, 2009 at 2:39 PM, Kenneth Uildriks <kennethuil at gmail.com> wrote:
> My front-end is humming along beautifully now with the LLVM trunk. A
> few upgrade notes for anyone who is interested:
>
> 1. Not surprisingly, everything in your front-end needs to be
> recompiled; object layouts have changed. My generated code was
> calling some name-mangled stuff in the C++ libraries, and using
> struct/class definitions defined therein, and it fell over hard when I
> ran it against the trunk libraries. I ripped all that stuff out and
> added what I needed to the C bindings.
>
> 2. Linkage enums have changed. Since my front-end doesn't understand
> C, I had ported some LLVM definitions over so that I could use them in
> my language. That port, of course, was not automatically updated when
> I built against the trunk, so I ended up with global linkage settings
> that I wasn't expecting. This led to:
>
> 3. llc gets very unhappy if you give an unnamed global variable weak
> linkage. This is not surprising, since weak linkage uses name
> matching and doesn't make sense for things that have no name.
> Updating my linkage enum port cleared that up for me.
>
> 4. The set of library names to link against has changed considerably.
>
> 5. C bindings to ExecutionEngine stuff have moved out of libCore.a.
>
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.
More information about the llvm-dev
mailing list