VirtualBox

忽略:
時間撮記:
2008-10-1 下午07:16:49 (16 年 以前)
作者:
vboxsync
訊息:

API/xpcom: make nspr symbol table scrubbing work on Solaris.

檔案:
修改 1 筆資料

圖例:

未更動
新增
刪除
  • trunk/src/libs/xpcom18a4/Makefile.kmk

    r12455 r12872  
    2626# symbol namespace pollution, causing trouble with system libraries.
    2727XPCOM_C_NAMESPACE_MAP = $(VBOX_PATH_XPCOM_SRC)/xpcom-namespace-cleanup.map
     28ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
     29 VBOX_NM=nm$(HOSTSUFF_EXE)
     30 # At the moment, only Solaris uses the generated map file. GNU ld is smart
     31 # enough to handle symbol wildcards itself.
     32 if1of ($(KBUILD_TARGET), solaris)
     33  XPCOM_C_NAMESPACE_MAP = $(PATH_TARGET)/xpcom-namespace-cleanup.map
     34  OTHER_CLEAN += $(XPCOM_C_NAMESPACE_MAP)
     35 endif
     36endif
    2837
    2938# @todo check whether VBoxXPCOMIPCC.so or VBoxXPCOMIPCD contain undefined
     
    11251134ifdef VBOX_WITH_XPCOM_NAMESPACE_CLEANUP
    11261135 VBoxXPCOM_LDFLAGS.linux    = -Wl,--version-script=$(XPCOM_C_NAMESPACE_MAP)
    1127  VBoxXPCOM_DEPS.linux      += $(XPCOM_C_NAMESPACE_MAP)
    1128 # Disable temporarily, as Solaris doesn't support map files with non-trivial wildcards.
    1129 # VBoxXPCOM_LDFLAGS.solaris  = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP)
     1136## @todo DEPS for DLLs are busted, they end up in the wrong place, workaround below
     1137# VBoxXPCOM_DEPS.linux      += $(XPCOM_C_NAMESPACE_MAP)
     1138 VBoxXPCOM_LDFLAGS.solaris  = -Wl,-M,$(XPCOM_C_NAMESPACE_MAP)
     1139## @todo DEPS for DLLs are busted, they end up in the wrong place, workaround below
    11301140# VBoxXPCOM_DEPS.solaris    += $(XPCOM_C_NAMESPACE_MAP)
    11311141endif
     
    17351745$(VBOX_XPIDL): $$(PATH_VBox-xpcom-string)/idl_ts
    17361746
     1747## @todo workaround for the DLL dependency bug in kBuild
     1748$(TARGET_VBoxXPCOM): $(XPCOM_C_NAMESPACE_MAP)
     1749
     1750# Generate linker map file filtering out unwanted global symbols.
     1751# Never used on windows, so we can use pipes as we wish.
     1752$(PATH_TARGET)/xpcom-namespace-cleanup.map: $(VBoxXPCOM_LIBS) $(VBoxXPCOM_OBJS_)
     1753        $(call MSG_L1, Creating linker map $@ for scrubbing the symbol namespace)
     1754        $(QUIET)$(VBOX_NM) -p -g $^ | ( $(ECHO_EXT) '{ global: '; $(SED) -n -e '/^$$/b' -e '/:$$/b' -e '/ U /b' -e 's/^[^ ]* [A-Z] \(.*\)$$/\1/' -e 's/\<_Z[^ ]*$$/&;/p' -e 's/\<VBoxNs[^ ]*$$/&;/p' -e 's/\<_edata$$/&;/p' -e 's/\<_end$$/&;/p' -e 's/\<_etext$$/&;/p' -e 's/\<_fini$$/&;/p' -e 's/\<_init$$/&;/p'; $(ECHO_EXT) 'local: *; };' ) > $@
注意: 瀏覽 TracChangeset 來幫助您使用更動檢視器

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette