build: add option to disable unwind tables

The unwind tables (`.eh_frame`, `.arm.extab`) add a significant chunk of data to
the final binaries.  These should not be needed normally, particularly when
exceptions are disabled.  This enables shrinking `lldb-server` by ~18% (3 MiB)
when built with gold.

llvm-svn: 359819
This commit is contained in:
Saleem Abdulrasool 2019-05-02 19:37:26 +00:00
parent 366212726a
commit a7c766b51d
3 changed files with 10 additions and 0 deletions

View File

@ -351,6 +351,8 @@ if(LLVM_ENABLE_BACKTRACES)
set(ENABLE_BACKTRACES 1)
endif()
option(LLVM_ENABLE_UNWIND_TABLES "Emit unwind tables for the libraries" ON)
option(LLVM_ENABLE_CRASH_OVERRIDES "Enable crash overrides." ON)
if(LLVM_ENABLE_CRASH_OVERRIDES)
set(ENABLE_CRASH_OVERRIDES 1)

View File

@ -21,6 +21,10 @@ function(llvm_update_compile_flags name)
else()
if(LLVM_COMPILER_IS_GCC_COMPATIBLE)
list(APPEND LLVM_COMPILE_FLAGS "-fno-exceptions")
if(NOT LLVM_ENABLE_UNWIND_TABLES)
list(APPEND LLVM_COMPILE_FLAGS "-fno-unwind-tables")
list(APPEND LLVM_COMPILE_FLAGS "-fno-asynchronous-unwind-tables")
endif()
elseif(MSVC)
list(APPEND LLVM_COMPILE_DEFINITIONS _HAS_EXCEPTIONS=0)
list(APPEND LLVM_COMPILE_FLAGS "/EHs-c-")

View File

@ -266,6 +266,10 @@ LLVM-specific variables
**LLVM_ENABLE_THREADS**:BOOL
Build with threads support, if available. Defaults to ON.
**LLVM_ENABLE_UNWIND_TABLES**:BOOL
Enable unwind tables in the binary. Disabling unwind tables can reduce the
size of the libraries. Defaults to ON.
**LLVM_CXX_STD**:STRING
Build with the specified C++ standard. Defaults to "c++11".