lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master b29be96 09/10: Extend in the spirit of ELF vi


From: Greg Chicares
Subject: [lmi-commits] [lmi] master b29be96 09/10: Extend in the spirit of ELF visibility
Date: Sat, 11 Mar 2017 17:24:21 -0500 (EST)

branch: master
commit b29be9628dcc5c49aa198f2e3a58dd401637ea31
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Extend in the spirit of ELF visibility
    
    See the ELF visibility patch author's work, cited inline. The "hidden"
    and "public" macros are not presently used in lmi, but presumably they
    will prove useful later.
---
 so_attributes.hpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/so_attributes.hpp b/so_attributes.hpp
index 37d4585..bd7bc6a 100644
--- a/so_attributes.hpp
+++ b/so_attributes.hpp
@@ -56,7 +56,10 @@
 // compatible attribute for symbol visibility, a feature for which
 // significant benefits are claimed:
 //   http://www.nedprod.com/programs/gccvisibility.html
+//     [if that becomes inaccessible, this began as a copy:
 //   https://gcc.gnu.org/wiki/Visibility
+//     but, being a wiki, it has been subject to erosion; the
+//     implementation here is closer to the authoritative original]
 // The elf 'visibility' and msw dll 'declspec' attributes are similar
 // enough to use the same decoration macro, but they do different
 // things. In code that uses the shared object, the macro has an
@@ -74,11 +77,15 @@
 #if defined LMI_USE_SO_ATTRIBUTES
 #
 #   if defined LMI_MSW
-#       define LMI_EXPORT __declspec(dllexport)
 #       define LMI_IMPORT __declspec(dllimport)
+#       define LMI_EXPORT __declspec(dllexport)
+#       define LMI_HIDDEN
+#       define LMI_PUBLIC
 #   elif defined __GNUC__
-#       define LMI_EXPORT __attribute__((visibility("default")))
 #       define LMI_IMPORT
+#       define LMI_EXPORT __attribute__((visibility("default")))
+#       define LMI_HIDDEN __attribute__((visibility("hidden")))
+#       define LMI_PUBLIC __attribute__((visibility("default")))
 #   else  // !defined LMI_MSW && !defined __GNUC__
 #       error Unknown platform. Consider contributing support.
 #   endif // !defined LMI_MSW && !defined __GNUC__



reply via email to

[Prev in Thread] Current Thread [Next in Thread]