From owner-freebsd-arch@FreeBSD.ORG Sun Mar 18 18:50:38 2012 Return-Path: Delivered-To: arch@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 5DB1F106564A for ; Sun, 18 Mar 2012 18:50:38 +0000 (UTC) (envelope-from theraven@FreeBSD.org) Received: from theravensnest.org (theravensnest.org [109.169.23.128]) by mx1.freebsd.org (Postfix) with ESMTP id EC3338FC0A for ; Sun, 18 Mar 2012 18:50:37 +0000 (UTC) Received: from [192.168.0.2] (cpc1-cwma8-2-0-cust257.7-3.cable.virginmedia.com [82.20.153.2]) (authenticated bits=0) by theravensnest.org (8.14.4/8.14.4) with ESMTP id q2IIoZOa013285 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES128-SHA bits=128 verify=NO) for ; Sun, 18 Mar 2012 18:50:36 GMT (envelope-from theraven@FreeBSD.org) From: David Chisnall Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Date: Sun, 18 Mar 2012 18:50:38 +0000 Message-Id: <47F86CED-DE0E-47A0-93E8-93D35E89F9F3@FreeBSD.org> To: arch@FreeBSD.org Mime-Version: 1.0 (Apple Message framework v1257) X-Mailer: Apple Mail (2.1257) Cc: Subject: C++ ABI library switching X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Mar 2012 18:50:38 -0000 Hello the list, I am currently working on making it possible to switch C++ ABI library. = We currently ship one of these in FreeBSD 9.0 (libsupc++), and will = hopefully ship two (libsupc++ and libcxxrt) in 9.1 and one (libstdc++) = in 10. Currently, libc++ dynamically links to libcxxrt, libstdc++ statically = links to libsupc++. I would like to make us build libsupc++ as a .so = and link libstdc++.so with -Wl,-f,libsupc++.so.1. This makes it an = auxiliary filter so, if libsupc++.so.1 exists, it will be used in place = of the internal version. This preserves ABI compatibility and allows us = to switch between libcxxrt and libsupc++ with a libmap.conf entry, = making it easy for users of 9.1 to test the libstdc++ and libcxxrt = combination. With this done, it's then possible to link both libstdc++ and libc++ = into the same program, making the transition from libstdc++ to libc++ = relatively painless (everything still needs recompiling, but it doesn't = all need recompiling at the same time). For 10.0, we can then ship a = COMPAT version of libstdc++ that is linked against libcxxrt by default. Any objections / suggestions of better approaches? David=