//===--- Runtime.h - Swift runtime imports ----------------------*- C++ -*-===// // // This source file is part of the Swift.org open source project // // Copyright (c) 2023 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // //===----------------------------------------------------------------------===// // // Things to drag in from the Swift runtime. // //===----------------------------------------------------------------------===// #ifndef SWIFT_BACKTRACING_RUNTIME_H #define SWIFT_BACKTRACING_RUNTIME_H #include #include #include "swift/Runtime/CrashInfo.h" #ifdef __cplusplus extern "C" { #endif // Can't import swift/Runtime/Debug.h because it assumes C++ void swift_reportWarning(uint32_t flags, const char *message); // Returns true if the given function is a thunk function bool _swift_backtrace_isThunkFunction(const char *rawName); // Demangle the given raw name (supports Swift and C++) char *_swift_backtrace_demangle(const char *rawName, size_t rawNameLength, char *outputBuffer, size_t *outputBufferSize); // Demangle the given Swift mangled identifier. // // An output buffer must be passed into which the demangled string will be written. // // The demangled result string is NOT null-terminated. // The demangled string length is indicated through the outputBufferSize parameter. // // If the demangled result is truncated, the returned number will be greater than the // initialized count written into the outputBufferSize. // // Introduced in Swift 6.3. size_t _swift_runtime_demangle( const char *rawName, size_t rawNameLength, char *outputBuffer, size_t *outputBufferSize, size_t flags ); // Demangle the given Swift mangled identifier. // This function always allocates a new buffer for the result to be returned. // The demangled result string is NOT null-terminated. // The demangled string length is indicated through the outputBufferSize parameter. // // Introduced in Swift 6.3. char *_swift_runtime_demangle_allocate( const char *rawName, size_t rawNameLength, size_t *outputBufferSize, size_t flags ); #ifdef __cplusplus } #endif #endif // SWIFT_BACKTRACING_RUNTIME_H