Skip to content

Commit 2d0e2f7

Browse files
[libc] Added missing operator deletes generated by gcc/clang
This patch adds two operator delete functions that are being generated by clang 15 on rv32 (operator delete(void *mem, std::align_val_t)) and by gcc 13 on intel 64 (operator delete(void *mem, unsigned long)).
1 parent e3087c4 commit 2d0e2f7

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

libc/test/UnitTest/HermeticTestUtils.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,22 @@ void operator delete(void *) {
109109
// we just trap here to catch any such accidental usages.
110110
__builtin_trap();
111111
}
112+
113+
// Defining members in the std namespace is not preferred. But, we do it here
114+
// so that we can use it to define the operator new which takes std::align_val_t
115+
// argument.
116+
namespace std {
117+
enum class align_val_t : size_t {};
118+
} // namespace std
119+
120+
void operator delete(void *mem, std::align_val_t) noexcept {
121+
// The libc runtime should not use the global delete operator. Hence,
122+
// we just trap here to catch any such accidental usages.
123+
__builtin_trap();
124+
}
125+
126+
void operator delete(void *mem, unsigned long) noexcept {
127+
// The libc runtime should not use the global delete operator. Hence,
128+
// we just trap here to catch any such accidental usages.
129+
__builtin_trap();
130+
}

0 commit comments

Comments
 (0)