Project

General

Profile

Actions

Feature #5709

closed

Add binary compatibility with Solaris 10 update 10

Added by Andrew Stormont over 8 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Category:
-
Start date:
2015-03-13
Due date:
% Done:

100%

Estimated time:
Difficulty:
Bite-size
Tags:
needs-triage
Gerrit CR:
External Bug:

Description

Solaris 10 update 10 added a new symbol version to libc, SUNW_1.22.7. This means that any binaries built on Solaris 10 update 10 will not be able to run until we introduce the same version in our libc in order to satisfy the load time dependency.

Luckily the new version only includes 4 functions, all of which we have already. The attached patches creates the missing version and relocates the symbols there. This is a non-breaking change and backwards compatible with older illumos binaries.


Related issues

Has duplicate illumos gate - Bug #7165: add intermediate SUNW_1.22.7 symbol version to libc for backward binary support including latest s10 releaseClosed2016-07-03

Actions
Actions #2

Updated by Rich Lowe over 8 years ago

If you do this, it's important that the version have exactly the same symbols in it.

If that's the case here, it's a fine thing to do.

Actions #3

Updated by Andrew Stormont over 8 years ago

That is the case. The new version only includes 4 symbols.

Actions #5

Updated by Andrew Stormont almost 8 years ago

  • Description updated (diff)
Actions #6

Updated by Andrew Stormont almost 8 years ago

  • Description updated (diff)
Actions #7

Updated by Andrew Stormont almost 8 years ago

  • Description updated (diff)
Actions #8

Updated by Andrew Stormont over 7 years ago

  • Has duplicate Bug #7165: add intermediate SUNW_1.22.7 symbol version to libc for backward binary support including latest s10 release added
Actions #9

Updated by Joshua M. Clulow over 5 years ago

In the end, we're electing to introduce a dummy symbol into an otherwise empty version.

As per analysis from Andy Fiddaman:

Options:

  • Option 1: move symbols to new SUNW_1.22.7 version
    • Any old binaries that use the symbols work fine everywhere - they don't even have a dependency on version 1.22.7.
    • Any binaries compiled with the new C library have a dependency on the 1.22.7 version so will not run on an older illumos system which does not have it.
    • binaries from Solaris 10u10 with a dependency on version 1.22.7 work.
  • Option 2: add empty SUNW_1.22.7 version
    • new binaries do not use the dummy symbol so will not end up with a dependency on the new version
    • new and old binaries run on any illumos system.
    • binaries from Solaris 10u10 with a dependency on version 1.22.7 work.

While our release model does allow us to introduce this is as an ABI break from r151026 onwards, option 2 avoids this and also preserves interoperability with other illumos releases regardless of whether they have added this version to their libc.

Note that the dummy symbol in the version we're introducing is necessary to avoid the linker creating a weak version, which behaves differently to the version in the analogous Solaris 10 libc that we are trying to emulate.

The Linkers and Libraries Guide suggests that a weak version definition is to signal "changes to an object that do not require the introduction of a new interface definition"; e.g., bug fixes or performance improvements. It says that weak versions are created by specifying a version that contains no additional symbols, basically.

In addition, it mentions that "[a version's] weak nature precludes its normalisation with [other symbol versions], and results in a separate dependency recording".

Actions #10

Updated by Joshua M. Clulow over 5 years ago

  • Subject changed from Add binary compatibility with Solaris 10 update 10. to Add binary compatibility with Solaris 10 update 10
Actions #11

Updated by Electric Monk over 5 years ago

  • Status changed from In Progress to Closed
  • % Done changed from 0 to 100

git commit c6fe8850c7ff4c85074c93430743b146d8133436

commit  c6fe8850c7ff4c85074c93430743b146d8133436
Author: Alexander Pyhalov <apyhalov@gmail.com>
Date:   2018-08-26T00:48:14.000Z

    5709 Add binary compatibility with Solaris 10 update 10
    Reviewed by: Andy Fiddaman <omnios@citrus-it.co.uk>
    Reviewed by: Toomas Some <tsoome@me.com>
    Reviewed by: Gordon Ross <gordon.w.ross@gmail.com>
    Approved by: Joshua M. Clulow <josh@sysmgr.org>

Actions

Also available in: Atom PDF