chiark / gitweb /
Set ELF visibility to keep all of our external symbols to ourselves.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 1 Oct 2019 10:40:41 +0000 (11:40 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 1 Oct 2019 20:51:10 +0000 (21:51 +0100)
catacomb-python.h
catacomb.c

index df29099b2d85ad343f90b65fc68303adbccd5916..5815343e5c11c616200d4c2804e173baf5124e27 100644 (file)
 #include <catacomb/share.h>
 #include <catacomb/gfshare.h>
 
+/*----- Other preliminaries -----------------------------------------------*/
+
+#define GOBBLE_SEMI extern int notexist
+#if defined(__GNUC__) && defined(__ELF__)
+#  define PRIVATE_SYMBOLS _Pragma("GCC visibility push(hidden)") GOBBLE_SEMI
+#  define PUBLIC_SYMBOLS _Pragma("GCC visibility pop") GOBBLE_SEMI
+#  define EXPORT __attribute__((__visibility__("default")))
+#else
+#  define PRIVATE_SYMBOLS GOBBLE_SEMI
+#  define PUBLIC_SYMBOLS GOBBLE_SEMI
+#  define EXPORT
+#endif
+
+PRIVATE_SYMBOLS;
+
 /*----- Utility macros ----------------------------------------------------*/
 
 #define RETURN_OBJ(obj) do { Py_INCREF(obj); return (obj); } while (0)
index b596b5ec062c5b646f442880b9fe19bf799eac17..affb5d3e88509461c57d756ea8102b8337cc7479 100644 (file)
@@ -167,7 +167,7 @@ static void init_random(void)
 #endif
 }
 
-void init_base(void)
+EXPORT void init_base(void)
 {
   PyObject *mod;
   addmethods(methods);