summaryrefslogtreecommitdiff
path: root/orc
diff options
context:
space:
mode:
authorTim-Phillip Müller <tim@centricular.net>2013-02-19 12:23:16 -0800
committerDavid Schleef <ds@schleef.org>2013-02-19 12:38:07 -0800
commit9664aabdf45fbe38e43c7041b234548a2c1bf0ff (patch)
tree56bd497f91e98c01154df7fe017a5be37fdd0a10 /orc
parentb4f7fcaf99a4d952e59f2a9fa9286d24cc4b3a5a (diff)
orcc: add --internal option to mark symbols with internal visibility
Fixes: #52184
Diffstat (limited to 'orc')
-rw-r--r--orc/orcprogram-c.c15
-rw-r--r--orc/orcutils.h10
2 files changed, 22 insertions, 3 deletions
diff --git a/orc/orcprogram-c.c b/orc/orcprogram-c.c
index dac0fe6..83994a1 100644
--- a/orc/orcprogram-c.c
+++ b/orc/orcprogram-c.c
@@ -83,7 +83,20 @@ orc_target_c_get_typedefs (void)
"#else\n"
"#define ORC_RESTRICT\n"
"#endif\n"
- "#endif\n";
+ "#endif\n"
+ "\n"
+ "#ifndef ORC_INTERNAL\n"
+ "#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)\n"
+ "#define ORC_INTERNAL __attribute__((visibility(\"hidden\")))\n"
+ "#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)\n"
+ "#define ORC_INTERNAL __hidden\n"
+ "#elif defined (__GNUC__)\n"
+ "#define ORC_INTERNAL __attribute__((visibility(\"hidden\")))\n"
+ "#else\n"
+ "#define ORC_INTERNAL\n"
+ "#endif\n"
+ "#endif\n"
+ "\n";
}
const char *
diff --git a/orc/orcutils.h b/orc/orcutils.h
index 1ca45b2..d973ba8 100644
--- a/orc/orcutils.h
+++ b/orc/orcutils.h
@@ -162,11 +162,17 @@ typedef unsigned int orc_bool;
#define ORC_GNUC_PREREQ(maj, min) 0
#endif
-#if ORC_GNUC_PREREQ(3,3) && defined(__ELF__)
-#define ORC_INTERNAL __attribute__ ((visibility ("internal")))
+#ifndef ORC_INTERNAL
+#if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)
+#define ORC_INTERNAL __attribute__((visibility("hidden")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+#define ORC_INTERNAL __hidden
+#elif defined (__GNUC__) && ORC_GNUC_PREREQ(3,3) && defined(__ELF__)
+#define ORC_INTERNAL __attribute__((visibility("hidden")))
#else
#define ORC_INTERNAL
#endif
+#endif
#if ORC_GNUC_PREREQ(3,3) /* guess */
#define ORC_GNU_PRINTF(a,b) __attribute__((__format__ (__printf__, a, b)))