[LLVMdev] Help with LLVM 3.2 linking error
Óscar Fuentes
ofv at wanadoo.es
Mon Mar 18 10:47:27 PDT 2013
Nicola Gigante <nicola.gigante at gmail.com> writes:
> Il giorno 18/mar/2013, alle ore 15:14, Óscar Fuentes <ofv at wanadoo.es> ha scritto:
>
>> Nicola Gigante <nicola.gigante at gmail.com> writes:
>>
>>> The error I get is the following:
>>> Undefined symbols for architecture x86_64:
>>> "typeinfo for llvm::FoldingSetImpl", referenced from:
>>> typeinfo for llvm::FoldingSet<Type> in Program.o
>>> ld: symbol(s) not found for architecture x86_64
>>>
>>> Looking at the error the question is: is llvm built with RTTI support
>>> by default?
>>
>> No.
>>
>>> If not, how do I enable it?
>>
>> AFAIK, there is no method for enabling RTTI (other than modifying the
>> makefiles).
>
> Ok, but is it the source of the error? does it comes from the fact
> that I'm linking llvm libraries without rtti with my code that is
> compiled _with_ rtti?
I think so.
> I cannot disable rtti in my code so it's a problem (at least I think so.
> I use dynamic_casts, is -fno-rtti only for typeinfo?)
dynamic_cast depends on RTTI.
> It sounds strange to me, the same used to apply before, but I didn't
> get this error last month with the old setup…
>
> Any hint?
You can try building LLVM with
CXXFLAGS=-frtti configure ....
CXXFLAGS=-frtti make ...
I'm not sure if CXXFLAGS takes precedence over the hard-coded -fno-rtti
in the makefiles, though.
With the cmake build, you can try as above (but replacing `configure'
with `cmake') or, better:
cmake -DLLVM_REQUIRES_RTTI=ON ... rest of cmake args ...
Adding an option for enabling RTTI on the cmake build is trivial. Dunno
about the `configure' build. You can try filing a feature request on
Bugzilla.
More information about the llvm-dev
mailing list