On Tue, Oct 10, 2006 at 09:13:50AM +0200, Dr. Volker Jaenisch wrote:

> You're right. But I just wanted to show the difference and NOT provide a 
> patch.

Actually my main point was to ease readability ("patch" more or less
accepts any format anyway).


> I state again: This is experimetal to the max and not intended to be a 
> patch before some of the developers accept it.
> >Thanks again for trying carob on 64bits.
> >  
> Bad news. "make test" fails with my changes applied.

Thanks for the report. This looks like this is the same issue again: I
think we should have only [u]int[32|64]_t conversion functions like
this, removing all the variable size types (in practice: long and long
long).


> 40-Parameter-PreparedStatement/TestParameterStatement.o 
> 40-Parameter-PreparedStatement/TestParameterStatement.cpp
> 40-Parameter-PreparedStatement/TestParameterStatement.cpp: In member 
> function 'void TestParameterStatement::testBigDecimal()':
> 40-Parameter-PreparedStatement/TestParameterStatement.cpp:294: error: 
> call of overloaded 'BigDecimal(long long int)' is ambiguous
> ../include/BigDecimal.hpp:103: note: candidates are: 
> CarobNS::BigDecimal::BigDecimal(const CarobNS::BigDecimal&)
> ../include/BigDecimal.hpp:94: note:                 
> CarobNS::BigDecimal::BigDecimal(long int)
> ../include/BigDecimal.hpp:90: note:                 
> CarobNS::BigDecimal::BigDecimal(int)
> ../include/BigDecimal.hpp:86: note:                 
> CarobNS::BigDecimal::BigDecimal(const std::string&) <near match>
> ../include/BigDecimal.hpp:77: note:                 
> CarobNS::BigDecimal::BigDecimal(const std::wstring&) <near match>
> 40-Parameter-PreparedStatement/TestParameterStatement.cpp:295: error: 
> call of overloaded 'BigDecimal(long long int)' is ambiguous
> ../include/BigDecimal.hpp:103: note: candidates are: 

> 
> Will try to comment out "long" instead of "int64_t". Keep you informed - 
> stay tuned!

Thanks again.
 


> >PS: is the makefile change required?
> >  
> Yes they are to prevent the following at linking time:
> 
> ...
> g++ src/Common.o src/JavaSocket.o src/DriverSocket.o 
> src/CarobException.o src/ConnectionParameters.o src/ControllerPinger.o 
> src/ControllerPool.o src/Connection.o src/Request.o 
> src/RequestWithResultSetParameters.o src/ResultSetMetaData.o 
> src/DriverResultSet.o src/Field.o src/Statement.o 
> src/ParameterStatement.o src/BigDecimal.o src/SQLDataSerialization.o 
> src/StringCodecs.o -lpthread -fPIC -shared -lgmp -o libcarob.so.1
> /usr/bin/ld: src/Common.o: relocation R_X86_64_32 against `a local 
> symbol' can not be used when making a shared object; recompile with -fPIC
> src/Common.o: could not read symbols: Bad value
> collect2: ld returned 1 exit status
> make: *** [libcarob.so.1] Fehler 1
> 
> I have no clue at all what "-fPIC" does. Just tried the same people in 
> other cases (found via google) did to prevent this error.

info gcc

`-fpic'
     Generate position-independent code (PIC) suitable for use in a
     shared library, if supported for the target machine.  Such code
     accesses all constant addresses through a global offset table
     (GOT).  The dynamic loader resolves the GOT entries when the
     program starts (the dynamic loader is not part of GCC; it is part
     of the operating system).  If the GOT size for the linked
     executable exceeds a machine-specific maximum size, you get an
     error message from the linker indicating that `-fpic' does not
     work; in that case, recompile with `-fPIC' instead. 


_______________________________________________
Carob mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob

Reply via email to