@@ -318,99 +318,58 @@ add_entrypoint_object(
318318 libc.include .stdlib
319319)
320320
321- if (NOT LIBC_TARGET_OS_IS_GPU)
322- if (LLVM_LIBC_INCLUDE_SCUDO)
323- set (SCUDO_DEPS "" )
324-
325- include (${LIBC_SOURCE_DIR} /../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake)
326-
327- # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture
328- set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE} )
329- if (LIBC_TARGET_ARCHITECTURE_IS_RISCV64)
330- set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64)
331- elseif (LIBC_TARGET_ARCHITECTURE_IS_RISCV32)
332- set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32)
333- endif ()
334-
335- if (NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH))
336- message (FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO.
337- Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture." )
338- endif ()
339-
340- list (APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
341- RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} )
342-
343- list (APPEND SCUDO_DEPS
344- RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
345- RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
346- RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
347- )
348-
349- add_entrypoint_external(
350- malloc
351- DEPENDS
352- ${SCUDO_DEPS}
353- )
354- add_entrypoint_external(
355- calloc
356- DEPENDS
357- ${SCUDO_DEPS}
358- )
359- add_entrypoint_external(
360- realloc
361- DEPENDS
362- ${SCUDO_DEPS}
363- )
364- add_entrypoint_external(
365- aligned_alloc
366- DEPENDS
367- ${SCUDO_DEPS}
368- )
369- add_entrypoint_external(
370- free
371- DEPENDS
372- ${SCUDO_DEPS}
373- )
374- else ()
375- # Only use freelist malloc for baremetal targets.
376- add_entrypoint_object(
377- freelist_malloc
378- SRCS
379- freelist_malloc.cpp
380- HDRS
381- malloc.h
382- DEPENDS
383- libc.src.__support.freelist_heap
384- COMPILE_OPTIONS
385- -DLIBC_FREELIST_MALLOC_SIZE=${LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE}
386- )
387- get_target_property (freelist_malloc_is_skipped libc.src.stdlib.freelist_malloc "SKIPPED" )
388- if (LIBC_TARGET_OS_IS_BAREMETAL AND NOT freelist_malloc_is_skipped)
389- add_entrypoint_object(
390- malloc
391- ALIAS
392- DEPENDS
393- .freelist_malloc
394- )
395- else ()
396- add_entrypoint_external(
397- malloc
398- )
399- endif ()
400-
401- add_entrypoint_external(
402- free
403- )
404- add_entrypoint_external(
405- calloc
406- )
407- add_entrypoint_external(
408- realloc
409- )
410- add_entrypoint_external(
411- aligned_alloc
412- )
321+ if (LLVM_LIBC_INCLUDE_SCUDO)
322+ set (SCUDO_DEPS "" )
323+
324+ include (${LIBC_SOURCE_DIR} /../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake)
325+
326+ # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture
327+ set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE} )
328+ if (LIBC_TARGET_ARCHITECTURE_IS_RISCV64)
329+ set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64)
330+ elseif (LIBC_TARGET_ARCHITECTURE_IS_RISCV32)
331+ set (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32)
332+ endif ()
333+
334+ if (NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH))
335+ message (FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO.
336+ Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture." )
413337 endif ()
338+
339+ list (APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
340+ RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} )
341+
342+ list (APPEND SCUDO_DEPS
343+ RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
344+ RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
345+ RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}
346+ )
347+
348+ add_entrypoint_external(
349+ malloc
350+ DEPENDS
351+ ${SCUDO_DEPS}
352+ )
353+ add_entrypoint_external(
354+ calloc
355+ DEPENDS
356+ ${SCUDO_DEPS}
357+ )
358+ add_entrypoint_external(
359+ realloc
360+ DEPENDS
361+ ${SCUDO_DEPS}
362+ )
363+ add_entrypoint_external(
364+ aligned_alloc
365+ DEPENDS
366+ ${SCUDO_DEPS}
367+ )
368+ add_entrypoint_external(
369+ free
370+ DEPENDS
371+ ${SCUDO_DEPS}
372+ )
414373endif ()
415374
416375if (NOT LLVM_LIBC_FULL_BUILD)
@@ -421,6 +380,39 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
421380 add_subdirectory (${CMAKE_CURRENT_SOURCE_DIR} /${LIBC_TARGET_OS} )
422381endif ()
423382
383+ if (LIBC_TARGET_OS_IS_BAREMETAL)
384+ add_entrypoint_object(
385+ malloc
386+ ALIAS
387+ DEPENDS
388+ .${LIBC_TARGET_OS} .malloc
389+ )
390+ add_entrypoint_object(
391+ free
392+ ALIAS
393+ DEPENDS
394+ .${LIBC_TARGET_OS} .free
395+ )
396+ add_entrypoint_object(
397+ calloc
398+ ALIAS
399+ DEPENDS
400+ .${LIBC_TARGET_OS} .calloc
401+ )
402+ add_entrypoint_object(
403+ realloc
404+ ALIAS
405+ DEPENDS
406+ .${LIBC_TARGET_OS} .realloc
407+ )
408+ add_entrypoint_object(
409+ aligned_alloc
410+ ALIAS
411+ DEPENDS
412+ .${LIBC_TARGET_OS} .aligned_alloc
413+ )
414+ endif ()
415+
424416if (LIBC_TARGET_OS_IS_GPU)
425417 add_entrypoint_object(
426418 malloc
0 commit comments