llvm-project/libcxxabi/test/cxa_thread_atexit_test.pass.cpp
Louis Dionne eb8650a757 [runtimes][NFC] Remove filenames at the top of the license notice
We've stopped doing it in libc++ for a while now because these names
would end up rotting as we move things around and copy/paste stuff.
This cleans up all the existing files so as to stop the spreading
as people copy-paste headers around.
2021-11-17 16:30:52 -05:00

34 lines
1.1 KiB
C++

//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
// UNSUPPORTED: libcxxabi-no-threads
// REQUIRES: linux
#include <assert.h>
#include <cxxabi.h>
static bool AtexitImplCalled = false;
extern "C" int __cxa_thread_atexit_impl(void (*dtor)(void *), void *obj,
void *dso_symbol) {
assert(dtor == reinterpret_cast<void (*)(void *)>(1));
assert(obj == reinterpret_cast<void *>(2));
assert(dso_symbol == reinterpret_cast<void *>(3));
AtexitImplCalled = true;
return 4;
}
int main(int, char**) {
int RV = __cxxabiv1::__cxa_thread_atexit(
reinterpret_cast<void (*)(void *)>(1), reinterpret_cast<void *>(2),
reinterpret_cast<void *>(3));
assert(RV == 4);
assert(AtexitImplCalled);
return 0;
}