summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostya Kortchinsky <kostyak@google.com>2018-03-06 20:13:37 +0000
committerKostya Kortchinsky <kostyak@google.com>2018-03-06 20:13:37 +0000
commit7dc51375811299e1f37b82703e6c54e8361c91a5 (patch)
tree890d1aeea34be446e4037ade1edfc94cbd0ab7a2
parent80d3bb3b4be2cc0d3ad25530a83c94ae9c5d1ba7 (diff)
downloadbcm5719-llvm-7dc51375811299e1f37b82703e6c54e8361c91a5.tar.gz
bcm5719-llvm-7dc51375811299e1f37b82703e6c54e8361c91a5.zip
[scudo] Use gc-sections by default
Summary: If not using `-Wl,--gc-sections`, a whole lot of unused `sanitizer_common` code and related static variables are pulled into the shared library. Keep the binary size smaller, and its memory footprint smaller as well, by using the compiler flags `-ffunction-section` & `-fdata-sections` by default, as well as the linker flags `-Wl,--gc-sections`. Current experiments show a large discrepency between binary sizes generated by gcc (big) and clang (small). I am not sure yet how I can make a test that would encompass both, so it's an outstanding work item. Reviewers: alekseyshl, flowerhack Reviewed By: alekseyshl Subscribers: mgorny, delcypher, llvm-commits, #sanitizers Differential Revision: https://reviews.llvm.org/D44121 llvm-svn: 326833
-rw-r--r--compiler-rt/lib/scudo/CMakeLists.txt4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler-rt/lib/scudo/CMakeLists.txt b/compiler-rt/lib/scudo/CMakeLists.txt
index 29e6795a5d2..0aba0cad1b7 100644
--- a/compiler-rt/lib/scudo/CMakeLists.txt
+++ b/compiler-rt/lib/scudo/CMakeLists.txt
@@ -9,6 +9,10 @@ append_rtti_flag(OFF SCUDO_CFLAGS)
set(SCUDO_DYNAMIC_LINK_FLAGS ${SANITIZER_COMMON_LINK_FLAGS})
+# Use gc-sections by default to avoid unused code being pulled in.
+list(APPEND SCUDO_CFLAGS -ffunction-sections -fdata-sections)
+list(APPEND SCUDO_DYNAMIC_LINK_FLAGS -Wl,--gc-sections)
+
set(SCUDO_SOURCES
scudo_allocator.cpp
scudo_crc32.cpp
OpenPOWER on IntegriCloud