Skip to content

Commit

Permalink
Generalize the EXPORTED_SYMBOL_FILE concept in the Makefiles to work …
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
Dan Gohman committed Apr 15, 2010
1 parent f27733f commit b16b53b
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 62 deletions.
35 changes: 35 additions & 0 deletions Makefile.rules
Original file line number Diff line number Diff line change
Expand Up @@ -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
###############################################################################
Expand Down Expand Up @@ -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"
Expand Down
72 changes: 36 additions & 36 deletions tools/edis/EnhancedDisassembly.exports
Original file line number Diff line number Diff line change
@@ -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
3 changes: 2 additions & 1 deletion tools/edis/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
3 changes: 2 additions & 1 deletion tools/lto/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down
47 changes: 23 additions & 24 deletions tools/lto/lto.exports
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit b16b53b

Please sign in to comment.