Print this page
4519 ABI checking needs to adapt to modern times, run by default
Reviewed by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Jens Elkner <jel+illumos@cs.uni-magdeburg.de>

@@ -41,12 +41,12 @@
 #
 # The types of versions understood by interface_check and interface_cmp
 # fall into the following categories:
 #
 #       NUMBERED:       A public version that follows the standard numbering
-#                       convention of a known prefix (e.g. SUNW_), followed
-#                       by 2 or 3 dot separated numeric values:
+#                       convention of a known prefix (e.g. ILLUMOS_), 
+#                       followed by 2 or 3 dot separated numeric values:
 #
 #                               <PREFIX>major.minor[.micro]
 #
 #       PLAIN:          A public version that may or may not contain
 #                       numeric characters, but for which numeric characters

@@ -99,34 +99,34 @@
 #       is omitted.
 #
 sub Category {
         my ($Ver, $Soname) = @_;
 
-        # For Solaris and related products, the SUNW_ prefix is
-        # used for numbered public versions.
-        if ($Ver =~ /^(SUNW_)(\d+)\.(\d+)(\.(\d+))?/) {
+        # For illumos, the SUNW_ or ILLUMOS_ prefix is used for numbered
+        # public versions.
+        if ($Ver =~ /^((?:SUNW|ILLUMOS)_)(\d+)\.(\d+)(\.(\d+))?/) {
                 return ('NUMBERED', 3, $1, $2, $3, $5) if defined($5);
                 return ('NUMBERED', 2, $1, $2, $3);
         }
 
         # Well known plain versions. In Solaris, these names were used
         # to tag symbols that come from the SVR4 underpinnings to Solaris.
-        # Later Sun-specific additions are all tagged SUNW_xxx.
+        # Later additions are all in the NUMBERED form.
         return ('PLAIN')
             if (($Ver =~ /^SYSVABI_1.[23]$/) || ($Ver =~ /^SISCD_2.3[ab]*$/));
 
         # The link-editor creates "base" versions using the SONAME of the
         # object to contain  linker generated symbols (_etext, _edata, etc.).
         return ('SONAME')
             if ($Ver eq $Soname) && ($Soname ne '');
 
-        # The Solaris convention is to use SUNWprivate to indicate
-        # private versions. SUNWprivate can have a numeric suffix, but
-        # the number is not significant for ELF versioning other than
-        # being part of a unique name.
+        # The convention is to use SUNWprivate and ILLUMOSprivate to indicate
+        # private versions. They may have a numeric suffix, but the
+        # number is not significant for ELF versioning other than being part
+        # of a unique name.
         return ('PRIVATE')
-            if ($Ver =~ /^SUNWprivate(_[0-9.]+)?$/);
+            if ($Ver =~ /^(SUNW|ILLUMOS)private(_[0-9.]+)?$/);
 
         # Anything else is a version we don't recognize.
         return ('UNKNOWN');
 }