From: Saleem Abdulrasool Date: Thu, 2 May 2019 19:37:26 +0000 (+0000) Subject: build: add option to disable unwind tables X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=86b49e2b741eec98bc7afc6e075ace823e616f50;p=llvm 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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359819 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 80d58d78a35..0164d3eaa8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/cmake/modules/AddLLVM.cmake b/cmake/modules/AddLLVM.cmake index 2fefe838ee4..d10831ff028 100644 --- a/cmake/modules/AddLLVM.cmake +++ b/cmake/modules/AddLLVM.cmake @@ -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-") diff --git a/docs/CMake.rst b/docs/CMake.rst index d62c42c32f8..92e7b9c2a47 100644 --- a/docs/CMake.rst +++ b/docs/CMake.rst @@ -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".