VirtualBox

Changeset 2435

Show
Ignore:
Timestamp:
04/30/07 16:58:17 (2 years ago)
Author:
vboxsync
Message:

with gcc, mark all ELF symbols with visibility=hidden by default and mark symbols which should be exported as visibility=default

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Config.kmk

    r2383 r2435  
    842842 export VBOX_GCC_fno-stack-protector := $(call VBOX_GCC_CHECK_CC,-fno-stack-protector,) 
    843843endif 
     844# Set default attribute for ELF symbols to ``hidden'' to reduce the number 
     845# of relocation entries and PLT indirections in shared libraries. 
     846ifeq ($(origin VBOX_GCC_fvisibility-hidden),undefined) 
     847 export VBOX_GCC_fvisibility-hidden := $(call VBOX_GCC_CHECK_CC,-fvisibility=hidden,) 
     848endif 
     849# Set default attribute for inline functions to ``hidden'' to reduce the number 
     850# of relocation entries and PLT indirections in shared libraries. 
     851ifeq ($(origin VBOX_GCC_fvisibility-inlines-hidden),undefined) 
     852 export VBOX_GCC_fvisibility-inlines-hidden := $(call VBOX_GCC_CHECK_CXX,-fvisibility-inlines-hidden,) 
     853endif 
    844854 
    845855# 32-bit (GC) compiler switch detection. 
     
    10941104ifeq ($(VBOX_LDR_FMT32),elf) 
    10951105TEMPLATE_VBOXGC_TOOL                = $(VBOX_GCC32_TOOL) 
    1096 TEMPLATE_VBOXGC_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-exceptions -fno-rtti $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) 
    1097 TEMPLATE_VBOXGC_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) 
     1106TEMPLATE_VBOXGC_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -fno-exceptions -fno-rtti $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) 
     1107TEMPLATE_VBOXGC_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC32_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_GC_OPT) $(VBOX_GCC_GC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) 
    10981108TEMPLATE_VBOXGC_LDFLAGS             = -nostdlib -Bsymbolic 
    10991109# temporarily, must fix the loader. 
     
    11891199ifeq ($(VBOX_LDR_FMT),elf) 
    11901200TEMPLATE_VBOXR0_TOOL                = $(VBOX_GCC_TOOL) 
    1191 TEMPLATE_VBOXR0_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) 
    1192 TEMPLATE_VBOXR0_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-rtti -fno-exceptions $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) 
     1201TEMPLATE_VBOXR0_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-hidden) 
     1202TEMPLATE_VBOXR0_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -fno-rtti -fno-exceptions $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) 
    11931203TEMPLATE_VBOXR0_CFLAGS.amd64        = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables -ffreestanding 
    11941204TEMPLATE_VBOXR0_CXXFLAGS.amd64      = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -fno-asynchronous-unwind-tables 
     
    13781388else # the gcc guys 
    13791389TEMPLATE_VBOXR3EXE_TOOL                = $(VBOX_GCC_TOOL) 
    1380 TEMPLATE_VBOXR3EXE_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing 
     1390TEMPLATE_VBOXR3EXE_CXXFLAGS            = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) 
    13811391# L4 currently can't handle exception handling. 
    13821392TEMPLATE_VBOXR3EXE_CXXFLAGS.l4         = -fno-exceptions -nostdinc \ 
     
    13861396TEMPLATE_VBOXR3EXE_CFLAGS.debug        = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.debug) 
    13871397TEMPLATE_VBOXR3EXE_CFLAGS.kprofile     = $(TEMPLATE_VBOXR3EXE_CXXFLAGS.kprofile) 
    1388 TEMPLATE_VBOXR3EXE_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing 
     1398TEMPLATE_VBOXR3EXE_CFLAGS              = -g -Wall -pedantic -Wno-long-long -Wno-trigraphs $(VBOX_GCC_Wno-variadic-macros) -pipe -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-hidden) 
    13891399TEMPLATE_VBOXR3EXE_CFLAGS.darwin       = -fno-common 
    13901400TEMPLATE_VBOXR3EXE_CFLAGS.l4           = -nostdinc \ 
     
    14641474 TEMPLATE_VBOXR3NPEXE_TOOL                = $(VBOX_GCC_TOOL) 
    14651475 TEMPLATE_VBOXR3NPEXE_CXXFLAGS            = $(filter-out -pedantic,$(TEMPLATE_VBOXR3EXE_CXXFLAGS)) 
    1466  TEMPLATE_VBOXR3NPEXE_CFLAGS              = $(filter-out -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations ,$(TEMPLATE_VBOXR3EXE_CXXFLAGS)) 
     1476 TEMPLATE_VBOXR3NPEXE_CFLAGS              = $(filter-out -pedantic -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations,$(TEMPLATE_VBOXR3EXE_CFLAGS)) 
    14671477endif 
    14681478 
     
    16111621TEMPLATE_VBOXMAINEXE_DEFS               += VBOX_WITH_XPCOM 
    16121622TEMPLATE_VBOXMAINEXE_TOOL                = $(VBOX_GCC_TOOL) 
    1613 TEMPLATE_VBOXMAINEXE_CXXFLAGS            = -g -Wall -Wno-long-long -Wno-trigraphs -pipe  -Wno-non-virtual-dtor -fshort-wchar -fpermissive $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing 
     1623TEMPLATE_VBOXMAINEXE_CXXFLAGS            = -g -Wall -Wno-long-long -Wno-trigraphs -pipe  -Wno-non-virtual-dtor -fshort-wchar -fpermissive $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) 
    16141624TEMPLATE_VBOXMAINEXE_CXXFLAGS.debug      = -fno-inline 
    16151625TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile   = -finstrument-functions 
    1616 TEMPLATE_VBOXMAINEXE_CFLAGS              = -g -Wall -Wno-long-long -Wno-trigraphs -pipe  -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing 
     1626TEMPLATE_VBOXMAINEXE_CFLAGS              = -g -Wall -Wno-long-long -Wno-trigraphs -pipe  -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing $(VBOX_GCC_fvisibility-hidden) 
    16171627TEMPLATE_VBOXMAINEXE_CFLAGS.debug        = -fno-inline 
    16181628TEMPLATE_VBOXMAINEXE_CFLAGS.kprofile     = $(TEMPLATE_VBOXMAINEXE_CXXFLAGS.kprofile) 
     
    17721782 TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = \ 
    17731783        -pipe -Wall -W -frtti -fno-exceptions -Wno-non-virtual-dtor \ 
    1774         -Wno-long-long -fshort-wchar -fno-strict-aliasing 
     1784        -Wno-long-long -fshort-wchar -fno-strict-aliasing \ 
     1785        $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) 
    17751786 TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.linux = -pthread 
    17761787 ## @todo no $(LIB_QTMAIN) here? 
  • trunk/include/iprt/cdefs.h

    r2358 r2435  
    401401# define DECLEXPORT(type)       __declspec(dllexport) type 
    402402#else 
    403 # define DECLEXPORT(type)       type 
     403# define DECLEXPORT(type)       __attribute__((visibility("default"))) type 
    404404#endif 
    405405 
  • trunk/src/libs/xpcom18a4/Makefile.kmk

    r2366 r2435  
    3232TEMPLATE_XPCOM_ASDEFS              = $(NO_SUCH_VARIABLE) 
    3333TEMPLATE_XPCOM_CXXFLAGS            = -pipe -ansi -Wall -Wno-unused -Wno-non-virtual-dtor \ 
    34                                      $(VBOX_GCC_Wno-invalid-offsetof) -Wno-sign-compare -Wno-unused -Wno-ctor-dtor-privacy 
     34                                     $(VBOX_GCC_Wno-invalid-offsetof) -Wno-sign-compare -Wno-unused -Wno-ctor-dtor-privacy \ 
     35                                     $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) 
    3536 
    3637TEMPLATE_XPCOM_CXXFLAGS.debug      = -fno-inline 
     
    4041TEMPLATE_XPCOM_CXXFLAGS.l4         = -fno-exceptions -nostdinc 
    4142TEMPLATE_XPCOM_CXXFLAGS.linux      = -pthread 
    42 TEMPLATE_XPCOM_CFLAGS              = -pipe -Wall -Wno-unused -Wno-parentheses -Wno-uninitialized 
     43TEMPLATE_XPCOM_CFLAGS              = -pipe -Wall -Wno-unused -Wno-parentheses -Wno-uninitialized $(VBOX_GCC_fvisibility-hidden) 
    4344TEMPLATE_XPCOM_CFLAGS.debug        = -fno-inline 
    4445TEMPLATE_XPCOM_CFLAGS.release      = -O 
     
    4647TEMPLATE_XPCOM_CFLAGS.l4           = -nostdinc 
    4748TEMPLATE_XPCOM_CFLAGS.linux        = -pthread -ansi 
    48 TEMPLATE_XPCOM_DEFS                = MOZILLA_CLIENT=1 NDEBUG=1 
     49TEMPLATE_XPCOM_DEFS                = MOZILLA_CLIENT=1 NDEBUG=1 _IMPL_NS_COM 
    4950TEMPLATE_XPCOM_DEFS.x86            = i386=1 
    5051TEMPLATE_XPCOM_DEFS.amd64          = HAVE_VA_LIST_AS_ARRAY HAVE_VA_COPY VA_COPY\(a\,b\)=__builtin_va_copy\(a\,b\) 
    51 TEMPLATE_XPCOM_DEFS.darwin         = OSTYPE=\"Darwin8.8.1\" OSARCH=\"Darwin\" MOZ_DLL_SUFFIX=\".dylib\" XP_UNIX=1 XP_MACOSX=1 TARGET_CARBON=1 
    52 TEMPLATE_XPCOM_DEFS.linux          = OSTYPE=\"Linux2.6\"    OSARCH=\"Linux\"  MOZ_DLL_SUFFIX=\".so\"    XP_UNIX=1 _GNU_SOURCE 
    53 TEMPLATE_XPCOM_DEFS.l4             = OSTYPE=\"L4ENV\"       OSARCH=\"L4\"     MOZ_DLL_SUFFIX=\".s.so\"  XP_UNIX=1 L4ENV 
     52TEMPLATE_XPCOM_DEFS.darwin         = OSTYPE=\"Darwin8.8.1\" OSARCH=\"Darwin\" MOZ_DLL_SUFFIX=\".dylib\" XP_UNIX=1 XP_MACOSX=1 TARGET_CARBON=1 HAVE_VISIBILITY_ATTRIBUTE=1 
     53TEMPLATE_XPCOM_DEFS.linux          = OSTYPE=\"Linux2.6\"    OSARCH=\"Linux\"  MOZ_DLL_SUFFIX=\".so\"    XP_UNIX=1 _GNU_SOURCE HAVE_VISIBILITY_ATTRIBUTE=1 
     54TEMPLATE_XPCOM_DEFS.l4             = OSTYPE=\"L4ENV\"       OSARCH=\"L4\"     MOZ_DLL_SUFFIX=\".s.so\"  XP_UNIX=1 L4ENV HAVE_VISIBILITY_ATTRIBUTE=1 
    5455TEMPLATE_XPCOM_DEFS.os2            = OSTYPE=\"OS/2 4.5\"    OSARCH=\"OS/2\"   MOZ_DLL_SUFFIX=\".dll\"   XP_UNIX=1 
    5556TEMPLATE_XPCOM_LDFLAGS.darwin      = $(VBOXR3NP_LDFLAGS.darwin) \ 
     
    554555        FORCE_PR_LOG 
    555556VBox-xpcom-nspr_DEFS.darwin = \ 
    556         HAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1 \ 
    557557        HAVE_BSD_FLOCK=1 \ 
    558558        _PR_PTHREADS 
     
    568568        _REENTRANT=1 \ 
    569569        _LARGEFILE64_SOURCE=1 \ 
    570         HAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1 \ 
    571         HAVE_VISIBILITY_PRAGMA=1 \ 
    572570        HAVE_FCNTL_FILE_LOCKING=1 \ 
    573571        HAVE_CVAR_BUILT_ON_SEM \ 
     
    581579        _POSIX_SOURCE=1 \ 
    582580        _BSD_SOURCE=1 \ 
    583         HAVE_VISIBILITY_HIDDEN_ATTRIBUTE=1 \ 
    584         HAVE_VISIBILITY_PRAGMA=1 \ 
    585581        HAVE_FCNTL_FILE_LOCKING=1 \ 
    586582        HAVE_CVAR_BUILT_ON_SEM 
     
    725721VBox-xpcom-string_TEMPLATE = XPCOM 
    726722VBox-xpcom-string_NOINST = 1 
    727 VBox-xpcom-string_DEFS = _IMPL_NS_COM 
    728723VBox-xpcom-string_SOURCES = \ 
    729724        xpcom/string/src/nsAString.cpp \ 
     
    912907# 
    913908VBoxXPCOM_TEMPLATE = XPCOM 
    914 VBoxXPCOM_DEFS = BUILD_DCONNECT="1" 
     909VBoxXPCOM_DEFS = BUILD_DCONNECT="1" _IMPL_NS_COM 
    915910VBoxXPCOM_SOURCES = \ 
    916911        xpcom/glue/nsCOMPtr.cpp \ 
  • trunk/src/libs/xpcom18a4/nsprpub/pr/include/prtypes.h

    r1 r2435  
    179179#else /* Unix */ 
    180180 
    181 #define PR_EXPORT(__type) extern __type 
    182 #define PR_EXPORT_DATA(__type) extern __type 
     181#define PR_EXPORT(__type) __attribute__((visibility("default"))) extern __type 
     182#define PR_EXPORT_DATA(__type) __attribute__((visibility("default"))) extern __type 
    183183#define PR_IMPORT(__type) extern __type 
    184184#define PR_IMPORT_DATA(__type) extern __type 
    185185 
    186 #define PR_EXTERN(__type) extern __type 
    187 #define PR_IMPLEMENT(__type) __type 
    188 #define PR_EXTERN_DATA(__type) extern __type 
    189 #define PR_IMPLEMENT_DATA(__type) __type 
     186#define PR_EXTERN(__type) __attribute__((visibility("default"))) extern __type 
     187#define PR_IMPLEMENT(__type) __attribute__((visibility("default"))) __type 
     188#define PR_EXTERN_DATA(__type) __attribute__((visibility("default"))) extern __type 
     189#define PR_IMPLEMENT_DATA(__type) __attribute__((visibility("default"))) __type 
    190190#define PR_CALLBACK 
    191191#define PR_CALLBACK_DECL 
  • trunk/src/libs/xpcom18a4/xpcom/base/nscore.h

    r1 r2435  
    102102#ifdef HAVE_VISIBILITY_ATTRIBUTE 
    103103#define NS_VISIBILITY_HIDDEN   __attribute__ ((visibility ("hidden"))) 
    104 #define NS_VISIBILITY_DEFAULT 
     104#define NS_VISIBILITY_DEFAULT  __attribute__ ((visibility ("default"))) 
    105105 
    106106#define NS_HIDDEN_(type)   NS_VISIBILITY_HIDDEN type 
     
    181181#define NS_IMPORT 
    182182#define NS_IMPORT_(type) type 
    183 #define NS_EXPORT 
    184 #define NS_EXPORT_(type) type 
     183#define NS_EXPORT __attribute__((visibility("default"))) 
     184#define NS_EXPORT_(type) __attribute__((visibility("default"))) type 
    185185#define NS_IMETHOD_(type) virtual IMETHOD_VISIBILITY type NS_DEFCALL 
    186186#define NS_IMETHODIMP_(type) type 
  • trunk/src/libs/xpcom18a4/xpcom/reflect/xptcall/public/xptcall.h

    r1 r2435  
    6161#    define XPTC_EXPORT           __declspec(dllexport) 
    6262#else 
    63 #    define XPTC_EXPORT 
     63#    define XPTC_EXPORT           __attribute__((visibility("default"))) 
    6464#endif 
    6565#else 
  • trunk/src/recompiler/InnoTek/deftoimp.sed

    r2427 r2435  
    1 # $Id: deftoimp.sed 18689 2007-02-16 09:08:04Z klaus
     1# $Id: deftoimp.sed 17147 2007-01-09 09:05:45Z bird
    22## @file 
    33# VBox Runtime - SED script for windows .def file stubs file. 
     
    3131/^$/b end 
    3232 
    33 s/^\(.*\)$/void \1(void);\nvoid \1(void){}/ 
     33s/^\(.*\)$/__attribute__((visibility("default"))) void \1(void);\nvoid \1(void){}/ 
    3434b end 
    3535} 

© 2008 Sun Microsystems, Inc.
ContactPrivacy policy