Skip to content

Commit 73ec3cb

Browse files
alexmalyshevmeta-codesync[bot]
authored andcommitted
Build with hidden visibility by default (#44)
Summary: Using default visibility prevents a lot of function calls from being inlined. Pull Request resolved: #44 Test Plan: Profiling `cinderx/benchmarks/richards.py` with `perf`. No longer see annotated functions calling to plt functions, functions instead get inlined as expected. Reviewed By: yoney Differential Revision: D103409366 Pulled By: alexmalyshev fbshipit-source-id: 38708d74af94f2b55a011970a22cffe962a38d27
1 parent d7e8b4d commit 73ec3cb

1 file changed

Lines changed: 5 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
4141
if (WINDOWS)
4242
set(SHARED_FLAGS "-DPy_BUILD_CORE -DPy_BUILD_CORE_MODULE")
4343
else()
44-
set(SHARED_FLAGS "-DPy_BUILD_CORE -DPy_BUILD_CORE_MODULE -fPIC -Wall -Wextra -Wno-attributes -Wno-c99-designator -Wno-c++11-narrowing -Wno-cast-function-type -Wno-cast-function-type-mismatch -Wno-deprecated-declarations -Wno-missing-field-initializers -Wno-null-pointer-subtraction -Wno-parentheses -Wno-sign-compare -Wno-unknown-pragmas -Wno-unused-function -Wno-unused-parameter")
44+
set(SHARED_FLAGS "-DPy_BUILD_CORE -DPy_BUILD_CORE_MODULE -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Wno-attributes -Wno-c99-designator -Wno-c++11-narrowing -Wno-cast-function-type -Wno-cast-function-type-mismatch -Wno-deprecated-declarations -Wno-missing-field-initializers -Wno-null-pointer-subtraction -Wno-parentheses -Wno-sign-compare -Wno-unknown-pragmas -Wno-unused-function -Wno-unused-parameter")
4545
endif()
4646

4747
macro(set_flag VAR)
@@ -242,6 +242,10 @@ if (${ENABLE_DISASSEMBLER})
242242
FetchContent_MakeAvailable(capstone)
243243
target_compile_options(capstone PRIVATE -w)
244244
target_compile_options(capstone_static PRIVATE -w)
245+
# CAPSTONE_STATIC suppresses CAPSTONE_EXPORT's visibility("default") annotation,
246+
# so capstone symbols remain hidden when we build with -fvisibility=hidden.
247+
target_compile_definitions(capstone PRIVATE CAPSTONE_STATIC)
248+
target_compile_definitions(capstone_static PRIVATE CAPSTONE_STATIC)
245249
endif()
246250

247251
##############################################################################

0 commit comments

Comments
 (0)