Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Jan 2014 21:46:56 +0100
From:      Matthias Andree <matthias.andree@gmx.de>
To:        =?ISO-8859-1?Q?Bernhard_Fr=F6hlich?= <decke@bluelife.at>
Cc:        ports <freebsd-ports@freebsd.org>
Subject:   Re: USE_GCC doesn't set rpath
Message-ID:  <52E17FC0.4070501@gmx.de>
In-Reply-To: <CAE-m3X1Bhc02yKh%2BXxCvYrfF0LP0njUyLA2224%2BTENGeqe9boA@mail.gmail.com>
References:  <52DEE7EE.6010909@rawbw.com>	<52DF0346.6000108@ShaneWare.Biz>	<52E167BF.8050103@rawbw.com>	<CAE-m3X0cMxJ_mpPZ_AoDb17G9Dg4F_Sj45KsZi-hYnd9mguhLw@mail.gmail.com>	<52E174CC.1020801@gmx.de> <CAE-m3X1Bhc02yKh%2BXxCvYrfF0LP0njUyLA2224%2BTENGeqe9boA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 23.01.2014 21:41, schrieb Bernhard Fr=F6hlich:
>=20
> Am 23.01.2014 21:00 schrieb "Matthias Andree" <matthias.andree@gmx.de
> <mailto:matthias.andree@gmx.de>>:

>> If the ABIs are not compatible, then linking should not work - for
>> instance, if I compile rawtherapee with GCC, it will not link against
>> requisites built with clang.
>=20
> No the problems I mean are at runtime. An example is if you have a gcc
> programm that loads other components like Qt stuff that was compiled
> with clang them there are some subtile differences that will cause
> crashes. This might also be some strange bug in our old gcc toolchain
> but so far nobody had a clue what is going wrong there.
>=20
> http://lists.freebsd.org/pipermail/freebsd-emulation/2013-September/010=
769.html

I understand that, but I still expect the link to fail when the ABI is
compatible.  If not, some part of the system has a bad design, and
requires fixing.  One of the fixes we do not have, but that we need, is
making linking libraries of incompatible ABIs fail at link-time, rather
than at run-time.  Rationale: If you can't get it built and installed,
it obviously won't fail at runtime.

I'd say the options are just two:

1. the canonical lang/gcc version (the one without version suffixes)

and

2. the base system compiler
   (which won't give you OpenMP, for instance, on 10.0
   - it uses a clang version that isn't OpenMP-enabled).

Anything else is going to blow up.

And to be really precise, it's down to the ABI and default libraries
rather than the compiler.  (Only it's so much easier to get clang to
link with libstdc++ than getting GCC to link with libc++.)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52E17FC0.4070501>