[libc-commits] [libc] c2735d2 - [libc][stdlib] Bring all GPU's alloc/free entrypoints under the same conditional. (#96373)
via libc-commits
libc-commits at lists.llvm.org
Fri Jun 21 20:29:19 PDT 2024
Author: lntue
Date: 2024-06-21T23:29:15-04:00
New Revision: c2735d2d5a66e42f004323c715bdefd5ef09882a
URL: https://github.com/llvm/llvm-project/commit/c2735d2d5a66e42f004323c715bdefd5ef09882a
DIFF: https://github.com/llvm/llvm-project/commit/c2735d2d5a66e42f004323c715bdefd5ef09882a.diff
LOG: [libc][stdlib] Bring all GPU's alloc/free entrypoints under the same conditional. (#96373)
Added:
Modified:
libc/src/stdlib/CMakeLists.txt
Removed:
################################################################################
diff --git a/libc/src/stdlib/CMakeLists.txt b/libc/src/stdlib/CMakeLists.txt
index a5d5ac5f32b06..61c05f0738959 100644
--- a/libc/src/stdlib/CMakeLists.txt
+++ b/libc/src/stdlib/CMakeLists.txt
@@ -317,97 +317,121 @@ add_entrypoint_object(
libc.include.stdlib
)
-if(LLVM_LIBC_INCLUDE_SCUDO)
- set(SCUDO_DEPS "")
+if(NOT LIBC_TARGET_OS_IS_GPU)
+ if(LLVM_LIBC_INCLUDE_SCUDO)
+ set(SCUDO_DEPS "")
+
+ include(${LIBC_SOURCE_DIR}/../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake)
+
+ # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture
+ set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE})
+ if(LIBC_TARGET_ARCHITECTURE_IS_RISCV64)
+ set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64)
+ elseif(LIBC_TARGET_ARCHITECTURE_IS_RISCV32)
+ set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32)
+ endif()
+
+ if(NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH))
+ message(FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO.
+ Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture.")
+ endif()
+
+ list(APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
+ RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO})
+
+ list(APPEND SCUDO_DEPS
+ RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
+ RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
+ RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
+ )
- include(${LIBC_SOURCE_DIR}/../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake)
-
- # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture
- set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE})
- if(LIBC_TARGET_ARCHITECTURE_IS_RISCV64)
- set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64)
- elseif(LIBC_TARGET_ARCHITECTURE_IS_RISCV32)
- set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32)
- endif()
+ add_entrypoint_external(
+ malloc
+ DEPENDS
+ ${SCUDO_DEPS}
+ )
+ add_entrypoint_external(
+ calloc
+ DEPENDS
+ ${SCUDO_DEPS}
+ )
+ add_entrypoint_external(
+ realloc
+ DEPENDS
+ ${SCUDO_DEPS}
+ )
+ add_entrypoint_external(
+ aligned_alloc
+ DEPENDS
+ ${SCUDO_DEPS}
+ )
+ add_entrypoint_external(
+ free
+ DEPENDS
+ ${SCUDO_DEPS}
+ )
+ else()
+ # Only use freelist malloc for baremetal targets.
+ add_entrypoint_object(
+ freelist_malloc
+ SRCS
+ freelist_malloc.cpp
+ HDRS
+ malloc.h
+ DEPENDS
+ libc.src.__support.freelist_heap
+ COMPILE_OPTIONS
+ -DLIBC_FREELIST_MALLOC_SIZE=${LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE}
+ )
+ get_target_property(freelist_malloc_is_skipped libc.src.stdlib.freelist_malloc "SKIPPED")
+ if(LIBC_TARGET_OS_IS_BAREMETAL AND NOT freelist_malloc_is_skipped)
+ add_entrypoint_object(
+ malloc
+ ALIAS
+ DEPENDS
+ .freelist_malloc
+ )
+ else()
+ add_entrypoint_external(
+ malloc
+ )
+ endif()
- if(NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH))
- message(FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO.
- Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture.")
+ add_entrypoint_external(
+ free
+ )
+ add_entrypoint_external(
+ calloc
+ )
+ add_entrypoint_external(
+ realloc
+ )
+ add_entrypoint_external(
+ aligned_alloc
+ )
endif()
+endif()
- list(APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
- RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO})
+if(NOT LLVM_LIBC_FULL_BUILD)
+ return()
+endif()
- list(APPEND SCUDO_DEPS
- RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
- RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
- RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
- )
+if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
+ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
+endif()
- add_entrypoint_external(
+if(LIBC_TARGET_OS_IS_GPU)
+ add_entrypoint_object(
malloc
+ ALIAS
DEPENDS
- ${SCUDO_DEPS}
- )
- add_entrypoint_external(
- calloc
- DEPENDS
- ${SCUDO_DEPS}
- )
- add_entrypoint_external(
- realloc
- DEPENDS
- ${SCUDO_DEPS}
- )
- add_entrypoint_external(
- aligned_alloc
- DEPENDS
- ${SCUDO_DEPS}
- )
- add_entrypoint_external(
- free
- DEPENDS
- ${SCUDO_DEPS}
- )
-elseif(LIBC_TARGET_OS_IS_GPU)
- add_entrypoint_external(
- calloc
- )
- add_entrypoint_external(
- realloc
- )
- add_entrypoint_external(
- aligned_alloc
+ .${LIBC_TARGET_OS}.malloc
)
-else()
- # Only use freelist malloc for baremetal targets.
add_entrypoint_object(
- freelist_malloc
- SRCS
- freelist_malloc.cpp
- HDRS
- malloc.h
- DEPENDS
- libc.src.__support.freelist_heap
- COMPILE_OPTIONS
- -DLIBC_FREELIST_MALLOC_SIZE=${LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE}
- )
- get_target_property(freelist_malloc_is_skipped libc.src.stdlib.freelist_malloc "SKIPPED")
- if(LIBC_TARGET_OS_IS_BAREMETAL AND NOT freelist_malloc_is_skipped)
- add_entrypoint_object(
- malloc
- ALIAS
- DEPENDS
- .freelist_malloc
- )
- else()
- add_entrypoint_external(
- malloc
- )
- endif()
-
- add_entrypoint_external(
free
+ ALIAS
+ DEPENDS
+ .${LIBC_TARGET_OS}.free
)
add_entrypoint_external(
calloc
@@ -420,14 +444,6 @@ else()
)
endif()
-if(NOT LLVM_LIBC_FULL_BUILD)
- return()
-endif()
-
-if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
- add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
-endif()
-
add_entrypoint_object(
_Exit
SRCS
@@ -499,19 +515,3 @@ add_entrypoint_object(
DEPENDS
.${LIBC_TARGET_OS}.abort
)
-
-if(LIBC_TARGET_OS_IS_GPU)
- add_entrypoint_object(
- malloc
- ALIAS
- DEPENDS
- .${LIBC_TARGET_OS}.malloc
- )
-
- add_entrypoint_object(
- free
- ALIAS
- DEPENDS
- .${LIBC_TARGET_OS}.free
- )
-endif()
More information about the libc-commits
mailing list