summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-05 10:29:38 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-04-05 10:29:38 +0000
commitbff997e02b5b5f96d742be84c6e15f85aa728d29 (patch)
tree9345ddb7f926663b3a0335de757fc67febf7059d
parent5f77f2345c03009d4172cea386ee52b0379f9fcf (diff)
defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END}
* include/ruby/defines.h (RUBY_SYMBOL_EXPORT_{BEGIN,END}): visibility control macros. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--configure.in2
-rw-r--r--cont.c8
-rw-r--r--dln.h8
-rw-r--r--gc.h8
-rw-r--r--include/ruby/backward/rubysig.h8
-rw-r--r--include/ruby/debug.h8
-rw-r--r--include/ruby/defines.h11
-rw-r--r--include/ruby/encoding.h8
-rw-r--r--include/ruby/intern.h8
-rw-r--r--include/ruby/io.h8
-rw-r--r--include/ruby/missing.h13
-rw-r--r--include/ruby/oniguruma.h8
-rw-r--r--include/ruby/re.h8
-rw-r--r--include/ruby/regex.h8
-rw-r--r--include/ruby/ruby.h8
-rw-r--r--include/ruby/st.h8
-rw-r--r--include/ruby/thread.h8
-rw-r--r--include/ruby/util.h8
-rw-r--r--include/ruby/version.h8
-rw-r--r--include/ruby/vm.h8
-rw-r--r--include/ruby/win32.h8
-rw-r--r--internal.h8
-rw-r--r--iseq.h8
-rw-r--r--node.h8
-rw-r--r--regenc.h8
-rw-r--r--regint.h8
-rw-r--r--regparse.h8
-rw-r--r--transcode_data.h8
-rw-r--r--vm_backtrace.c8
-rw-r--r--vm_core.h24
-rw-r--r--vm_debug.h8
31 files changed, 75 insertions, 191 deletions
diff --git a/configure.in b/configure.in
index 1e9048dbf8..ed29b423f1 100644
--- a/configure.in
+++ b/configure.in
@@ -769,6 +769,8 @@ if test "$GCC" = yes; then
AC_SUBST(WERRORFLAG, "-Werror")
if test "$visibility_option" = yes; then
RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_BEGIN, [_Pragma("GCC visibility push(default)")])
+ AC_DEFINE(RUBY_SYMBOL_EXPORT_END, [_Pragma("GCC visibility pop")])
else
RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
fi
diff --git a/cont.c b/cont.c
index 2656cbeb2c..22cf72e9f1 100644
--- a/cont.c
+++ b/cont.c
@@ -1540,9 +1540,7 @@ Init_Cont(void)
rb_define_method(rb_cFiber, "resume", rb_fiber_m_resume, -1);
}
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
void
ruby_Init_Continuation_body(void)
@@ -1563,6 +1561,4 @@ ruby_Init_Fiber_as_Coroutine(void)
rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0);
}
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
diff --git a/dln.h b/dln.h
index abbd6d85a3..713bf8b56f 100644
--- a/dln.h
+++ b/dln.h
@@ -28,9 +28,7 @@
# define _(args) ()
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
DEPRECATED(char *dln_find_exe(const char*,const char*));
DEPRECATED(char *dln_find_file(const char*,const char*));
@@ -43,8 +41,6 @@ extern char *dln_argv0;
void *dln_load(const char*);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif
diff --git a/gc.h b/gc.h
index bb39228632..9312f9cff7 100644
--- a/gc.h
+++ b/gc.h
@@ -83,9 +83,7 @@ int ruby_get_stack_grow_direction(volatile VALUE *addr);
#endif
#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* exports for objspace module */
size_t rb_objspace_data_type_memsize(VALUE obj);
@@ -97,8 +95,6 @@ void rb_objspace_each_objects(
int (*callback)(void *start, void *end, size_t stride, void *data),
void *data);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_GC_H */
diff --git a/include/ruby/backward/rubysig.h b/include/ruby/backward/rubysig.h
index f46679ae67..945a09a8c8 100644
--- a/include/ruby/backward/rubysig.h
+++ b/include/ruby/backward/rubysig.h
@@ -27,9 +27,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
struct rb_blocking_region_buffer;
DEPRECATED(RUBY_EXTERN struct rb_blocking_region_buffer *rb_thread_blocking_region_begin(void));
@@ -42,9 +40,7 @@ DEPRECATED(RUBY_EXTERN void rb_thread_blocking_region_end(struct rb_blocking_reg
#define ALLOW_INTS do {CHECK_INTS;} while (0)
#define CHECK_INTS rb_thread_check_ints()
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/debug.h b/include/ruby/debug.h
index 4ef45a8327..67e15a8d2f 100644
--- a/include/ruby/debug.h
+++ b/include/ruby/debug.h
@@ -19,9 +19,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* Note: This file contains experimental APIs. */
/* APIs can be replaced at Ruby 2.0.1 or later */
@@ -79,9 +77,7 @@ typedef enum {
void rb_add_event_hook2(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
void rb_thread_add_event_hook2(VALUE thval, rb_event_hook_func_t func, rb_event_flag_t events, VALUE data, rb_event_hook_flag_t hook_flag);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/defines.h b/include/ruby/defines.h
index c741b0ec28..99305b2c4b 100644
--- a/include/ruby/defines.h
+++ b/include/ruby/defines.h
@@ -88,10 +88,13 @@ extern "C" {
#define ANYARGS
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
+#ifndef RUBY_SYMBOL_EXPORT_BEGIN
+# define RUBY_SYMBOL_EXPORT_BEGIN /* begin */
+# define RUBY_SYMBOL_EXPORT_END /* end */
#endif
+RUBY_SYMBOL_EXPORT_BEGIN
+
#define xmalloc ruby_xmalloc
#define xmalloc2 ruby_xmalloc2
#define xcalloc ruby_xcalloc
@@ -281,9 +284,7 @@ void rb_ia64_flushrs(void);
RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h
index 41640ec7e0..1233053063 100644
--- a/include/ruby/encoding.h
+++ b/include/ruby/encoding.h
@@ -22,9 +22,7 @@ extern "C" {
#include <stdarg.h>
#include "ruby/oniguruma.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#define ENCODING_INLINE_MAX 1023
#define ENCODING_SHIFT (FL_USHIFT+10)
@@ -340,9 +338,7 @@ void rb_econv_binmode(rb_econv_t *ec);
#define ECONV_AFTER_OUTPUT 0x00020000
/* end of flags for rb_econv_convert */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/intern.h b/include/ruby/intern.h
index de430a9eaf..7377718222 100644
--- a/include/ruby/intern.h
+++ b/include/ruby/intern.h
@@ -34,9 +34,7 @@ extern "C" {
#include "ruby/st.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/*
* Functions and variables that are used by more than one source file of
@@ -909,9 +907,7 @@ int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
VALUE rb_make_backtrace(void);
VALUE rb_make_exception(int, VALUE*);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/io.h b/include/ruby/io.h
index b5ea2e9c95..bcdee3b0c0 100644
--- a/include/ruby/io.h
+++ b/include/ruby/io.h
@@ -49,9 +49,7 @@ extern "C" {
# define RB_WAITFD_OUT 0x004
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
typedef struct {
char *ptr; /* off + len <= capa */
@@ -199,9 +197,7 @@ void rb_io_read_check(rb_io_t*);
int rb_io_read_pending(rb_io_t*);
DEPRECATED(void rb_read_check(FILE*));
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/missing.h b/include/ruby/missing.h
index 9b502cd3d8..5dba4edda7 100644
--- a/include/ruby/missing.h
+++ b/include/ruby/missing.h
@@ -34,6 +34,11 @@ extern "C" {
#endif
#endif
+#ifndef RUBY_SYMBOL_EXPORT_BEGIN
+# define RUBY_SYMBOL_EXPORT_BEGIN /* begin */
+# define RUBY_SYMBOL_EXPORT_END /* end */
+#endif
+
#if !defined(HAVE_STRUCT_TIMEVAL)
struct timeval {
time_t tv_sec; /* seconds */
@@ -62,9 +67,7 @@ struct timezone {
#define RUBY_EXTERN extern
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#ifndef HAVE_ACOSH
RUBY_EXTERN double acosh(double);
@@ -229,9 +232,7 @@ RUBY_EXTERN int ruby_close(int);
RUBY_EXTERN void setproctitle(const char *fmt, ...);
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/oniguruma.h b/include/ruby/oniguruma.h
index e3763adc59..b96773e11e 100644
--- a/include/ruby/oniguruma.h
+++ b/include/ruby/oniguruma.h
@@ -98,9 +98,7 @@ extern "C" {
#define ONIG_EXTERN extern
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#include <stddef.h> /* for size_t */
@@ -825,9 +823,7 @@ const char* onig_version P_((void));
ONIG_EXTERN
const char* onig_copyright P_((void));
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#ifdef __cplusplus
#if 0
diff --git a/include/ruby/re.h b/include/ruby/re.h
index 4039ba1800..41b3e492f8 100644
--- a/include/ruby/re.h
+++ b/include/ruby/re.h
@@ -24,9 +24,7 @@ extern "C" {
#include "ruby/regex.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
typedef struct re_pattern_buffer Regexp;
@@ -61,9 +59,7 @@ void rb_match_busy(VALUE);
VALUE rb_reg_quote(VALUE);
regex_t *rb_reg_prepare_re(VALUE re, VALUE str);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/regex.h b/include/ruby/regex.h
index aeb6418d0a..024bed4a4e 100644
--- a/include/ruby/regex.h
+++ b/include/ruby/regex.h
@@ -24,9 +24,7 @@ extern "C" {
#include "oniguruma.h"
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#ifndef ONIG_RUBY_M17N
@@ -36,9 +34,7 @@ ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding;
#endif /* ifndef ONIG_RUBY_M17N */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h
index 3822942d07..5bd71121f6 100644
--- a/include/ruby/ruby.h
+++ b/include/ruby/ruby.h
@@ -55,9 +55,7 @@ extern "C" {
#include <stdarg.h>
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* Make alloca work the best possible way. */
#ifdef __GNUC__
@@ -1708,9 +1706,7 @@ void ruby_sig_finalize(void);
/*! @} */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/st.h b/include/ruby/st.h
index 466bbcf5f6..ef838b7aeb 100644
--- a/include/ruby/st.h
+++ b/include/ruby/st.h
@@ -14,9 +14,7 @@ extern "C" {
#include "ruby/defines.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#if SIZEOF_LONG == SIZEOF_VOIDP
typedef unsigned long st_data_t;
@@ -130,9 +128,7 @@ st_index_t st_hash_end(st_index_t h);
st_index_t st_hash_start(st_index_t h);
#define st_hash_start(h) ((st_index_t)(h))
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/thread.h b/include/ruby/thread.h
index fb9057c70f..550f678e54 100644
--- a/include/ruby/thread.h
+++ b/include/ruby/thread.h
@@ -21,9 +21,7 @@ extern "C" {
#include "ruby/intern.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
@@ -35,9 +33,7 @@ void *rb_thread_call_without_gvl2(void *(*func)(void *), void *data1,
#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_AFTER 0x01
#define RUBY_CALL_WO_GVL_FLAG_SKIP_CHECK_INTS_
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/util.h b/include/ruby/util.h
index 02aa643916..5be5f2e0b4 100644
--- a/include/ruby/util.h
+++ b/include/ruby/util.h
@@ -45,9 +45,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#define scan_oct(s,l,e) ((int)ruby_scan_oct((s),(l),(e)))
unsigned long ruby_scan_oct(const char *, size_t, size_t *);
@@ -85,9 +83,7 @@ double ruby_strtod(const char *, char **);
void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/version.h b/include/ruby/version.h
index 9ecf6fe2a5..4ffcc7a9ad 100644
--- a/include/ruby/version.h
+++ b/include/ruby/version.h
@@ -43,9 +43,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/*
* Interfaces from extension libraries.
@@ -63,9 +61,7 @@ RUBY_EXTERN const char ruby_description[];
RUBY_EXTERN const char ruby_copyright[];
RUBY_EXTERN const char ruby_engine[];
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/vm.h b/include/ruby/vm.h
index 1146bf5426..73345264bd 100644
--- a/include/ruby/vm.h
+++ b/include/ruby/vm.h
@@ -19,9 +19,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* Place holder.
*
@@ -54,9 +52,7 @@ int ruby_vm_destruct(ruby_vm_t *vm);
*/
void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/include/ruby/win32.h b/include/ruby/win32.h
index a2eec0cf19..56fa3e5c0c 100644
--- a/include/ruby/win32.h
+++ b/include/ruby/win32.h
@@ -8,9 +8,7 @@ extern "C" {
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/*
* Copyright (c) 1993, Intergraph Corporation
@@ -735,9 +733,7 @@ in asynchronous_func_t.
typedef uintptr_t (*asynchronous_func_t)(uintptr_t self, int argc, uintptr_t* argv);
uintptr_t rb_w32_asynchronize(asynchronous_func_t func, uintptr_t self, int argc, uintptr_t* argv, uintptr_t intrval);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#ifdef __MINGW_ATTRIB_PURE
/* License: Ruby's */
diff --git a/internal.h b/internal.h
index b19d321086..b832a95c89 100644
--- a/internal.h
+++ b/internal.h
@@ -365,9 +365,7 @@ int rb_backtrace_p(VALUE obj);
VALUE rb_backtrace_to_str_ary(VALUE obj);
VALUE rb_vm_backtrace_object();
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
const char *rb_objspace_data_type_name(VALUE obj);
/* Temporary. This API will be removed (renamed). */
@@ -393,9 +391,7 @@ void rb_gc_mark_global_tbl(void);
void rb_mark_generic_ivar(VALUE);
void rb_mark_generic_ivar_tbl(void);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/iseq.h b/iseq.h
index 0790529638..c7069ab9c4 100644
--- a/iseq.h
+++ b/iseq.h
@@ -12,9 +12,7 @@
#ifndef RUBY_COMPILE_H
#define RUBY_COMPILE_H
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* compile.c */
VALUE rb_iseq_compile_node(VALUE self, NODE *node);
@@ -132,8 +130,6 @@ VALUE rb_iseq_defined_string(enum defined_type type);
#define DEFAULT_SPECIAL_VAR_COUNT 2
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_COMPILE_H */
diff --git a/node.h b/node.h
index 0fa72545c2..3d915c53fe 100644
--- a/node.h
+++ b/node.h
@@ -466,9 +466,7 @@ typedef struct RNode {
roomof(type, VALUE)), \
MEMO_FOR(type, value))
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
VALUE rb_parser_new(void);
VALUE rb_parser_end_seen_p(VALUE);
@@ -525,9 +523,7 @@ void *rb_parser_realloc(struct parser_params *, void *, size_t);
void *rb_parser_calloc(struct parser_params *, size_t, size_t);
void rb_parser_free(struct parser_params *, void *);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#if defined(__cplusplus)
#if 0
diff --git a/regenc.h b/regenc.h
index 3ad3faea3e..04a5e70db3 100644
--- a/regenc.h
+++ b/regenc.h
@@ -40,9 +40,7 @@
#endif
#include "ruby/oniguruma.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
typedef struct {
OnigCodePoint from;
@@ -220,8 +218,6 @@ extern int ONIG_ENC_REGISTER(const char *, OnigEncodingType*);
#define ENC_ALIAS(name, orig)
#define ENC_DUMMY(name)
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* ONIGURUMA_REGENC_H */
diff --git a/regint.h b/regint.h
index 3b55d8e9f9..00d947a5b7 100644
--- a/regint.h
+++ b/regint.h
@@ -262,9 +262,7 @@ typedef unsigned int uintptr_t;
#include "regenc.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#ifdef MIN
#undef MIN
@@ -907,8 +905,6 @@ extern int onigenc_property_list_init P_((ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE))
extern size_t onig_memsize P_((const regex_t *reg));
extern size_t onig_region_memsize P_((const struct re_registers *regs));
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* ONIGURUMA_REGINT_H */
diff --git a/regparse.h b/regparse.h
index 4f45e2b72c..c92babfebe 100644
--- a/regparse.h
+++ b/regparse.h
@@ -32,9 +32,7 @@
#include "regint.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* node type */
#define NT_STR 0
@@ -360,8 +358,6 @@ extern int onig_print_names(FILE*, regex_t*);
#endif
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* ONIGURUMA_REGPARSE_H */
diff --git a/transcode_data.h b/transcode_data.h
index dcaee61033..fcb05cc39f 100644
--- a/transcode_data.h
+++ b/transcode_data.h
@@ -14,9 +14,7 @@
#ifndef RUBY_TRANSCODE_DATA_H
#define RUBY_TRANSCODE_DATA_H 1
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#define WORDINDEX_SHIFT_BITS 2
#define WORDINDEX2INFO(widx) ((widx) << WORDINDEX_SHIFT_BITS)
@@ -120,8 +118,6 @@ void rb_register_transcoder(const rb_transcoder *);
# define TRANS_INIT(name) void Init_ ## name(void)
#endif
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_TRANSCODE_DATA_H */
diff --git a/vm_backtrace.c b/vm_backtrace.c
index 5f1cdabb70..1cc0d07f12 100644
--- a/vm_backtrace.c
+++ b/vm_backtrace.c
@@ -996,13 +996,9 @@ Init_vm_backtrace(void)
/* debugger API */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
struct rb_debug_inspector_struct {
rb_thread_t *th;
diff --git a/vm_core.h b/vm_core.h
index 79290566ba..8cf3695554 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -633,9 +633,7 @@ typedef enum {
((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
/* iseq.c */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
/* node -> iseq */
VALUE rb_iseq_new(NODE*, VALUE, VALUE, VALUE, VALUE, enum iseq_type);
@@ -658,9 +656,7 @@ RUBY_EXTERN VALUE rb_cISeq;
RUBY_EXTERN VALUE rb_cRubyVM;
RUBY_EXTERN VALUE rb_cEnv;
RUBY_EXTERN VALUE rb_mRubyVMFrozenCore;
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#define GetProcPtr(obj, ptr) \
GetCoreDataFromValue((obj), rb_proc_t, (ptr))
@@ -816,14 +812,10 @@ extern void rb_vmdebug_debug_print_post(rb_thread_t *th, rb_control_frame_t *cfp
void rb_vm_bugreport(void);
/* functions about thread/vm execution */
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
VALUE rb_iseq_eval(VALUE iseqval);
VALUE rb_iseq_eval_main(VALUE iseqval);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
int rb_thread_method_id_and_class(rb_thread_t *th, ID *idp, VALUE *klassp);
VALUE rb_vm_invoke_proc(rb_thread_t *th, rb_proc_t *proc,
@@ -996,9 +988,7 @@ void rb_threadptr_exec_event_hooks_and_pop_frame(struct rb_trace_arg_struct *tra
#define EXEC_EVENT_HOOK_AND_POP_FRAME(th_, flag_, self_, id_, klass_, data_) \
EXEC_EVENT_HOOK_ORIG(th_, flag_, self_, id_, klass_, data_, 1)
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
int rb_thread_check_trap_pending(void);
@@ -1006,8 +996,6 @@ extern VALUE rb_get_coverages(void);
extern void rb_set_coverages(VALUE);
extern void rb_reset_coverages(void);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_VM_CORE_H */
diff --git a/vm_debug.h b/vm_debug.h
index 424390fade..32e060732c 100644
--- a/vm_debug.h
+++ b/vm_debug.h
@@ -15,9 +15,7 @@
#include "ruby/ruby.h"
#include "node.h"
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility push(default)
-#endif
+RUBY_SYMBOL_EXPORT_BEGIN
#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
@@ -34,8 +32,6 @@ void ruby_debug_breakpoint(void);
void ruby_debug_gc_check_func(void);
void ruby_set_debug_option(const char *str);
-#if defined __GNUC__ && __GNUC__ >= 4
-#pragma GCC visibility pop
-#endif
+RUBY_SYMBOL_EXPORT_END
#endif /* RUBY_DEBUG_H */