cb424d7448
verify-patch-sanity.py validates every active recipe .patch has internally- consistent hunk line counts — catching the 'malformed patch at line N' failure at commit/CI/preflight time instead of hours into a cook. This cycle hit that class three times (qtwaylandscanner, sddm, xwayland), each only discovered when cookbook tried to apply the patch. Running it across the repo found 29 latent malformed patches (validated against GNU patch: e.g. relibc/P3-sysv-ipc reproduces 'malformed patch at line 22'). They were harmless only because they sit in vendored recipes (baked, not re- applied) — but would fail on any version-bump re-derivation. --fix recounts the hunk headers (body untouched) and repaired all 29. Wired into build-preflight.sh (Phase 1.0D) and redbear-ci.yml, with a unit test (test-patch-sanity.sh). Skips archived/legacy trees and unvalidatable formats (empty placeholders, bare-@@ git hunks).
293 lines
9.2 KiB
C++
293 lines
9.2 KiB
C++
// -*- 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
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef _LIBCPP_STDEXCEPT
|
|
#define _LIBCPP_STDEXCEPT
|
|
|
|
/*
|
|
stdexcept synopsis
|
|
|
|
namespace std
|
|
{
|
|
|
|
class logic_error;
|
|
class domain_error;
|
|
class invalid_argument;
|
|
class length_error;
|
|
class out_of_range;
|
|
class runtime_error;
|
|
class range_error;
|
|
class overflow_error;
|
|
class underflow_error;
|
|
|
|
for each class xxx_error:
|
|
|
|
class xxx_error : public exception // at least indirectly
|
|
{
|
|
public:
|
|
explicit xxx_error(const string& what_arg);
|
|
explicit xxx_error(const char* what_arg);
|
|
|
|
virtual const char* what() const noexcept // returns what_arg
|
|
};
|
|
|
|
} // std
|
|
|
|
*/
|
|
|
|
#if __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
|
|
# include <__cxx03/stdexcept>
|
|
#else
|
|
# include <__config>
|
|
# include <__exception/exception.h>
|
|
# include <__fwd/string.h>
|
|
# include <__verbose_abort>
|
|
|
|
# if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
|
|
# pragma GCC system_header
|
|
# endif
|
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
class _LIBCPP_HIDDEN __libcpp_refstring {
|
|
const char* __imp_;
|
|
|
|
bool __uses_refcount() const;
|
|
|
|
public:
|
|
explicit __libcpp_refstring(const char* __msg);
|
|
__libcpp_refstring(const __libcpp_refstring& __s) _NOEXCEPT;
|
|
__libcpp_refstring& operator=(const __libcpp_refstring& __s) _NOEXCEPT;
|
|
~__libcpp_refstring();
|
|
|
|
_LIBCPP_HIDE_FROM_ABI const char* c_str() const _NOEXCEPT { return __imp_; }
|
|
};
|
|
# endif // !_LIBCPP_ABI_VCRUNTIME
|
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
namespace std // purposefully not using versioning namespace
|
|
{
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI logic_error : public exception {
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
|
|
private:
|
|
std::__libcpp_refstring __imp_;
|
|
|
|
public:
|
|
explicit logic_error(const string&);
|
|
explicit logic_error(const char*);
|
|
|
|
logic_error(const logic_error&) _NOEXCEPT;
|
|
logic_error& operator=(const logic_error&) _NOEXCEPT;
|
|
|
|
~logic_error() _NOEXCEPT override;
|
|
|
|
const char* what() const _NOEXCEPT override;
|
|
# else
|
|
|
|
public:
|
|
explicit logic_error(const std::string&); // Symbol uses versioned std::string
|
|
_LIBCPP_HIDE_FROM_ABI explicit logic_error(const char* __s) : exception(__s) {}
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI runtime_error : public exception {
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
|
|
private:
|
|
std::__libcpp_refstring __imp_;
|
|
|
|
public:
|
|
explicit runtime_error(const string&);
|
|
explicit runtime_error(const char*);
|
|
|
|
runtime_error(const runtime_error&) _NOEXCEPT;
|
|
runtime_error& operator=(const runtime_error&) _NOEXCEPT;
|
|
|
|
~runtime_error() _NOEXCEPT override;
|
|
|
|
const char* what() const _NOEXCEPT override;
|
|
# else
|
|
|
|
public:
|
|
explicit runtime_error(const std::string&); // Symbol uses versioned std::string
|
|
_LIBCPP_HIDE_FROM_ABI explicit runtime_error(const char* __s) : exception(__s) {}
|
|
# endif // _LIBCPP_ABI_VCRUNTIME
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI domain_error : public logic_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit domain_error(const string& __s) : logic_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit domain_error(const char* __s) : logic_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI domain_error(const domain_error&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI domain_error& operator=(const domain_error&) _NOEXCEPT = default;
|
|
~domain_error() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI invalid_argument : public logic_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit invalid_argument(const string& __s) : logic_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit invalid_argument(const char* __s) : logic_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI invalid_argument(const invalid_argument&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI invalid_argument& operator=(const invalid_argument&) _NOEXCEPT = default;
|
|
~invalid_argument() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI length_error : public logic_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit length_error(const string& __s) : logic_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit length_error(const char* __s) : logic_error(__s) {}
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI length_error(const length_error&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI length_error& operator=(const length_error&) _NOEXCEPT = default;
|
|
~length_error() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI out_of_range : public logic_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit out_of_range(const string& __s) : logic_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit out_of_range(const char* __s) : logic_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI out_of_range(const out_of_range&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI out_of_range& operator=(const out_of_range&) _NOEXCEPT = default;
|
|
~out_of_range() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI range_error : public runtime_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit range_error(const string& __s) : runtime_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit range_error(const char* __s) : runtime_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI range_error(const range_error&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI range_error& operator=(const range_error&) _NOEXCEPT = default;
|
|
~range_error() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI overflow_error : public runtime_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit overflow_error(const string& __s) : runtime_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit overflow_error(const char* __s) : runtime_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI overflow_error(const overflow_error&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI overflow_error& operator=(const overflow_error&) _NOEXCEPT = default;
|
|
~overflow_error() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
class _LIBCPP_EXPORTED_FROM_ABI underflow_error : public runtime_error {
|
|
public:
|
|
_LIBCPP_HIDE_FROM_ABI explicit underflow_error(const string& __s) : runtime_error(__s) {}
|
|
_LIBCPP_HIDE_FROM_ABI explicit underflow_error(const char* __s) : runtime_error(__s) {}
|
|
|
|
# ifndef _LIBCPP_ABI_VCRUNTIME
|
|
_LIBCPP_HIDE_FROM_ABI underflow_error(const underflow_error&) _NOEXCEPT = default;
|
|
_LIBCPP_HIDE_FROM_ABI underflow_error& operator=(const underflow_error&) _NOEXCEPT = default;
|
|
~underflow_error() _NOEXCEPT override;
|
|
# endif
|
|
};
|
|
|
|
} // namespace std
|
|
|
|
_LIBCPP_BEGIN_NAMESPACE_STD
|
|
|
|
// in the dylib
|
|
[[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_runtime_error(const char*);
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_logic_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw logic_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("logic_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_domain_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw domain_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("domain_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_invalid_argument(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw invalid_argument(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("invalid_argument was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_length_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw length_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("length_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_out_of_range(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw out_of_range(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("out_of_range was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_range_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw range_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("range_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_overflow_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw overflow_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("overflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
[[__noreturn__]] inline _LIBCPP_HIDE_FROM_ABI void __throw_underflow_error(const char* __msg) {
|
|
# if _LIBCPP_HAS_EXCEPTIONS
|
|
throw underflow_error(__msg);
|
|
# else
|
|
_LIBCPP_VERBOSE_ABORT("underflow_error was thrown in -fno-exceptions mode with message \"%s\"", __msg);
|
|
# endif
|
|
}
|
|
|
|
_LIBCPP_END_NAMESPACE_STD
|
|
|
|
# if !defined(_LIBCPP_REMOVE_TRANSITIVE_INCLUDES) && _LIBCPP_STD_VER <= 20
|
|
# include <cstddef>
|
|
# include <cstdlib>
|
|
# include <exception>
|
|
# include <iosfwd>
|
|
# include <new>
|
|
# endif
|
|
#endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
|
|
|
|
#endif // _LIBCPP_STDEXCEPT
|