[PATCH] D63368: [compiler-rt] Respect CMAKE_NM
Shoaib Meenai via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 14 16:01:05 PDT 2019
smeenai created this revision.
smeenai added reviewers: beanz, compnerd, pcc, phosek.
Herald added subscribers: llvm-commits, Sanitizers, mgorny, dberris, kubamracek.
Herald added projects: Sanitizers, LLVM.
The default nm executable may not be able to handle the architecture
we're building the sanitizers for. Respect CMAKE_NM if it's set to
ensure we're using the correct nm tool. Preserve the existing NM
environment variable override to not break its users.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D63368
Files:
compiler-rt/cmake/Modules/SanitizerUtils.cmake
compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py
Index: compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py
===================================================================
--- compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py
+++ compiler-rt/lib/sanitizer_common/scripts/gen_dynamic_list.py
@@ -61,9 +61,9 @@
'pthread_cond_wait', 'realpath',
'sched_getaffinity'])
-def get_global_functions(library):
+def get_global_functions(nm_executable, library):
functions = []
- nm = os.environ.get('NM', 'nm')
+ nm = os.environ.get('NM', nm_executable)
nm_proc = subprocess.Popen([nm, library], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
nm_out = nm_proc.communicate()[0].decode().split('\n')
@@ -84,6 +84,7 @@
parser.add_argument('--version-list', action='store_true')
parser.add_argument('--extra', default=[], action='append')
parser.add_argument('libraries', default=[], nargs='+')
+ parser.add_argument('--nm-executable', required=True)
parser.add_argument('-o', '--output', required=True)
args = parser.parse_args()
@@ -91,7 +92,7 @@
all_functions = []
for library in args.libraries:
- all_functions.extend(get_global_functions(library))
+ all_functions.extend(get_global_functions(args.nm_executable, library))
function_set = set(all_functions)
for func in all_functions:
# Export new/delete operators.
Index: compiler-rt/cmake/Modules/SanitizerUtils.cmake
===================================================================
--- compiler-rt/cmake/Modules/SanitizerUtils.cmake
+++ compiler-rt/cmake/Modules/SanitizerUtils.cmake
@@ -6,6 +6,12 @@
set(SANITIZER_LINT_SCRIPT
${COMPILER_RT_SOURCE_DIR}/lib/sanitizer_common/scripts/check_lint.sh)
+if(CMAKE_NM)
+ set(SANITIZER_NM "${CMAKE_NM}")
+else()
+ set(SANITIZER_NM nm)
+endif()
+
# Create a target "<name>-<arch>-symbols" that would generate the list of
# symbols that need to be exported from sanitizer runtime "<name>". Function
# interceptors are exported automatically, user can also provide files with
@@ -30,7 +36,7 @@
add_custom_command(OUTPUT ${stamp}
COMMAND ${PYTHON_EXECUTABLE}
${SANITIZER_GEN_DYNAMIC_LIST} ${extra_args} $<TARGET_FILE:${target_name}>
- -o $<TARGET_FILE:${target_name}>.syms
+ --nm-executable "${SANITIZER_NM}" -o $<TARGET_FILE:${target_name}>.syms
COMMAND ${CMAKE_COMMAND} -E touch ${stamp}
DEPENDS ${target_name} ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
@@ -80,7 +86,7 @@
add_custom_command(OUTPUT ${vers}
COMMAND ${PYTHON_EXECUTABLE}
${SANITIZER_GEN_DYNAMIC_LIST} --version-list ${args}
- -o ${vers}
+ --nm-executable "${SANITIZER_NM}" -o ${vers}
DEPENDS ${SANITIZER_GEN_DYNAMIC_LIST} ${ARG_EXTRA} ${ARG_LIBS}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Generating version list for ${name}"
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D63368.204870.patch
Type: text/x-patch
Size: 2957 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190614/1cde0a5d/attachment.bin>
More information about the llvm-commits
mailing list