Recent seems to have broken toolchain
sgk at troutmask.apl.washington.edu
Mon May 30 19:51:18 UTC 2016
On Mon, May 30, 2016 at 09:29:40PM +0200, Dimitry Andric wrote:
> On 29 May 2016, at 04:27, Steve Kargl <sgk at troutmask.apl.washington.edu> wrote:
> > I have a Fortran application that has built forever on FreeBSD-current;
> > that is, until recently. It now dies with the following error:
> > gfortran48 -O2 -pipe -march=native -mtune=native -static -funroll-loops \
> > --param max-unroll-times=4 -ftree-vectorize -Wall\
> > -rpath /usr/local/lib/gcc48 -I/home/kargl/modules -o acolor acolor.f90 \
> > globalm.o saxm.o -L/home/kargl/lib -L. -L/usr/local/lib -L. -ltgt -loa \
> > -L/home/kargl/lib -L. -L/usr/local/lib -lm90 -llapack -lblas
> > ./liboa.a(pointm.o): In function `__pointm_MOD_l2norm2':
> > pointm.f90:(.text+0x490): multiple definition of `__pointm_MOD_l2norm2'
> > /home/kargl/lib/libtgt.a(pointm.o):pointm.f90:(.text+0x0): first defined here
> > Yes, pointm.o is in both libtgt.a and liboa.a. In the past, during
> > linking, the symbols are resolved from the first of -ltgt or -loa
> > depending on the order on the command line.
> If you run the above command line with -v, what linker does it use? I
> suspect this may be something caused by a newer binutils port, or even
> by a newer gfortran.
> If this is using /usr/local/bin/ld, you might want to try downgrading
> your binutils.
It happens with both /usr/bin/ld and /usr/local/bin/ld. I remove the
binutils port and still had the issue. I tried reverting recent changes
to elftoolchain/libelftc, the resulting tree would not build.
For the record,
% /usr/bin/ld -v
GNU ld 2.17.50
% /usr/local/bin/ld -v
GNU ld (GNU Binutils) 2.25.1
I forgot to note that the problem does not occur for amd64 FreeBSD at
r299122. Unfortunately, I won't have time until the end of the week
to try to bisect the src tree (which is going to be a monumental pain
with keeping everything in sync).
As a workaround, I have added -Wl,--allow-multiple-definition to the
compiler options for gfortran48.
More information about the freebsd-current