[libc-commits] [libc] [libc] Replace -nostdlib++ flag when building with gcc and add placement new operator to HermeticTestUtils.cpp. (PR #78906)
via libc-commits
libc-commits at lists.llvm.org
Sun Jan 21 10:55:55 PST 2024
https://github.com/lntue created https://github.com/llvm/llvm-project/pull/78906
`-nostdlib++` is a clang-only flag. Replacing it with `-nostdlib` when building with gcc.
>From 37ca558a9ed60cfff960f91dbb4dc30a70107601 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue at google.com>
Date: Sun, 21 Jan 2024 13:53:07 -0500
Subject: [PATCH] [libc] Replace -nostdlib++ flag when building with gcc and
add placement new operator to HermeticTestUtils.cpp.
---
libc/cmake/modules/LLVMLibCTestRules.cmake | 8 ++++++--
libc/test/UnitTest/HermeticTestUtils.cpp | 4 ++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index 24f543f6e4c132b..211188da8015243 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -564,8 +564,10 @@ function(add_integration_test test_name)
if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
target_link_options(${fq_build_target_name} PRIVATE -nostdlib -static)
- else()
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_link_options(${fq_build_target_name} PRIVATE -nolibc -nostartfiles -nostdlib++ -static)
+ else()
+ target_link_options(${fq_build_target_name} PRIVATE -nolibc -nostartfiles -nostdlib -static)
endif()
target_link_libraries(
${fq_build_target_name}
@@ -741,8 +743,10 @@ function(add_libc_hermetic_test test_name)
if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
target_link_options(${fq_build_target_name} PRIVATE -nostdlib -static)
- else()
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
target_link_options(${fq_build_target_name} PRIVATE -nolibc -nostartfiles -nostdlib++ -static)
+ else()
+ target_link_options(${fq_build_target_name} PRIVATE -nolibc -nostartfiles -nostdlib -static)
endif()
target_link_libraries(
${fq_build_target_name}
diff --git a/libc/test/UnitTest/HermeticTestUtils.cpp b/libc/test/UnitTest/HermeticTestUtils.cpp
index 68e31f478d79abb..349c182ff2379f8 100644
--- a/libc/test/UnitTest/HermeticTestUtils.cpp
+++ b/libc/test/UnitTest/HermeticTestUtils.cpp
@@ -104,6 +104,8 @@ void *__dso_handle = nullptr;
} // extern "C"
+void *operator new(unsigned long size, void *ptr) { return ptr; }
+
void *operator new(size_t size) { return malloc(size); }
void *operator new[](size_t size) { return malloc(size); }
@@ -113,3 +115,5 @@ void operator delete(void *) {
// we just trap here to catch any such accidental usages.
__builtin_trap();
}
+
+void operator delete(void *ptr, size_t size) { __builtin_trap(); }
More information about the libc-commits
mailing list