From owner-freebsd-ports@freebsd.org Fri Aug 19 15:07:14 2016 Return-Path: Delivered-To: freebsd-ports@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0549FBBD49C for ; Fri, 19 Aug 2016 15:07:14 +0000 (UTC) (envelope-from matthew@FreeBSD.org) Received: from smtp.infracaninophile.co.uk (smtp.infracaninophile.co.uk [IPv6:2001:8b0:151:1:c4ea:bd49:619b:6cb3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "smtp.infracaninophile.co.uk", Issuer "infracaninophile.co.uk" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 890F01B0B for ; Fri, 19 Aug 2016 15:07:13 +0000 (UTC) (envelope-from matthew@FreeBSD.org) Received: from liminal.local (liminal.infracaninophile.co.uk [IPv6:2001:8b0:151:1:3636:3bff:fed4:b0d6]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: m.seaman@infracaninophile.co.uk) by smtp.infracaninophile.co.uk (Postfix) with ESMTPSA id CE897E0C5 for ; Fri, 19 Aug 2016 15:07:08 +0000 (UTC) Authentication-Results: smtp.infracaninophile.co.uk; dmarc=none header.from=FreeBSD.org Authentication-Results: smtp.infracaninophile.co.uk/CE897E0C5; dkim=none; dkim-atps=neutral Subject: Re: how did BSD libc make binary compatibility promise beetween freebsd version? To: freebsd-ports@freebsd.org References: From: Matthew Seaman Message-ID: Date: Fri, 19 Aug 2016 16:07:01 +0100 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="ef5d6kfuknjbIIV5TP6xF2gCvOJNx72QB" X-Spam-Status: No, score=-1.2 required=5.0 tests=BAYES_00,SPF_SOFTFAIL autolearn=no autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on smtp.infracaninophile.co.uk X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Aug 2016 15:07:14 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --ef5d6kfuknjbIIV5TP6xF2gCvOJNx72QB Content-Type: multipart/mixed; boundary="SNc1tvOMSbaPGbh6KC8WFrU9C5hDkdO0p" From: Matthew Seaman To: freebsd-ports@freebsd.org Message-ID: Subject: Re: how did BSD libc make binary compatibility promise beetween freebsd version? References: In-Reply-To: --SNc1tvOMSbaPGbh6KC8WFrU9C5hDkdO0p Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: quoted-printable On 19/08/2016 15:39, kang joni wrote: > As the title suggest, I usually compile my linux code from old debian > squeeze to run for either centos 6 or debian wheezy and these distros > later version and adjusting some app rpath and clang libc++ runtime > libs to point local relative file path via origin method. Is there any > easy guideline to follow when working on bsd libc version? I feels do > not like on how libc emulation method as it seems complex > configuration fine tuning for starter BSD like me. FreeBSD promises /forward/ ABI compatibility for the whole of one major version's lifetime. That means that if you want to run your application on a mixture of 10.1, 10.2 and 10.3 machines, then you should compile it under 10.1. This is modified by the use of versioned symbols in recent releases: effectively libc contains multiple copies of certain symbols where there have been ABI-breaking changes, so you can run something compiled for 10.1 on an 11.0 system and dynamically link against the same copy of libc. The use of versioned symbols applies to the most important shared libraries provided by the base system, but not all, and it doesn't apply to any shared libraries provided from the ports as far as I am aware. So while it will normally 'just work' for safeties' sake you'll still need to test cross compatibility and may still need to install compat libraries or compile code separately for each different major OS version. See: https://people.freebsd.org/~deischen/symver/freebsd_versioning.txt for a much fuller explanation of symbol versioning. Cheers, Matthew --SNc1tvOMSbaPGbh6KC8WFrU9C5hDkdO0p-- --ef5d6kfuknjbIIV5TP6xF2gCvOJNx72QB Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQJ8BAEBCgBmBQJXtyCcXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2NTNBNjhCOTEzQTRFNkNGM0UxRTEzMjZC QjIzQUY1MThFMUE0MDEzAAoJELsjr1GOGkAT900P/2EYmElBMjihOKibn55Sph+R z3AT0iAJXkUIMjLxgKLmUcV4U+Y4jJXotdJjEraSMKuk+4oYX6s1bnPs91z971qz uuF9XE01IDGL5s+EegdSuHkyzjCrWs92DYiZ4HDGVNc4Chk6hsRsfd++KXfiqVaS bObJ57+1wvYQG6tBgszU7dRhRWdJbNGohKp0xeMHctzgBoLw4L+OulVo/zi72+KF 3s+L517oRp9wwfFTu6lhE1IN2qUVQplzwsiD6ShWucEA7SoLmxEtkX7QheQcZ95H tXqus3evfmdqsRM6eyAouX9MkC6pE107V9ZekBtw1xRQzl246R5vtZwTi2a0IPK4 Rb+P6DT+xflWi5DBfMMkY3GeEFsDGS9ojcAtPbnGJTF/AT7DBDbD+tZJHt2kNZPI 5Mnh3DXwiqFsE5JBhmbSCwQqj+a+Wrz+Er8H0JUrWs0Rrp99lG+anP7zLnKbqGXp MTjZjdzA+TsmX8CBXUA2V046GO5l9wcLOTY6mh3jS/NntlwWCq36sIa5Iu1DYqFt aNBmOxv+DjP08EUZ/XWRwhBEnpNR6YRrgpy4B8agHjAE6z7m72Z1FSigmN/pfoGN 19CFioChEf3DOOvdLLUVSvY8gjCoI7YGEzh5eCnT1ApJo+gXy+4CAeKoKJizX0aV ilzwxn6cgvVQmOQEAFm7 =WW3L -----END PGP SIGNATURE----- --ef5d6kfuknjbIIV5TP6xF2gCvOJNx72QB--