[libc-commits] [libc] [libc][stdlib] Bring all GPU's alloc/free entrypoints under the same conditional. (PR #96373)

via libc-commits libc-commits at lists.llvm.org
Fri Jun 21 20:20:02 PDT 2024


https://github.com/lntue created https://github.com/llvm/llvm-project/pull/96373

None

>From bda731008db2666cd3091434c8e4ad0929923324 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Sat, 22 Jun 2024 03:18:00 +0000
Subject: [PATCH] [libc][stdlib] Bring all GPU's alloc/free entrypoints under
 the same conditional.

---
 libc/src/stdlib/CMakeLists.txt | 208 ++++++++++++++++-----------------
 1 file changed, 104 insertions(+), 104 deletions(-)

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