I think this happens if any of the cpp files that are used for IR generation 
(clang —emit-llvm) includes <iostream>. For decimal support, I’m generating IR 
code from arrow/util/decimal.cc <http://decimal.cc/> which includes <iostream> 
(many times in the header file chain).

> On Dec 16, 2018, at 9:14 AM, Ravindra Pindikura <ravin...@dremio.com> wrote:
> 
> Hi,
> 
> I’ve been working on adding decimal support in gandiva - I’m hitting a symbol 
> resolution error with std::ios_base::Init with the java tests on ubuntu. Any 
> ideas on what I may be doing wrong ?
> 
> LLVM ERROR: Program used external function '_ZNSt8ios_base4InitC1Ev' which 
> could not be resolved!
> 
> 
> I’ve the same test (add two decimals) in three forms : 
> 
> 1. Cpp test executable with shared gandiva lib
> 
> Works on both ubuntu and Mac
> 
> 2. Cpp test executable with static gandiva lib
> 
> Works on both ubuntu and Mac
> 
> 3. Java test (internally uses jni over static gandiva lib)
> 
> Works on Mac, but fails on ubuntu !!
> 
> Ubuntu failure : https://travis-ci.org/apache/arrow/jobs/468562791
> 
> I tried switching to ORC JIT (from MC JIT) but that didn’t help. In the JIT, 
> the symbol is not found in the process address space for ubuntu+java. For all 
> the other cases, the symbol is found.
> 
> https://github.com/apache/arrow/pull/2942/files#diff-5ef29a5cabe384645dbf7a9c704aceeaR36
> 
> Thanks & regards,
> Ravindra.

Reply via email to