Re: .L xyz.C+ with 32bit ROOT version on 64bit machine

From: Axel Naumann <Axel.Naumann_at_cern.ch>
Date: Wed, 28 Jul 2010 17:09:31 +0200


Hi Alexander,

this looks like a broken installation of your toolchain. Can you try to compile any C++ program with -m32 using your g++?

Cheers, Axel.

Alexander Mann wrote on 07/28/2010 02:15 PM:
>
> Hi Axel,
>
> I will send the full debug output to you in another mail in order not to
> spam the mailing list.
>
> You are right that indeed the -m32 option is used there. Maybe it's just
> the other way round, i.e. -m64 needs to be used here?
>
> .
> .
> .
> Info in <ACLiC>: cd "/net/ph2/auto/home/mann/Code/PyROOT/." ; g++ -c -O2
> -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -pthread
> -I$ROOTSYS/include
> -I"/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/include"
> -I"/net/ph2/auto/home/mann/Code/PyROOT/."
> -I"/net/ph2/auto/home/mann/Code/PyROOT"
> "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.cxx" ; g++
> "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.o" -shared
> -Wl,-soname,Loader_C.so -m32 -O2
> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libCint.so
> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libCore.so
> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libRint.so
> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libMathCore.so
> -o "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C.so"
> {standard input}: Assembler messages:
> .
> .
> .
>
> cu,
> Alexander
>
>
>
>
>
> Am 28.07.2010 13:19, schrieb Axel Naumann:

>> Hi Alexander,
>>
>> Looking at
>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/include/compiledata.h
>>
>> I see that -m32 is passed in all compiler invocations - I don't see how
>> it could fail. Can you run
>>
>> root [0] gDebug=7
>> root [1] .L Loader.C+
>>
>> and send the output? (I'll be a few pages...)
>>
>> Cheers, Axel.
>>
>> Alexander Mann wrote on 07/28/2010 01:05 PM:
>>>
>>> Hi Bertrand,
>>>
>>> good idea, but it did not help :(
>>>
>>> What I am doing is this:
>>>
>>> # setting up 32 bit ROOT 5.26.00b
>>> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686-slc5-gcc43-opt/setup.sh
>>> export
>>> ROOTSYS=/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root
>>>
>>>
>>> export
>>> PATH=/afs/cern.ch/sw/lcg/external/Python/2.5.4p2/i686-slc5-gcc43-opt/bin:$ROOTSYS/bin:$PATH
>>>
>>>
>>> export
>>> LD_LIBRARY_PATH=$ROOTSYS/lib:/afs/cern.ch/sw/lcg/external/Python/2.5.4p2/i686-slc5-gcc43-opt/lib:$LD_LIBRARY_PATH
>>>
>>>
>>> export PYTHONPATH=$PYTHONPATH:$ROOTSYS/lib
>>>
>>>
>>> In ROOT:
>>>
>>> .L Loader.C+
>>>
>>>
>>> This is the contents of the file Loader.C:
>>>
>>> #include<vector>
>>> #ifdef __CINT__
>>> #pragma link C++ class vector<vector<float>  >;
>>> #pragma link C++ class vector<vector<int>  >;
>>> #pragma link C++ class pair<string,string>;
>>> #else
>>> template class std::vector<std::vector<float>  >;
>>> template class std::vector<std::vector<int>  >;
>>> #endif
>>>
>>>
>>> Gives these error messages:
>>>
>>> root [0] .L Loader.C+
>>> Info in<TUnixSystem::ACLiC>: creating shared library
>>> /net/ph2/auto/home/mann/Code/PyROOT/./Loader_C.so
>>> {standard input}: Assembler messages:
>>> {standard input}:11: Error: suffix or operands invalid for `push'
>>> {standard input}:16: Error: relocated field and relocation type differ
>>> in signedness
>>> {standard input}:19: Error: suffix or operands invalid for `pop'
>>> .
>>> .
>>> .
>>> {standard input}:26058: Error: relocated field and relocation type
>>> differ in signedness
>>> {standard input}:26077: Error: relocated field and relocation type
>>> differ in signedness
>>> {standard input}:26096: Error: relocated field and relocation type
>>> differ in signedness
>>> g++: /net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.o: No
>>> such file or directory
>>> Error in<ACLiC>: Compilation failed!
>>>
>>> cu,
>>> Alexander
>>>
>>>
>>>
>>> Am 28.07.2010 12:56, schrieb Bertrand Bellenot:
>>>> Hi Alexander,
>>>>
>>>> Maybe you could try to setup the compiler:
>>>>
>>>>   From bash:
>>>> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686/setup.sh
>>>>
>>>>   From tcshell:
>>>> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686/setup.csh
>>>>
>>>> Cheers, Bertrand.
>>>>
>>>> -----Original Message-----
>>>> From: owner-roottalk_at_root.cern.ch [mailto:owner-roottalk_at_root.cern.ch]
>>>> On Behalf Of Alexander Mann
>>>> Sent: Wednesday, July 28, 2010 12:47
>>>> To: roottalk_at_root.cern.ch
>>>> Subject: [ROOT] .L xyz.C+ with 32bit ROOT version on 64bit machine
>>>>
>>>>
>>>> Hi,
>>>>
>>>> I have a complicated problem. I need to use the 32 bit version of ROOT
>>>> on a 64 bit machine. This seems to cause trouble when I try to compile
>>>> macros in CINT with .L xyz.C+, I get lots of assembler errors, probably
>>>> related to the 32/64 bit issue:
>>>>
>>>> {standard input}: Assembler messages:
>>>> {standard input}:11: Error: suffix or operands invalid for `push'
>>>> {standard input}:16: Error: relocated field and relocation type differ
>>>> in signedness
>>>> ...
>>>>
>>>> Is there a way to pass a switch to the assembler that fixes this?
>>>>
>>>> I am using this root:
>>>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/
>>>>
>>>> bin/root
>>>>
>>>> on such a machine:
>>>> Linux 2.6.18-194.8.1.el5 #1 SMP Thu Jul 1 19:04:48 EDT 2010 x86_64
>>>> x86_64 x86_64 GNU/Linux
>>>>
>>>> Any help is much appreciated!
>>>>
>>>> cu,
>>>> Alexander
>>>>
>>>
>>>

>
>
Received on Wed Jul 28 2010 - 17:09:36 CEST

This archive was generated by hypermail 2.2.0 : Wed Jul 28 2010 - 17:50:01 CEST