[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost-build
Subject:    Re: [Boost-build] gcc.jam broken on 64-bit FreeBSD
From:       Vladimir Prus <ghost () cs ! msu ! su>
Date:       2009-07-25 8:30:34
Message-ID: 200907251230.34506.ghost () cs ! msu ! su
[Download RAW message or body]

On Saturday 25 July 2009 Vladimir Prus wrote:

> On Monday 20 July 2009 Steve M. Robbins wrote:
> 
> > > > It appears that I have to get rid of the lib32 stuff, to get the linker 
> > > > to do the right thing, otherwise I get lots of these messages:
> > > > 
> > > > /libexec/ld-elf.so.1: /usr/lib32/libm.so.5: unsupported file layout
> > > > 
> > > > This is an obvious build/run problem with the LD_RUN_PATH; FreeBSD 
> > > > 64-bit binaries cannot dynamically link with 32-bit binaries, 
> > > > unless they use some form of explicit thunk. FreeBSD's rtld will 
> > > > not thunk on its own.
> > > 
> > > Do you happen to know why Linux does not have any problems on 64-bit
> > > platforms? Is there some fundamental difference in behaviour, or
> > > something else?
> > 
> > I'm reasonably certain that Linux will have the same problem, *if* the
> > 32-bit libs are installed.  I don't have them installed, for example,
> > so the "Debian-Sid" regression testing works [1].
> 
> This does not match my experiments. I have tries with an install of a custom
> compiler, and got this:
> 
> ike1:x$ echo $LD_LIBRARY_PATH
> /home/gcc/install/sourceryg++/4.3-177/i386-linux/i686-pc-linux-gnu/lib:/home/gcc/install/sourceryg++/4.3-177/i386-linux/i686-pc-linux-gnu/lib64
>  
> ike1:x$ ldd a32
> 	    ...
> libstdc++.so.6 => /home/gcc/install/sourceryg++/4.3-177/i386-linux/i686-pc-linux-gnu/lib/libstdc++.so.6 \
>                 (0xf7e4c000)
> ...
> ike1:x$ ldd a64
> 	    ...
> libstdc++.so.6 => /home/gcc/install/sourceryg++/4.3-177/i386-linux/i686-pc-linux-gnu/lib64/libstdc++.so.6 \
>                 (0x00007f17ad5f1000)
> .../lib/ld-linux.so.2
> 
> So, it looks like Linux dynamic loader will ignore 32-bit libraries when the \
> application is 64-bit. Note that while the toolchain is custom, the binaries use \
> the system-wide loader, /lib/ld-linux.so.2, so this behaviour is not something \
> we've changed. 
> This behaviour seems perfectly sane to me. If I install custom toolchain with \
> 32-bit and 64-bit libraries, I probably want to set LD_LIBRARY_PATH once, and have \
> the binaries work whether I build them with -m32 or -m64 -- which naturally \
> requires that dynamic linker ignores libraries of wrong bitness.
> 
> Therefore, it appears this behaviour is FreeBSD-specific pecularity, and, \
> presumably, should have FreeBSD-specific fix.

In fact, the best solution will probably be a new option to gcc initialization
to select the desired behaviour.

- Volodya
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic