[LLVMdev] Compiling llvm-gcc on amd64 with 32 bits: assembler still carps

Joachim Durchholz jo at durchholz.org
Tue Apr 1 01:06:11 PDT 2008


*bump*

Anybody got a clue?

I can post a full transcript of a shell session that reproduces the
error if that helps.

To reiterate the original problem: I'm trying to compile LLVM-GCC on an
Ubuntu 64-bit box, with a 32-bit target (to avoid potential problems
with PIC and such).
I get errors like
  Error: suffix or operands invalid for `push'
as soon as the make process tries to assemble anything; the surface
cause of the problem is that it's calling the preinstalled GNU assembler
but not telling it to emit 32-bit code. (The root cause may be that the
--build, --host and --target options are mishandled somewhere. This
hypothesis is supported by the fact that you need to specify all three
even though normally, specifying just --build should be enough, but
unfortunately, I don't know enough about the automake machinery to
verify or falsify it.)

Regards,
Jo

-- snip --

Am Montag, den 31.03.2008, 00:02 -0700 schrieb Tanya Lattner:
> On Mar 30, 2008, at 11:22 PM, Joachim Durchholz wrote:
> 
> > Am Sonntag, den 30.03.2008, 15:45 -0700 schrieb Tanya Lattner:
> >> On Mar 30, 2008, at 12:39 PM, Joachim Durchholz wrote:
> >>
> >>> OK, I now have
> >>>
> >>> LLVM_VERSION_INFO=kurier-bootstrap /home/jo/llvm-gcc-src/configure
> >>> --prefix=/home/jo --enable-optimized --build=i686-pc-linux-gnu
> >>> --host=i686-pc-linux-gnu --target=i686-pc-linux-gnu
> >>> --enable-llvm=/home/jo --enable-languages=c,c++
> >>
> >> Where have you built llvm? The enable-llvm dir should point to where
> >> you built llvm.
> >
> > The --prefix for LLVM and LLVM-GCC is the same, /home/jo.
> > IOW the LLVM binaries are in /home/jo/bin.
> > I'll try with --enable-llvm=/home/jo/bin today.
> 
> No, not where the binaries are, but I think it should point to where  
> the libraries are. I don't usually do an install, so maybe someone  
> else can comment on this.

Saying --enable-llvm=/home/jo/lib or --enable-llvm=/home/jo/bin gives me

...  
checking for valgrind.h... (cached) no
checking for dsymutil... no
dsymutil is not available
checking for dsymutil... no
dsymutil is not available
configure: error: You must specify valid path to your LLVM tree with
--enable-llvm=DIR

quite early in 'make'.

--enable-llvm=/home/jo does a lot more work before it finally hits the
assembler problems.

So I conclude that --enable-llvm should point to wherever --prefix
pointed when LLVM was built, and the assembler problem have some other
source.

Regards,
Jo




More information about the llvm-dev mailing list