Generalize the EXPORTED_SYMBOL_FILE concept in the Makefiles to work with

native linking export files, including running sed to prepend underscores
on darwin, and make use of it in libLTO and libEnhancedDisassembly.

Remove the leading underscores from library export files so that they
work with the new EXPORTED_SYMBOL_FILE support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101399 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2010-04-15 20:54:25 +00:00
parent f27733f418
commit b16b53b181
5 changed files with 98 additions and 62 deletions

View File

@ -970,6 +970,37 @@ endif
endif
endif
# Set up the library exports file.
ifdef EXPORTED_SYMBOL_FILE
# First, set up the native export file, which may differ from the source
# export file.
ifeq ($(HOST_OS),Darwin)
# Darwin convention prefixes symbols with underscores.
NativeExportsFile := $(ObjDir)/$(EXPORTED_SYMBOL_FILE).sed
$(NativeExportsFile): $(EXPORTED_SYMBOL_FILE)
$(Verb) sed -e 's/[[:<:]]/_/' < $< > $@
clean-local::
-$(Verb) $(RM) -f $(NativeExportsFile)
else
NativeExportsFile := $(EXPORTED_SYMBOL_FILE)
endif
# Now add the linker command-line options to use the native export file.
ifeq ($(HOST_OS),Darwin)
LLVMLibsOptions += -Wl,-exported_symbols_list -Wl,$(NativeExportsFile)
endif
# This isn't really Linux-specific; it works at least on gold and bfd ld, but
# there's no convenient way to detect it.
ifeq ($(HOST_OS),Linux)
LLVMLibsOptions += -Wl,-retain-symbols-file -Wl,$(NativeExportsFile)
endif
endif
###############################################################################
# Library Build Rules: Four ways to build a library
###############################################################################
@ -1060,6 +1091,10 @@ ifdef SHARED_LIBRARY
all-local:: $(LibName.SO)
ifdef EXPORTED_SYMBOL_FILE
$(LibName.SO): $(NativeExportsFile)
endif
ifdef LINK_LIBS_IN_SHARED
ifdef LOADABLE_MODULE
SharedLibKindMessage := "Loadable Module"

View File

@ -1,36 +1,36 @@
_EDGetDisassembler
_EDGetRegisterName
_EDRegisterIsStackPointer
_EDRegisterIsProgramCounter
_EDCreateInsts
_EDReleaseInst
_EDInstByteSize
_EDGetInstString
_EDInstIsBranch
_EDInstIsMove
_EDBranchTargetID
_EDMoveSourceID
_EDMoveTargetID
_EDNumTokens
_EDGetToken
_EDGetTokenString
_EDOperandIndexForToken
_EDTokenIsWhitespace
_EDTokenIsPunctuation
_EDTokenIsOpcode
_EDTokenIsLiteral
_EDTokenIsRegister
_EDTokenIsNegativeLiteral
_EDLiteralTokenAbsoluteValue
_EDRegisterTokenValue
_EDNumOperands
_EDGetOperand
_EDOperandIsRegister
_EDOperandIsImmediate
_EDOperandIsMemory
_EDRegisterOperandValue
_EDImmediateOperandValue
_EDEvaluateOperand
_EDBlockCreateInsts
_EDBlockEvaluateOperand
_EDBlockVisitTokens
EDGetDisassembler
EDGetRegisterName
EDRegisterIsStackPointer
EDRegisterIsProgramCounter
EDCreateInsts
EDReleaseInst
EDInstByteSize
EDGetInstString
EDInstIsBranch
EDInstIsMove
EDBranchTargetID
EDMoveSourceID
EDMoveTargetID
EDNumTokens
EDGetToken
EDGetTokenString
EDOperandIndexForToken
EDTokenIsWhitespace
EDTokenIsPunctuation
EDTokenIsOpcode
EDTokenIsLiteral
EDTokenIsRegister
EDTokenIsNegativeLiteral
EDLiteralTokenAbsoluteValue
EDRegisterTokenValue
EDNumOperands
EDGetOperand
EDOperandIsRegister
EDOperandIsImmediate
EDOperandIsMemory
EDRegisterOperandValue
EDImmediateOperandValue
EDEvaluateOperand
EDBlockCreateInsts
EDBlockEvaluateOperand
EDBlockVisitTokens

View File

@ -12,6 +12,8 @@ LIBRARYNAME = EnhancedDisassembly
BUILT_SOURCES = EDInfo.inc
EXPORTED_SYMBOL_FILE = EnhancedDisassembly.exports
# Include this here so we can get the configuration of the targets
# that have been configured for construction. We have to do this
# early so we can set up LINK_COMPONENTS before including Makefile.rules
@ -32,7 +34,6 @@ ifeq ($(HOST_OS),Darwin)
# extra options to override libtool defaults
LLVMLibsOptions := $(LLVMLibsOptions) \
-avoid-version \
-Wl,-exported_symbols_list -Wl,$(PROJ_SRC_DIR)/EnhancedDisassembly.exports \
-Wl,-dead_strip
ifdef EDIS_VERSION

View File

@ -10,6 +10,8 @@
LEVEL = ../..
LIBRARYNAME = LTO
EXPORTED_SYMBOL_FILE = lto.exports
# Include this here so we can get the configuration of the targets
# that have been configured for construction. We have to do this
# early so we can set up LINK_COMPONENTS before including Makefile.rules
@ -32,7 +34,6 @@ ifeq ($(HOST_OS),Darwin)
# extra options to override libtool defaults
LLVMLibsOptions := $(LLVMLibsOptions) \
-avoid-version \
-Wl,-exported_symbols_list -Wl,$(PROJ_SRC_DIR)/lto.exports \
-Wl,-dead_strip \
-Wl,-seg1addr -Wl,0xE0000000

View File

@ -1,24 +1,23 @@
_lto_get_error_message
_lto_get_version
_lto_module_create
_lto_module_create_from_memory
_lto_module_get_num_symbols
_lto_module_get_symbol_attribute
_lto_module_get_symbol_name
_lto_module_get_target_triple
_lto_module_is_object_file
_lto_module_is_object_file_for_target
_lto_module_is_object_file_in_memory
_lto_module_is_object_file_in_memory_for_target
_lto_module_dispose
_lto_codegen_add_module
_lto_codegen_add_must_preserve_symbol
_lto_codegen_compile
_lto_codegen_create
_lto_codegen_dispose
_lto_codegen_set_debug_model
_lto_codegen_set_pic_model
_lto_codegen_write_merged_modules
_lto_codegen_debug_options
_lto_codegen_set_assembler_path
lto_get_error_message
lto_get_version
lto_module_create
lto_module_create_from_memory
lto_module_get_num_symbols
lto_module_get_symbol_attribute
lto_module_get_symbol_name
lto_module_get_target_triple
lto_module_is_object_file
lto_module_is_object_file_for_target
lto_module_is_object_file_in_memory
lto_module_is_object_file_in_memory_for_target
lto_module_dispose
lto_codegen_add_module
lto_codegen_add_must_preserve_symbol
lto_codegen_compile
lto_codegen_create
lto_codegen_dispose
lto_codegen_set_debug_model
lto_codegen_set_pic_model
lto_codegen_write_merged_modules
lto_codegen_debug_options
lto_codegen_set_assembler_path