diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-08-31 11:12:10 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-08-31 11:12:10 +0000 |
commit | 8790f0a7f39d61a806c7339abd45bb83c15ee042 (patch) | |
tree | 6db39401494c4349c6f847ff9bf6d6a1334d0fd9 | |
parent | 2acf5562bfd787c1667297c593ddfc0e35b91489 (diff) |
[compiler-rt] Move draft code for llvm-symbolizer to compiler-rt/utils/llvm-symbolizer after chandlerc's suggestion
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@162988 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/llvm-symbolizer/CMakeLists.txt | 67 | ||||
-rw-r--r-- | utils/llvm-symbolizer/llvm-symbolizer.cc (renamed from lib/sanitizer_common/llvm-symbolizer/llvm-symbolizer.cc) | 10 |
2 files changed, 68 insertions, 9 deletions
diff --git a/utils/llvm-symbolizer/CMakeLists.txt b/utils/llvm-symbolizer/CMakeLists.txt new file mode 100644 index 000000000..d1f0acd88 --- /dev/null +++ b/utils/llvm-symbolizer/CMakeLists.txt @@ -0,0 +1,67 @@ +# Build llvm-symbolizer binary, which will be used as an external symbolizer +# by sanitizer tools. Later it can probably become another LLVM tool. + +set(SYMBOLIZER_SOURCES + llvm-symbolizer.cc + ) + +# Append sources of LLVM libs we use. +append_llvm_sources(SYMBOLIZER_SOURCES + LLVMDebugInfo + LLVMSupport + LLVMObject + ) + +set(SYMBOLIZER_CFLAGS + -I${LLVM_MAIN_SRC_DIR}/include + -I${LLVM_BINARY_DIR}/include + -fPIC + -fomit-frame-pointer + -O3 + ) + +set(SYMBOLIZER_DEFINITIONS +# __STDC_CONSTANT_MACROS=1 +# __STDC_LIMIT_MACROS=1 + ) + +# FIXME: Generalize the following ugly piece in sanitizer_common, symbolizer +# and asan folders. +set(SYMBOLIZER_BINARIES) +if (APPLE) + # Build universal binary on Apple. + add_executable(llvm-symbolizer.osx ${SYMBOLIZER_SOURCES}) + set_target_compile_flags(llvm-symbolizer.osx ${SYMBOLIZER_CFLAGS}) + filter_available_targets(SYMBOLIZER_TARGETS x86_64 i386) + set_target_properties(llvm-symbolizer.osx PROPERTIES + OSX_ARCHITECTURES "${SYMBOLIZER_TARGETS}") + list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer.osx) +elseif(UNIX) + # Assume Linux + if(CAN_TARGET_X86_64) + add_executable(llvm-symbolizer-x86_64 ${SYMBOLIZER_SOURCES}) + set_target_compile_flags(llvm-symbolizer-x86_64 + ${SYMBOLIZER_CFLAGS} ${TARGET_X86_64_CFLAGS}) + set_property(TARGET llvm-symbolizer-x86_64 APPEND_STRING PROPERTY + LINK_FLAGS " ${TARGET_X86_64_CFLAGS}") + list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer-x86_64) + endif() + if(CAN_TARGET_I386) + add_executable(llvm-symbolizer-i386 ${SYMBOLIZER_SOURCES}) + set_target_compile_flags(llvm-symbolizer-i386 + ${SYMBOLIZER_CFLAGS} ${TARGET_I386_CFLAGS}) + set_property(TARGET llvm-symbolizer-i386 APPEND_STRING PROPERTY + LINK_FLAGS " ${TARGET_I386_CFLAGS}") + list(APPEND SYMBOLIZER_BINARIES llvm-symbolizer-i386) + endif() + # Linux-specific linker flags. + set_property(TARGET ${SYMBOLIZER_BINARIES} APPEND_STRING PROPERTY + LINK_FLAGS " -lpthread -ldl") +endif() + +set_property(TARGET ${SYMBOLIZER_BINARIES} APPEND PROPERTY + COMPILE_DEFINITIONS ${SYMBOLIZER_DEFINITIONS} + ) +# FIXME: Setup sane output directories for ${SYMBOLIZER_BINARIES} +set_target_properties(${SYMBOLIZER_BINARIES} PROPERTIES + RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/lib/sanitizer_common/llvm-symbolizer/llvm-symbolizer.cc b/utils/llvm-symbolizer/llvm-symbolizer.cc index f1fe38827..d9bcf2a68 100644 --- a/lib/sanitizer_common/llvm-symbolizer/llvm-symbolizer.cc +++ b/utils/llvm-symbolizer/llvm-symbolizer.cc @@ -47,11 +47,6 @@ PrintFunctions("functions", cl::init(true), cl::desc("Print function names as well as line " "information for a given address")); -static cl::opt<bool> -SubprocessMode("subprocess-mode", cl::init(false), - cl::desc("Is run as a subprocess (format of the output " - "differs a bit)")); - static StringRef ToolInvocationPath; static bool error(error_code ec) { @@ -220,10 +215,7 @@ static void symbolize(const string &module_name, outs() << filename << ":" << line_info.getLine() << ":" << line_info.getColumn() << - "\n"; - if (SubprocessMode) { - outs() << "\n"; // Print extra empty line to mark the end of output. - } + "\n\n"; // Print extra empty line to mark the end of output. outs().flush(); } |