diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-21 21:38:25 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-21 21:38:25 +0000 |
commit | 0bd71ff35455d308c838c00a7e16fd093d36e4d7 (patch) | |
tree | a010959775d708f50770d5bbf72cf053c6c56d3e | |
parent | 6abe539cfc9b91178be7e1d75173165dcf6ca1bc (diff) | |
download | ruby-0bd71ff35455d308c838c00a7e16fd093d36e4d7.tar.gz |
* configure.in (XCFLAGS): use -fvisibility=hidden if possible.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | common.mk | 2 | ||||
-rw-r--r-- | configure.in | 6 | ||||
-rw-r--r-- | cont.c | 8 | ||||
-rw-r--r-- | debug.h | 8 | ||||
-rw-r--r-- | dln.h | 9 | ||||
-rw-r--r-- | encoding.c | 11 | ||||
-rw-r--r-- | include/ruby/defines.h | 8 | ||||
-rw-r--r-- | include/ruby/encoding.h | 8 | ||||
-rw-r--r-- | include/ruby/intern.h | 8 | ||||
-rw-r--r-- | include/ruby/io.h | 8 | ||||
-rw-r--r-- | include/ruby/missing.h | 8 | ||||
-rw-r--r-- | include/ruby/oniguruma.h | 8 | ||||
-rw-r--r-- | include/ruby/re.h | 9 | ||||
-rw-r--r-- | include/ruby/regex.h | 8 | ||||
-rw-r--r-- | include/ruby/ruby.h | 8 | ||||
-rw-r--r-- | include/ruby/st.h | 8 | ||||
-rw-r--r-- | include/ruby/util.h | 8 | ||||
-rw-r--r-- | include/ruby/version.h | 10 | ||||
-rw-r--r-- | include/ruby/vm.h | 8 | ||||
-rw-r--r-- | include/ruby/win32.h | 8 | ||||
-rw-r--r-- | iseq.h | 8 | ||||
-rw-r--r-- | regenc.h | 8 | ||||
-rw-r--r-- | regint.h | 8 | ||||
-rw-r--r-- | regparse.h | 8 | ||||
-rw-r--r-- | transcode_data.h | 8 |
26 files changed, 200 insertions, 3 deletions
@@ -1,4 +1,6 @@ -Thu Jul 22 06:26:48 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> +Thu Jul 22 06:38:18 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * configure.in (XCFLAGS): use -fvisibility=hidden if possible. * configure.in (RMDIR): use --ignore-fail-on-non-empty if possible. @@ -680,6 +680,8 @@ newline.$(OBJEXT): {$(VPATH)}newline.c {$(VPATH)}defines.h \ {$(VPATH)}intern.h {$(VPATH)}missing.h {$(VPATH)}st.h \ {$(VPATH)}transcode_data.h {$(VPATH)}ruby.h {$(VPATH)}config.h +$(OBJS): {$(VPATH)}config.h {$(VPATH)}missing.h + INSNS2VMOPT = --srcdir="$(srcdir)" {$(VPATH)}minsns.inc: $(srcdir)/template/minsns.inc.tmpl diff --git a/configure.in b/configure.in index 64af34bc26..f05d85e5e2 100644 --- a/configure.in +++ b/configure.in @@ -269,6 +269,7 @@ if test "$GCC" = yes; then linker_flag=-Wl, : ${optflags=-O3} AS_CASE(["$target_os"], [linux*|darwin*], [: ${debugflags=-ggdb}]) + RUBY_APPEND_OPTIONS(XCFLAGS, ["-include ruby/config.h" "-include ruby/missing.h"]) else linker_flag= fi @@ -414,6 +415,9 @@ if test "$GCC:${warnflags+set}:no" = yes::no; then [wflag=-Wall]) RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"]) fi +if test "$GCC" = yes; then + RUBY_TRY_CFLAGS(-fvisibility=hidden, RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)) +fi test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\"" test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\"" @@ -2160,8 +2164,6 @@ AS_CASE("$enable_shared", [yes], [ LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-install_name '${libprefix}'/$(LIBRUBY_SO)' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(MAJOR).$(MINOR).$(TEENY)' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(ruby_version)' - LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_*' - LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*' LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)' LIBRUBY_SO='lib$(RUBY_SO_NAME).dylib' LIBRUBY_ALIASES='lib$(RUBY_BASE_NAME).$(MAJOR).$(MINOR).dylib lib$(RUBY_INSTALL_NAME).dylib' @@ -1428,6 +1428,10 @@ 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 + void ruby_Init_Continuation_body(void) { @@ -1446,3 +1450,7 @@ ruby_Init_Fiber_as_Coroutine(void) rb_define_method(rb_cFiber, "alive?", rb_fiber_alive_p, 0); rb_define_singleton_method(rb_cFiber, "current", rb_fiber_s_current, 0); } + +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif @@ -15,6 +15,10 @@ #include "ruby/ruby.h" #include "node.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #define dpv(h,v) ruby_debug_print_value(-1, 0, h, v) #define dp(v) ruby_debug_print_value(-1, 0, "", v) #define dpi(i) ruby_debug_print_id(-1, 0, "", i) @@ -33,4 +37,8 @@ void ruby_debug_gc_check_func(void); void ruby_set_debug_option(const char *str); #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif /* RUBY_DEBUG_H */ @@ -28,6 +28,10 @@ # define _(args) () #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + DEPRECATED(char *dln_find_exe(const char*,const char*)); DEPRECATED(char *dln_find_file(const char*,const char*)); char *dln_find_exe_r(const char*,const char*,char*,size_t); @@ -38,4 +42,9 @@ extern char *dln_argv0; #endif void *dln_load(const char*); + +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif diff --git a/encoding.c b/encoding.c index 79b90be10c..76dfac790b 100644 --- a/encoding.c +++ b/encoding.c @@ -23,6 +23,17 @@ #endif #include "ruby/util.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +int rb_enc_register(const char *name, rb_encoding *encoding); +void rb_enc_set_base(const char *name, const char *orig); +void rb_encdb_declare(const char *name); +int rb_encdb_replicate(const char *name, const char *orig); +int rb_encdb_dummy(const char *name); +int rb_encdb_alias(const char *alias, const char *orig); +#pragma GCC visibility pop +#endif + static ID id_encoding; VALUE rb_cEncoding; static VALUE rb_encoding_list; diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 7bb2788aaf..45b19bdc58 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -49,6 +49,10 @@ extern "C" { #define ANYARGS #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #define xmalloc ruby_xmalloc #define xmalloc2 ruby_xmalloc2 #define xcalloc ruby_xcalloc @@ -311,6 +315,10 @@ void rb_ia64_flushrs(void); RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args) #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/encoding.h b/include/ruby/encoding.h index 88f5e52101..2527427b1b 100644 --- a/include/ruby/encoding.h +++ b/include/ruby/encoding.h @@ -22,6 +22,10 @@ extern "C" { #include <stdarg.h> #include "ruby/oniguruma.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #define ENCODING_INLINE_MAX 1023 #define ENCODING_SHIFT (FL_USHIFT+10) #define ENCODING_MASK (((VALUE)ENCODING_INLINE_MAX)<<ENCODING_SHIFT) @@ -312,6 +316,10 @@ 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/intern.h b/include/ruby/intern.h index 98a194d2a6..46b4fe7752 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -28,6 +28,10 @@ extern "C" { #endif #include "ruby/st.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* * Functions and variables that are used by more than one source file of * the kernel. @@ -841,6 +845,10 @@ VALUE rb_time_succ(VALUE); void rb_frame_pop(void); int rb_frame_method_id_and_class(ID *idp, VALUE *klassp); +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/io.h b/include/ruby/io.h index f0f83fc329..ba166f8c9a 100644 --- a/include/ruby/io.h +++ b/include/ruby/io.h @@ -27,6 +27,10 @@ extern "C" { #include <stdio_ext.h> #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + typedef struct rb_io_t { int fd; /* file descriptor */ FILE *stdio_file; /* stdio ptr for read/write if available */ @@ -165,6 +169,10 @@ 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/missing.h b/include/ruby/missing.h index 5b147de6db..f4a5556ddf 100644 --- a/include/ruby/missing.h +++ b/include/ruby/missing.h @@ -49,6 +49,10 @@ struct timezone { #define RUBY_EXTERN extern #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #ifndef HAVE_ACOSH RUBY_EXTERN double acosh(double); RUBY_EXTERN double asinh(double); @@ -169,6 +173,10 @@ RUBY_EXTERN int signbit(double x); RUBY_EXTERN int ffs(int); #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/oniguruma.h b/include/ruby/oniguruma.h index 41628ed4af..2674b010e7 100644 --- a/include/ruby/oniguruma.h +++ b/include/ruby/oniguruma.h @@ -97,6 +97,10 @@ extern "C" { #define ONIG_EXTERN extern #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* PART: character encoding */ #ifndef ONIG_ESCAPE_UCHAR_COLLISION @@ -789,6 +793,10 @@ const char* onig_version P_((void)); ONIG_EXTERN const char* onig_copyright P_((void)); +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #ifdef __cplusplus #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/re.h b/include/ruby/re.h index c60ab96016..4039ba1800 100644 --- a/include/ruby/re.h +++ b/include/ruby/re.h @@ -24,6 +24,10 @@ extern "C" { #include "ruby/regex.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + typedef struct re_pattern_buffer Regexp; struct rmatch_offset { @@ -55,6 +59,11 @@ VALUE rb_reg_regsub(VALUE, VALUE, struct re_registers *, VALUE); long rb_reg_adjust_startpos(VALUE, VALUE, long, int); 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 #if defined(__cplusplus) #if 0 diff --git a/include/ruby/regex.h b/include/ruby/regex.h index a63e2f6a4c..aeb6418d0a 100644 --- a/include/ruby/regex.h +++ b/include/ruby/regex.h @@ -24,6 +24,10 @@ extern "C" { #include "oniguruma.h" #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #ifndef ONIG_RUBY_M17N ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; @@ -32,6 +36,10 @@ ONIG_EXTERN OnigEncoding OnigEncDefaultCharEncoding; #endif /* ifndef ONIG_RUBY_M17N */ +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/ruby.h b/include/ruby/ruby.h index 936493c028..c01d617ba3 100644 --- a/include/ruby/ruby.h +++ b/include/ruby/ruby.h @@ -73,6 +73,10 @@ extern "C" { #include "defines.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #if defined(HAVE_ALLOCA_H) #include <alloca.h> #else @@ -1447,6 +1451,10 @@ int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap); #define close ruby_close #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/st.h b/include/ruby/st.h index 27e47b816c..53e82618f1 100644 --- a/include/ruby/st.h +++ b/include/ruby/st.h @@ -33,6 +33,10 @@ extern "C" { # include <inttypes.h> #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #if SIZEOF_LONG == SIZEOF_VOIDP typedef unsigned long st_data_t; #elif SIZEOF_LONG_LONG == SIZEOF_VOIDP @@ -125,6 +129,10 @@ 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/util.h b/include/ruby/util.h index 0c1e1c4ebc..ee8e726572 100644 --- a/include/ruby/util.h +++ b/include/ruby/util.h @@ -40,6 +40,10 @@ extern "C" { #endif #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #define scan_oct(s,l,e) (int)ruby_scan_oct(s,l,e) unsigned long ruby_scan_oct(const char *, size_t, size_t *); #define scan_hex(s,l,e) (int)ruby_scan_hex(s,l,e) @@ -80,6 +84,10 @@ 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/version.h b/include/ruby/version.h index 32b09b3f52..101b5d9c63 100644 --- a/include/ruby/version.h +++ b/include/ruby/version.h @@ -36,6 +36,11 @@ extern "C" { } /* satisfy cc-mode */ #endif #endif + +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* * Interfaces from extension libraries. * @@ -50,6 +55,11 @@ RUBY_EXTERN const int ruby_patchlevel; 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/vm.h b/include/ruby/vm.h index ac8e599e90..072d7d6f19 100644 --- a/include/ruby/vm.h +++ b/include/ruby/vm.h @@ -19,6 +19,10 @@ extern "C" { #endif #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* Place holder. * * We will prepare VM creation/control APIs on 1.9.2 or later. @@ -32,6 +36,10 @@ typedef struct rb_vm_struct ruby_vm_t; /* core API */ int ruby_vm_destruct(ruby_vm_t *vm); +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ diff --git a/include/ruby/win32.h b/include/ruby/win32.h index 47a85270a5..b9299883bc 100644 --- a/include/ruby/win32.h +++ b/include/ruby/win32.h @@ -8,6 +8,10 @@ extern "C" { #endif #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* * Copyright (c) 1993, Intergraph Corporation * @@ -662,6 +666,10 @@ 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 + #if defined(__cplusplus) #if 0 { /* satisfy cc-mode */ @@ -12,6 +12,10 @@ #ifndef RUBY_COMPILE_H #define RUBY_COMPILE_H +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* compile.c */ VALUE rb_iseq_compile_node(VALUE self, NODE *node); int rb_iseq_translate_threaded_code(rb_iseq_t *iseq); @@ -101,4 +105,8 @@ struct iseq_compile_data { #define DEFINED_ZSUPER INT2FIX(9) #define DEFINED_FUNC INT2FIX(10) +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif /* RUBY_COMPILE_H */ @@ -39,6 +39,10 @@ #endif #include "ruby/oniguruma.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + typedef struct { OnigCodePoint from; OnigCodePoint to; @@ -208,4 +212,8 @@ 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 + #endif /* ONIGURUMA_REGENC_H */ @@ -225,6 +225,10 @@ #include "regenc.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #ifdef MIN #undef MIN #endif @@ -838,4 +842,8 @@ typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void); extern int onigenc_property_list_init P_((ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)); +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif /* ONIGURUMA_REGINT_H */ diff --git a/regparse.h b/regparse.h index 18f7e6bd8f..fbe5a251a6 100644 --- a/regparse.h +++ b/regparse.h @@ -31,6 +31,10 @@ #include "regint.h" +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + /* node type */ #define NT_STR 0 #define NT_CCLASS 1 @@ -351,4 +355,8 @@ extern int onig_print_names(FILE*, regex_t*); #endif #endif +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif /* ONIGURUMA_REGPARSE_H */ diff --git a/transcode_data.h b/transcode_data.h index d0f3d0f764..8e85ce6db4 100644 --- a/transcode_data.h +++ b/transcode_data.h @@ -14,6 +14,10 @@ #ifndef RUBY_TRANSCODE_DATA_H #define RUBY_TRANSCODE_DATA_H 1 +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility push(default) +#endif + #define WORDINDEX_SHIFT_BITS 2 #define WORDINDEX2INFO(widx) ((widx) << WORDINDEX_SHIFT_BITS) #define INFO2WORDINDEX(info) ((info) >> WORDINDEX_SHIFT_BITS) @@ -106,4 +110,8 @@ struct rb_transcoder { void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib); void rb_register_transcoder(const rb_transcoder *); +#if defined __GNUC__ && __GNUC__ >= 4 +#pragma GCC visibility pop +#endif + #endif /* RUBY_TRANSCODE_DATA_H */ |