This revision was automatically updated to reflect the committed changes. Closed by commit rG10a50762caa6: [lldb] Define lldbassert based on NDEBUG instead of LLDB_CONFIGURATION_DEBUG (authored by JDevlieghere). Herald added a project: LLDB.
Changed prior to commit: https://reviews.llvm.org/D150639?vs=522442&id=522664#toc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D150639/new/ https://reviews.llvm.org/D150639 Files: lldb/docs/resources/contributing.rst lldb/include/lldb/Utility/LLDBAssert.h lldb/source/Utility/LLDBAssert.cpp Index: lldb/source/Utility/LLDBAssert.cpp =================================================================== --- lldb/source/Utility/LLDBAssert.cpp +++ lldb/source/Utility/LLDBAssert.cpp @@ -25,9 +25,6 @@ if (LLVM_LIKELY(expression)) return; - // If asserts are enabled abort here. - assert(false && "lldb_assert failed"); - #if LLVM_SUPPORT_XCODE_SIGNPOSTS if (__builtin_available(macos 10.12, iOS 10, tvOS 10, watchOS 3, *)) { os_log_fault(OS_LOG_DEFAULT, @@ -36,9 +33,8 @@ } #endif - // In a release configuration it will print a warning and encourage the user - // to file a bug report, similar to LLVM’s crash handler, and then return - // execution. + // Print a warning and encourage the user to file a bug report, similar to + // LLVM’s crash handler, and then return execution. errs() << format("Assertion failed: (%s), function %s, file %s, line %u\n", expr_text, func, file, line); errs() << "backtrace leading to the failure:\n"; Index: lldb/include/lldb/Utility/LLDBAssert.h =================================================================== --- lldb/include/lldb/Utility/LLDBAssert.h +++ lldb/include/lldb/Utility/LLDBAssert.h @@ -9,13 +9,22 @@ #ifndef LLDB_UTILITY_LLDBASSERT_H #define LLDB_UTILITY_LLDBASSERT_H -#ifdef LLDB_CONFIGURATION_DEBUG +#ifndef NDEBUG #define lldbassert(x) assert(x) #else +#if defined(__clang__) +// __FILE_NAME__ is a Clang-specific extension that functions similar to +// __FILE__ but only renders the last path component (the filename) instead of +// an invocation dependent full path to that file. +#define lldbassert(x) \ + lldb_private::lldb_assert(static_cast<bool>(x), #x, __FUNCTION__, \ + __FILE_NAME__, __LINE__) +#else #define lldbassert(x) \ lldb_private::lldb_assert(static_cast<bool>(x), #x, __FUNCTION__, __FILE__, \ __LINE__) #endif +#endif namespace lldb_private { void lldb_assert(bool expression, const char *expr_text, const char *func, Index: lldb/docs/resources/contributing.rst =================================================================== --- lldb/docs/resources/contributing.rst +++ lldb/docs/resources/contributing.rst @@ -66,8 +66,8 @@ * Soft assertions. LLDB provides ``lldbassert()`` as a soft alternative to cover the middle ground of situations that indicate a - recoverable bug in LLDB. In a Debug configuration ``lldbassert()`` - behaves like ``assert()``. In a Release configuration it will print a + recoverable bug in LLDB. When asserts are enabled ``lldbassert()`` + behaves like ``assert()``. When asserts are disabled, it will print a warning and encourage the user to file a bug report, similar to LLVM's crash handler, and then return execution. Use these sparingly and only if error handling is not otherwise feasible. Specifically,
Index: lldb/source/Utility/LLDBAssert.cpp =================================================================== --- lldb/source/Utility/LLDBAssert.cpp +++ lldb/source/Utility/LLDBAssert.cpp @@ -25,9 +25,6 @@ if (LLVM_LIKELY(expression)) return; - // If asserts are enabled abort here. - assert(false && "lldb_assert failed"); - #if LLVM_SUPPORT_XCODE_SIGNPOSTS if (__builtin_available(macos 10.12, iOS 10, tvOS 10, watchOS 3, *)) { os_log_fault(OS_LOG_DEFAULT, @@ -36,9 +33,8 @@ } #endif - // In a release configuration it will print a warning and encourage the user - // to file a bug report, similar to LLVMâs crash handler, and then return - // execution. + // Print a warning and encourage the user to file a bug report, similar to + // LLVMâs crash handler, and then return execution. errs() << format("Assertion failed: (%s), function %s, file %s, line %u\n", expr_text, func, file, line); errs() << "backtrace leading to the failure:\n"; Index: lldb/include/lldb/Utility/LLDBAssert.h =================================================================== --- lldb/include/lldb/Utility/LLDBAssert.h +++ lldb/include/lldb/Utility/LLDBAssert.h @@ -9,13 +9,22 @@ #ifndef LLDB_UTILITY_LLDBASSERT_H #define LLDB_UTILITY_LLDBASSERT_H -#ifdef LLDB_CONFIGURATION_DEBUG +#ifndef NDEBUG #define lldbassert(x) assert(x) #else +#if defined(__clang__) +// __FILE_NAME__ is a Clang-specific extension that functions similar to +// __FILE__ but only renders the last path component (the filename) instead of +// an invocation dependent full path to that file. +#define lldbassert(x) \ + lldb_private::lldb_assert(static_cast<bool>(x), #x, __FUNCTION__, \ + __FILE_NAME__, __LINE__) +#else #define lldbassert(x) \ lldb_private::lldb_assert(static_cast<bool>(x), #x, __FUNCTION__, __FILE__, \ __LINE__) #endif +#endif namespace lldb_private { void lldb_assert(bool expression, const char *expr_text, const char *func, Index: lldb/docs/resources/contributing.rst =================================================================== --- lldb/docs/resources/contributing.rst +++ lldb/docs/resources/contributing.rst @@ -66,8 +66,8 @@ * Soft assertions. LLDB provides ``lldbassert()`` as a soft alternative to cover the middle ground of situations that indicate a - recoverable bug in LLDB. In a Debug configuration ``lldbassert()`` - behaves like ``assert()``. In a Release configuration it will print a + recoverable bug in LLDB. When asserts are enabled ``lldbassert()`` + behaves like ``assert()``. When asserts are disabled, it will print a warning and encourage the user to file a bug report, similar to LLVM's crash handler, and then return execution. Use these sparingly and only if error handling is not otherwise feasible. Specifically,
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits