summaryrefslogtreecommitdiff
path: root/exception_lists
diff options
context:
space:
mode:
authorAli Bahrami <Ali.Bahrami@Sun.COM>2009-08-20 16:09:41 -0600
committerAli Bahrami <Ali.Bahrami@Sun.COM>2009-08-20 16:09:41 -0600
commit75ce41a57ff334bd8fe2cb9ed51eea835892f944 (patch)
treeb51a5ec778af45592b2d789d302c0bccbeaafed6 /exception_lists
parentf8cb811f5f2909e15e8d1f21f046ac459d0640e5 (diff)
downloadillumos-joyent-75ce41a57ff334bd8fe2cb9ed51eea835892f944.tar.gz
6866605 SUNWonbld ELF analysis tools need overhaul
Diffstat (limited to 'exception_lists')
-rw-r--r--exception_lists/check_rtime226
-rw-r--r--exception_lists/interface_check109
-rw-r--r--exception_lists/interface_cmp146
3 files changed, 481 insertions, 0 deletions
diff --git a/exception_lists/check_rtime b/exception_lists/check_rtime
new file mode 100644
index 0000000000..0c4d11c355
--- /dev/null
+++ b/exception_lists/check_rtime
@@ -0,0 +1,226 @@
+
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+# This file provides exceptions to the usual rules applied to ELF objects by
+# check_rtime. All strings are Perl regular expressions that are compared to
+# file paths. In addition to the standard Perl syntax, there is one extension:
+#
+# MACH(dir)
+#
+# is expanded into a regular expression that matches the given
+# directory, or a 64-bit subdirectory of the directory with the
+# name of a 64-bit architecture. For example, MACH(lib) will match
+# any of the following:
+#
+# lib
+# lib/amd64
+# lib/sparcv9
+
+
+# Directory hierarchies to skip completely
+SKIP ^usr/lib/libc/ # optimized libc
+SKIP ^usr/lib/rcm/ # 4426119
+SKIP ^usr/perl5/ # alan's taking care of these :-)
+SKIP ^usr/src/ # no objects in source code
+
+# Individual files that we don't examine
+SKIP ^boot/grub/bin/grub$
+SKIP ^usr/apache/libexec/mod_ipp.so$ # Apache loadable module
+# USIII specific extns. cause ldd noise on USII bld. m/c
+SKIP ^usr/lib/fps/sun4u/UltraSPARC.*/fptest$
+SKIP ^usr/MACH(lib)/lddstub$ # lddstub has no dependencies
+SKIP ^usr/MACH(lib)/libssagent\.so\.1$ # 4328854
+SKIP ^usr/lib/MACH(iconv)/geniconvtbl.so$ # 4384329
+
+# picl file exclusions (4385799)
+SKIP ^usr/platform/.*/libpsvcplugin_psr\.so\.1
+SKIP ^usr/platform/.*/libpsvcpolicy_psr\.so\.1
+SKIP ^usr/platform/.*/libpsvcpolicy\.so\.1
+SKIP ^usr/lib/sysevent/modules/picl_slm.so$
+
+# Objects that don't require a non-executable stack definition
+EXEC_STACK ^platform/.*/MACH(kernel)/unix$
+EXEC_STACK ^platform/.*/multiboot$
+
+# Objects for which we allow relocations to the text segment
+TEXTREL ^platform/.*/MACH(kernel)/unix$
+
+# Directories and files that are allowed to have no direct bound symbols
+NODIRECT ^platform/.*/MACH(kernel)/unix$
+NODIRECT ^usr/ucb
+NODIRECT ^usr/4lib/sbcp$
+
+# Identify any files that should be skipped when building a crle(1)
+# configuration file. As the hwcap libraries can be loop-back mounted onto
+# libc, these can confuse crle(1) because of their identical dev/inode.
+NOCRLEALT ^usr/lib/libc/libc_hwcap[1-3].so.1$
+
+# Files that should contain debugging information.
+STAB ^platform/.*/MACH(kernel)/unix$
+
+# Files that are allowed undefined references
+UNDEF_REF ^usr/lib/libnisdb\.so\.2$
+UNDEF_REF ^usr/snadm/lib/libsvm\.so\.1$
+
+# Objects allowed to have unused dependencies
+UNUSED_DEPS ^usr/lib/picl/plugins/ # require devtree dependencies
+UNUSED_DEPS ^usr/lib/libp # profile libc makes libm an unused dep of libc
+
+# libm.so.2 dependency
+UNUSED_OBJ unused object=.*MACH(libm)/libm_hwcap1\.so\.2
+
+# Unused runpaths due to dlopen() use
+UNUSED_RPATH /usr/lib/fs/autofs.*\ from\ .automountd
+UNUSED_RPATH /etc/ppp/plugins.*\ from\ .*pppd
+UNUSED_RPATH /usr/lib/inet/ppp.*\ from\ .*pppd
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libipsecutil\.so\.1
+UNUSED_RPATH /usr/platform/.*rsmlib.*\ from\ .*librsm\.so\.2
+UNUSED_RPATH \$ORIGIN.*\ from\ .*fcode.so
+UNUSED_RPATH /opt/VRTSvxvm/lib.*\ from\ .*libdiskmgt\.so\.1
+
+# Unused runpaths in picl code
+UNUSED_RPATH /usr/platform/.*\ from\ .*/usr/platform
+UNUSED_RPATH /usr/lib/picl/.*\ from\ .*/usr/platform
+UNUSED_RPATH /usr/platform/.*\ from\ .*/usr/lib/picl
+
+# Unused runpaths in non-OSNET objects we can't change
+UNUSED_RPATH /usr/lib/mps/secv1.*\ from\ .*libnss3\.so
+UNUSED_RPATH /usr/lib/mps.*\ from\ .*libnss3\.so
+UNUSED_RPATH /usr/lib/mps.*\ from\ .*libnssutil3.so
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libdbus-1\.so\.3
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libdbus-glib-1\.so\.2
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libglib-2\.0\.so\.0
+UNUSED_RPATH /usr/X11/lib.*\ from\ .*libglib-2\.0\.so\.0
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libgmodule-2\.0\.so\.0
+UNUSED_RPATH /usr/X11/lib.*\ from\ .*libgmodule-2\.0\.so\.0
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libgnomevfs-2\.so\.0
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libgobject-2\.0\.so\.0
+UNUSED_RPATH /usr/X11/lib.*\ from\ .*libgobject-2\.0\.so\.0
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libgthread-2\.0\.so\.0
+UNUSED_RPATH /usr/X11/lib.*\ from\ .*libgthread-2\.0\.so\.0
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libcrypto\.so\.0\.9\.8
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libnetsnmp\.so\.15
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libgcc_s\.so\.1
+UNUSED_RPATH /usr/postgres/8.3/lib.*\ from\ .*libpq\.so\.5
+UNUSED_RPATH /usr/sfw/lib.*\ from\ .*libpq\.so\.5
+
+# Unused runpaths for reasons not captured above
+UNUSED_RPATH /usr/lib/smbsrv.*\ from\ .*libsmb\.so\.1 # future needs
+UNUSED_RPATH /usr.*\ from\ .*tst\.gcc\.exe # gcc built
+
+
+# Unreferenced objects of non-OSnet objects we can't change
+UNREF_OBJ /lib.*\ of\ .*libcimapi\.so
+UNREF_OBJ /lib.*\ of\ .*libjvm\.so
+UNREF_OBJ /lib.*\ of\ .*libnetsnmp\.so\.15
+UNREF_OBJ /lib.*\ of\ .*libnetsnmpagent\.so\.15
+UNREF_OBJ /lib.*\ of\ .*libnetsnmpmibs\.so\.15
+UNREF_OBJ /lib.*\ of\ .*libnetsnmphelpers\.so\.15
+UNREF_OBJ /lib.*\ of\ .*libnspr4\.so
+UNREF_OBJ /lib.*\ of\ .*libpq\.so\.5
+UNREF_OBJ /lib.*\ of\ .*libsoftokn3\.so
+UNREF_OBJ /lib.*\ of\ .*libspmicommon\.so\.1
+UNREF_OBJ /lib.*\ of\ .*libspmocommon\.so\.1
+UNREF_OBJ /lib.*\ of\ .*libssl3\.so
+UNREF_OBJ /lib.*\ of\ .*libtspi\.so\.1
+UNREF_OBJ /lib.*\ of\ .*libxml2\.so\.2
+UNREF_OBJ /lib.*\ of\ .*libxslt\.so\.1
+UNREF_OBJ /lib.*\ of\ .*libpq\.so\.4
+UNREF_OBJ /lib.*\ of\ .*libpython2\.4\.so\.1\.0
+
+# Unreferenced object of objects we can't change for other reasons
+UNREF_OBJ /libmapmalloc\.so\.1;\ unused\ dependency\ of # interposer
+UNREF_OBJ /libstdc\+\+\.so\.6;\ unused\ dependency\ of # gcc build
+UNREF_OBJ /libm\.so\.2.*\ of\ .*libstdc\+\+\.so\.6 # gcc build
+UNREF_OBJ /lib.*\ of\ .*/lib/picl/plugins/ # picl
+UNREF_OBJ /lib.*\ of\ .*kcfd # interposer
+UNREF_OBJ /libpkcs11\.so\.1; .*\ of\ .*libkmf\.so\.1 # interposed
+
+# Objects that used to contain system functionalty that has since
+# migrated to libc. We preserve these libraries as pure filters for
+# backward compatability but nothing needs to link to them.
+OLDDEP libaio\.so\.1 # onnv build 44
+OLDDEP libdl\.so\.1 # on10 build 49
+OLDDEP libdoor\.so\.1 # onnv build 12
+OLDDEP libintl\.so\.1 # on297 build 7
+OLDDEP libpthread\.so\.1 # on10 build 53
+OLDDEP librt\.so\.1 # onnv build 44
+OLDDEP libsched\.so\.1 # on10 build 36
+OLDDEP libthread\.so\.1 # on10 build 53
+OLDDEP libw\.so\.1 # on297 build 7
+
+# Files for which we skip checking of duplicate addresses in the
+# symbol sort sections. Such exceptions should be rare --- most code will
+# not have duplicate addresses, since it takes assember or a "#pragma weak"
+# to do such aliasing in C. C++ is different: The compiler generates aliases
+# for implementation reasons, and the mangled names used to encode argument
+# and return value types are difficult to handle well in mapfiles.
+# Furthermore, the Sun compiler and gcc use different and incompatible
+# name mangling conventions. Since ON must be buildable by either, we
+# would have to maintain two sets of mapfiles for each such object.
+# C++ use is rare in ON, so this is not worth pursuing.
+#
+NOSYMSORT opt/SUNWdtrt/tst/common/pid/tst.weak2.exe # DTrace test
+NOSYMSORT lib/amd64/libnsl\.so\.1 # C++
+NOSYMSORT lib/sparcv9/libnsl\.so\.1 # C++
+NOSYMSORT lib/sparcv9/libfru\.so\.1 # C++
+NOSYMSORT usr/lib/sgml/nsgmls # C++
+NOSYMSORT usr/lib/lms # C++
+NOSYMSORT ld\.so\.1 # libc_pic.a user
+NOSYMSORT lib/libsun_fc\.so\.1 # C++
+NOSYMSORT lib/amd64/libsun_fc\.so\.1 # C++
+NOSYMSORT lib/sparcv9/libsun_fc\.so\.1 # C++
+
+
+# The libprtdiag_psr.so.1 objects built under usr/src/lib/libprtdiag_psr
+# are a family, all built using the same makefile, targeted at different
+# sparc hardware variants. There are a small number of cases where this
+# one size fits all approach causes an object to be linked against an
+# unneeded library.
+UNREF_OBJ lib/(libdevinfo|libcfgadm)\.so\.1; .*\ of\ .*SUNW,Netra-CP2300/lib/libprtdiag_psr\.so\.1
+
+
+# Remove this once the following integrates:
+# 6858961 check_rtime issues with fwflash plugins (IB transports)
+#
+SKIP ^usr/lib/fwflash/identify/hermon\.so$
+SKIP ^usr/lib/fwflash/identify/tavor\.so$
+SKIP ^usr/lib/fwflash/verify/hermon-MELLANOX\.so$
+SKIP ^usr/lib/fwflash/verify/tavor-MELLANOX\.so$
+
+
+# Remove this once the following integrates:
+# 6858954 check_rtime issues with fwflash plugins (scsi transports)
+#
+SKIP ^usr/lib/fwflash/identify/sd\.so$
+SKIP ^usr/lib/fwflash/identify/ses\.so$
+SKIP ^usr/lib/fwflash/identify/sgen\.so$
+SKIP ^usr/lib/fwflash/verify/sd-GENERIC\.so$
+SKIP ^usr/lib/fwflash/verify/ses-LSILOGIC\.so$
+SKIP ^usr/lib/fwflash/verify/ses-SUN\.so$
+SKIP ^usr/lib/fwflash/verify/sgen-LSILOGIC\.so$
+SKIP ^usr/lib/fwflash/verify/sgen-SUN\.so$
diff --git a/exception_lists/interface_check b/exception_lists/interface_check
new file mode 100644
index 0000000000..600a34864a
--- /dev/null
+++ b/exception_lists/interface_check
@@ -0,0 +1,109 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+# This file provides exceptions to the usual rules applied to sharable
+# objects by intf_check. All strings are Perl regular expressions that
+# are compared to file names. In addition to the standard Perl syntax,
+# there is one extension:
+#
+# MACH(dir)
+#
+# is expanded into a regular expression that matches the given
+# directory, or a 64-bit subdirectory of the directory with the
+# name of a 64-bit architecture. For example, MACH(lib) will match
+# any of the following:
+#
+# lib
+# lib/amd64
+# lib/sparcv9
+
+
+# Sharable objects underneath these parts of the tree are taken to be plugins.
+# Plugins are not required to have versioned file names, and are not required
+# to be internally versioned.
+#
+PLUGIN ^usr/apache/libexec
+PLUGIN ^usr/lib/devfsadm
+PLUGIN ^usr/lib/efcode/.*\.so$
+PLUGIN ^usr/lib/elfedit
+PLUGIN ^usr/lib/fm/fmd/plugins
+PLUGIN ^usr/lib/fm/fmd/schemes
+PLUGIN ^usr/lib/fm/topo/plugins
+PLUGIN ^usr/lib/fwflash
+PLUGIN ^usr/lib/iconv
+PLUGIN ^usr/lib/inet/ppp
+PLUGIN ^usr/lib/mdb
+PLUGIN ^usr/lib/mms
+PLUGIN ^usr/lib/pci
+PLUGIN ^usr/lib/picl/plugins
+PLUGIN ^usr/lib/python2.4
+PLUGIN ^usr/lib/rcm/modules
+PLUGIN ^usr/lib/scsi/plugins
+PLUGIN ^usr/lib/sysevent/modules
+PLUGIN ^usr/perl5/5\.[^\\]*/lib
+PLUGIN ^usr/platform
+PLUGIN ^usr/sadm/lib/wbem
+
+
+# sbcp is a special case, and not a plugin. However, it does not have a
+# versioned name, and does not contain versioning, so the PLUGIN exemptions fit.
+PLUGIN ^usr/4lib/sbcp$
+
+
+# Objects that are not expected to contain versioning information.
+# Note that PLUGIN objects are automatically exempt from this,
+# so these directives are generally applied to non-plugin objects
+NOVERDEF ^usr/4lib/libc\.so\.
+NOVERDEF ^usr/MACH(lib)/0\@0\.so\.1$
+NOVERDEF ^usr/lib/MACH(abi)/apptrace\.so\.1$
+NOVERDEF ^usr/MACH(lib)/libfru.*\.so\.1$
+NOVERDEF ^usr/MACH(lib)/libkrb5\.so\.1$
+NOVERDEF ^usr/MACH(lib)/libzpool\.so\.1$
+NOVERDEF ^usr/MACH(lib)/madv\.so\.1$
+NOVERDEF ^usr/MACH(lib)/mpss\.so\.1$
+NOVERDEF ^usr/MACH(lib)/sn1_brand\.so\.1$
+NOVERDEF ^usr/lib/fs/[^/]*/fstyp\.so\.1$
+NOVERDEF ^usr/lib/libmilter\.so\.1$
+NOVERDEF ^usr/lib/libwrap\.so\.1\.0$
+NOVERDEF ^usr/lib/locale/MACH(iso_8859_1)/iso_8859_1\.so\.3$
+NOVERDEF ^usr/lib/picl/plugins$
+NOVERDEF ^usr/sadm/admin/dhcpmgr/dhcpmgr\.so\.1$
+NOVERDEF ^usr/sadm/admin/printmgr/lib/libpmgr\.so\.1$
+
+
+# Objects that are allowed to deviate from our standard version
+# names.
+NONSTD_VERNAME ^usr/MACH(lib)/libtecla\.so\.1$
+
+
+# These libc variants have an SONAME of libc\.so\.1$
+NONSTD_VERNAME ^usr/MACH(lib)/libc/libc_hwcap[1-3]+\.so\.1$
+
+
+# The ABI requires the SONAME for libsys.so.1 to be /usr/lib/ld.so.1
+# That means that the base version will also be /usr/lib/ld.so.1, which
+# is non-standard.
+NONSTD_VERNAME ^usr/lib/libsys\.so\.1$
diff --git a/exception_lists/interface_cmp b/exception_lists/interface_cmp
new file mode 100644
index 0000000000..74467305f1
--- /dev/null
+++ b/exception_lists/interface_cmp
@@ -0,0 +1,146 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+
+#
+# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
+# Use is subject to license terms.
+#
+
+# This file provides exceptions to the usual rules applied to sharable
+# objects by intf_cmp. All strings are Perl regular expressions that
+# are compared to file, version, and symbol names. In addition to the
+# standard Perl syntax, there is one extension:
+#
+# MACH(dir)
+#
+# is expanded into a regular expression that matches the given
+# directory, or a 64-bit subdirectory of the directory with the
+# name of a 64-bit architecture. For example, MACH(lib) will match
+# any of the following:
+#
+# lib
+# lib/amd64
+# lib/sparcv9
+#
+
+
+## libbsm
+#
+# - Removed interfaces: setauclassfile, setaueventfile setauuserfile testac
+# 4686423 undocumented interfaces are not used
+# - Removed interfaces: auditsvc
+# 6638707 implement the removal of auditsvc(2) as noted in PSARC/2002/665
+#
+DELSYM ^(auditsvc|setauclassfile|setaueventfile|setauuserfile|testac)$ \
+ ^SUNW_(0\.[7-8]|1\.[1-2])$ \
+ ^MACH(lib)/libbsm\.so\.1$
+
+
+## libmalloc / libmapmalloc
+#
+# - Objects that provide malloc implementations had functions intentionally
+# removed by:
+# 6464344 malloc library cleanup
+# PSARC 2006/477 malloc library cleanup
+#
+DELSYM ^(_cfree|_mallinfo|_mallopt)$ \
+ ^SUNW_1\.1$ \
+ ^usr/MACH(lib)/libmalloc\.so\.1$
+DELSYM ^(mallinfo|mallopt)$ \
+ ^SUNW_(0\.7|1\.1)$ \
+ ^usr/MACH(lib)/libmapmalloc\.so\.1$
+DELSYM ^(_cfree|_?mallinfo|_?mallopt|_memalign|_valloc)$ \
+ ^SUNW_1\.1$ \
+ ^usr/MACH(lib)/watchmalloc\.so\.1$
+
+
+## libc
+#
+# - In Solaris 10, libc version SUNW_1.23 was incorrectly defined. In a
+# subsequent update, those symbols were properly transfered to SUNW_1.22.4.
+# However, SUNW_1.23 had to remain in place as an empty version to satisfy
+# executables already in the field that were bound to it.
+# 6763000 libc versioning needs a little tlc in Solaris 10
+# The following excludes an empty top version SUNW_1.23 from triggering
+# a flood of "added interface" errors.
+#
+EMPTY_TOPVERSION ^SUNW_1\.23$ ^MACH(lib)/libc\.so\.1$
+EMPTY_TOPVERSION ^SUNW_1\.23$ ^usr/lib/libc/libc_hwcap\d+\.so\.1$
+
+
+## libnsl
+#
+# - The function _inet_aton was removed from libnsl.so.1 as part of
+# 6700179 expunge synonyms.h
+# PSARC 2008/309 expunge synonyms.h
+# - Version SUN_1.10 was vacated when inet_aton was backported into SUNW_1.9.1
+# 4944187 getaddrinfo doesn't convert broadcast address if dns
+# isn't in nsswitch.conf
+# 6747055 Solaris 10 apps using recent version of libnsl.so do
+# not run on Nevada
+#
+DELSYM ^_inet_aton$ ^SUNW_1\.9\.1$ ^MACH(lib)/libnsl\.so\.1$
+EMPTY_TOPVERSION ^SUNW_1\.10$ ^MACH(lib)/libnsl\.so\.1$
+
+
+## libpapi
+#
+# - FSG_1.0 is a label for the Free Standards Group, version 1 of this library
+# 6346505 print commands should use PAPI for service interaction
+# (LSARC/2003/547)
+#
+EMPTY_TOPVERSION ^FSG_1\.0$ ^usr/lib/libpapi.so.0$
+
+
+## libresolv2
+#
+# - Version SUNW_2.3 is empty
+# 6689937 libresolv2's mapfile-vers needs updating to line up
+# with S10 changes
+#
+EMPTY_TOPVERSION ^SUNW_2\.3$ ^MACH(lib)/libresolv\.so\.2$
+
+
+## librtld_db
+#
+# - rd_fix_phdrs() was introduced into Solaris 10 to support branded zones,
+# and was removed as part of:
+# 6599700 librtld_db needs better plugin support
+#
+DELSYM ^rd_fix_phdrs$ ^SUNW_1\.1$ ^MACH(lib)/librtld_db\.so\.1$
+
+
+## libtecla
+#
+# - gl_completion_action() was renamed pca_path_completions()
+# - gl_set_term_size was moved from tecla_1.4 to tecla_l.5
+# - The version tecla_l.5 (note the "el" (l) instead of a one (1) is
+# intentional. See the libtecla mapfile for details.
+#
+DELSYM ^gl_completion_action$ \
+ ^tecla_1\.[2-4]$ \
+ ^usr/MACH(lib)/libtecla\.so\.1$
+DELSYM ^gl_set_term_size$ \
+ ^tecla_1\.4$ \
+ ^usr/MACH(lib)/libtecla\.so\.1$
+ADDSYM ^pca_path_completions$ \
+ ^(tecla_1\.[2346]|tecla_l\.5)$ \
+ ^usr/MACH(lib)/libtecla\.so\.1$