cmake: provide flag that enables 'log enable --stack' to provide useful file/function info on POSIX systems
Adding the following flag to a cmake line: -DLLDB_EXPORT_ALL_SYMBOLS=TRUE will cause all symbols to be exported from liblldb. This enables the llvm backtrace mechanism to see and report backtrace symbols properly when using (lldb) log enable --stack ... Prior to this change, only the SB API symbols would show up on Linux and other systems that use a public-symbols-based backtrace lookup mechanism. log enable --stack ... is a very handy, quick way to understand the flow of how some log lines are getting hit within lldb without having to hook up a top-level debugger over your current debug session. llvm-svn: 250299
This commit is contained in:
parent
2432ff59d3
commit
d6f840609b
|
@ -96,3 +96,19 @@ macro(add_lldb_executable name)
|
|||
add_llvm_executable(${name} ${ARGN})
|
||||
set_target_properties(${name} PROPERTIES FOLDER "lldb executables")
|
||||
endmacro(add_lldb_executable)
|
||||
|
||||
# Support appending linker flags to an existing target.
|
||||
# This will preserve the existing linker flags on the
|
||||
# target, if there are any.
|
||||
function(lldb_append_link_flags target_name new_link_flags)
|
||||
# Retrieve existing linker flags.
|
||||
get_target_property(current_link_flags ${target_name} LINK_FLAGS)
|
||||
|
||||
# If we had any linker flags, include them first in the new linker flags.
|
||||
if(current_link_flags)
|
||||
set(new_link_flags "${current_link_flags} ${new_link_flags}")
|
||||
endif()
|
||||
|
||||
# Now set them onto the target.
|
||||
set_target_properties(${target_name} PROPERTIES LINK_FLAGS ${new_link_flags})
|
||||
endfunction()
|
||||
|
|
|
@ -29,6 +29,15 @@ set(LLDB_DISABLE_CURSES ${LLDB_DEFAULT_DISABLE_CURSES} CACHE BOOL
|
|||
set(LLDB_RELOCATABLE_PYTHON 0 CACHE BOOL
|
||||
"Causes LLDB to use the PYTHONHOME environment variable to locate Python.")
|
||||
|
||||
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
set(LLDB_EXPORT_ALL_SYMBOLS 0 CACHE BOOL
|
||||
"Causes lldb to export all symbols when building liblldb.")
|
||||
else()
|
||||
# Windows doesn't support toggling this, so don't bother making it a
|
||||
# cache variable.
|
||||
set(LLDB_EXPORT_ALL_SYMBOLS 0)
|
||||
endif()
|
||||
|
||||
if ((NOT MSVC) OR MSVC12)
|
||||
add_definitions( -DHAVE_ROUND )
|
||||
endif()
|
||||
|
|
|
@ -82,7 +82,21 @@ set_target_properties(liblldb
|
|||
)
|
||||
|
||||
if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
|
||||
if (NOT LLDB_EXPORT_ALL_SYMBOLS)
|
||||
# If we're not exporting all symbols, we'll want to explicitly set
|
||||
# the exported symbols here. This prevents 'log enable --stack ...'
|
||||
# from working on some systems but limits the liblldb size.
|
||||
MESSAGE("-- Symbols (liblldb): only exporting liblldb.exports symbols")
|
||||
add_llvm_symbol_exports(liblldb ${CMAKE_CURRENT_SOURCE_DIR}/liblldb.exports)
|
||||
else()
|
||||
# Don't use an explicit export. Instead, tell the linker to
|
||||
# export all symbols.
|
||||
MESSAGE("-- Symbols (liblldb): exporting all symbols")
|
||||
# Darwin linker doesn't need this extra step.
|
||||
if (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
|
||||
lldb_append_link_flags(liblldb "-Wl,--export-dynamic")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ( CMAKE_SYSTEM_NAME MATCHES "Windows" )
|
||||
|
|
Loading…
Reference in New Issue