[libc++] Enable -Wmissing-prototypes (#116261)
This commit is contained in:
parent
1ba23fff26
commit
3c100d5d54
@ -221,7 +221,7 @@ _LIBCPP_PUSH_MACROS
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
# if _LIBCPP_STD_VER >= 26 && defined(_LIBCPP_WIN32API)
|
||||
# if _LIBCPP_STD_VER >= 23 && defined(_LIBCPP_WIN32API)
|
||||
_LIBCPP_EXPORTED_FROM_ABI void* __filebuf_windows_native_handle(FILE* __file) noexcept;
|
||||
# endif
|
||||
|
||||
|
||||
@ -364,6 +364,8 @@ __atomic_notify_all_native<sizeof(__cxx_contention_t)>(void const* __location) n
|
||||
// =============================================================
|
||||
// Old dylib exported symbols, for backwards compatibility
|
||||
// =============================================================
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
||||
|
||||
_LIBCPP_EXPORTED_FROM_ABI void __cxx_atomic_notify_one(void const volatile* __location) noexcept {
|
||||
__atomic_notify_global_table(const_cast<void const*>(__location));
|
||||
@ -410,4 +412,6 @@ __libcpp_atomic_monitor(__cxx_atomic_contention_t const volatile* __location) no
|
||||
return __cxx_atomic_load(__location, memory_order_acquire);
|
||||
}
|
||||
|
||||
_LIBCPP_DIAGNOSTIC_POP
|
||||
|
||||
_LIBCPP_END_NAMESPACE_STD
|
||||
|
||||
@ -18,9 +18,12 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
namespace __itoa {
|
||||
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
||||
// These functions exist for ABI compatibility, so we don't ever want a declaration prior to the definition.
|
||||
_LIBCPP_EXPORTED_FROM_ABI char* __u32toa(uint32_t value, char* buffer) noexcept { return __base_10_u32(buffer, value); }
|
||||
|
||||
_LIBCPP_EXPORTED_FROM_ABI char* __u64toa(uint64_t value, char* buffer) noexcept { return __base_10_u64(buffer, value); }
|
||||
_LIBCPP_DIAGNOSTIC_POP
|
||||
|
||||
} // namespace __itoa
|
||||
|
||||
|
||||
@ -720,7 +720,7 @@ __get_sys_info(sys_seconds __time,
|
||||
// Iff the "offsets" are the same '__current.__end' is replaced with
|
||||
// '__next.__end', which effectively merges the two objects in one object. The
|
||||
// function returns true if a merge occurred.
|
||||
[[nodiscard]] bool __merge_continuation(sys_info& __current, const sys_info& __next) {
|
||||
[[nodiscard]] static bool __merge_continuation(sys_info& __current, const sys_info& __next) {
|
||||
if (__current.end != __next.begin)
|
||||
return false;
|
||||
|
||||
|
||||
@ -49,6 +49,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
|
||||
namespace chrono {
|
||||
|
||||
_LIBCPP_DIAGNOSTIC_PUSH
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes")
|
||||
// This function is weak so it can be overriden in the tests. The
|
||||
// declaration is in the test header test/support/test_tzdb.h
|
||||
_LIBCPP_WEAK string_view __libcpp_tzdb_directory() {
|
||||
@ -58,6 +60,7 @@ _LIBCPP_WEAK string_view __libcpp_tzdb_directory() {
|
||||
# error "unknown path to the IANA Time Zone Database"
|
||||
#endif
|
||||
}
|
||||
_LIBCPP_DIAGNOSTIC_POP
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Details
|
||||
|
||||
@ -16,6 +16,8 @@
|
||||
#include <__config>
|
||||
#include <climits>
|
||||
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes") // See the FIXME above
|
||||
|
||||
#if _LIBCPP_HAS_INT128
|
||||
|
||||
extern "C" __attribute__((no_sanitize("undefined"))) _LIBCPP_EXPORTED_FROM_ABI __int128_t
|
||||
|
||||
@ -197,7 +197,7 @@ struct __exponent_result {
|
||||
// __offset, 0, false. This allows using the results unconditionally, the
|
||||
// __present is important for the scientific notation, where the value is
|
||||
// mandatory.
|
||||
__exponent_result __parse_exponent(const char* __input, size_t __n, size_t __offset, char __marker) {
|
||||
static __exponent_result __parse_exponent(const char* __input, size_t __n, size_t __offset, char __marker) {
|
||||
if (__offset + 1 < __n && // an exponent always needs at least one digit.
|
||||
std::tolower(__input[__offset]) == __marker && //
|
||||
!std::isspace(__input[__offset + 1]) // leading whitespace is not allowed.
|
||||
@ -217,7 +217,7 @@ __exponent_result __parse_exponent(const char* __input, size_t __n, size_t __off
|
||||
}
|
||||
|
||||
// Here we do this operation as int64 to avoid overflow.
|
||||
int32_t __merge_exponents(int64_t __fractional, int64_t __exponent, int __max_biased_exponent) {
|
||||
static int32_t __merge_exponents(int64_t __fractional, int64_t __exponent, int __max_biased_exponent) {
|
||||
int64_t __sum = __fractional + __exponent;
|
||||
|
||||
if (__sum > __max_biased_exponent)
|
||||
|
||||
@ -14,6 +14,8 @@
|
||||
#include <cmath>
|
||||
#include <complex>
|
||||
|
||||
_LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wmissing-prototypes") // See comment above
|
||||
|
||||
template <class T>
|
||||
static std::__complex_t<T> mul_impl(T a, T b, T c, T d) {
|
||||
T __ac = a * c;
|
||||
|
||||
@ -144,7 +144,7 @@ int __snprintf(char* ret, size_t n, __locale_t loc, const char* format, ...) {
|
||||
// Like sprintf, but when return value >= 0 it returns
|
||||
// a pointer to a malloc'd string in *sptr.
|
||||
// If return >= 0, use free to delete *sptr.
|
||||
int __libcpp_vasprintf(char** sptr, const char* __restrict format, va_list ap) {
|
||||
static int __libcpp_vasprintf(char** sptr, const char* __restrict format, va_list ap) {
|
||||
*sptr = nullptr;
|
||||
// Query the count required.
|
||||
va_list ap_copy;
|
||||
|
||||
@ -62,6 +62,11 @@
|
||||
# define __ptrauth_scan_results_landingpad_intptr
|
||||
#endif
|
||||
|
||||
// The functions defined in this file are magic functions called only by the compiler.
|
||||
#ifdef __clang__
|
||||
# pragma clang diagnostic ignored "-Wmissing-prototypes"
|
||||
#endif
|
||||
|
||||
// TODO: This is a temporary workaround for libc++abi to recognize that it's being
|
||||
// built against LLVM's libunwind. LLVM's libunwind started reporting _LIBUNWIND_VERSION
|
||||
// in LLVM 15 -- we can remove this workaround after shipping LLVM 17. Once we remove
|
||||
@ -1120,9 +1125,6 @@ __gxx_personality_seh0(PEXCEPTION_RECORD ms_exc, void *this_frame,
|
||||
|
||||
#else
|
||||
|
||||
extern "C" _Unwind_Reason_Code __gnu_unwind_frame(_Unwind_Exception*,
|
||||
_Unwind_Context*);
|
||||
|
||||
// Helper function to unwind one frame.
|
||||
// ARM EHABI 7.3 and 7.4: If the personality function returns _URC_CONTINUE_UNWIND, the
|
||||
// personality routine should update the virtual register set (VRS) according to the
|
||||
|
||||
@ -106,6 +106,7 @@ namespace {
|
||||
|
||||
#endif // HAVE___CXA_THREAD_ATEXIT_IMPL
|
||||
|
||||
#if defined(__linux__) || defined(__Fuchsia__)
|
||||
extern "C" {
|
||||
|
||||
_LIBCXXABI_FUNC_VIS int __cxa_thread_atexit(Dtor dtor, void* obj, void* dso_symbol) throw() {
|
||||
@ -140,6 +141,6 @@ extern "C" {
|
||||
}
|
||||
#endif // HAVE___CXA_THREAD_ATEXIT_IMPL
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
#endif // defined(__linux__) || defined(__Fuchsia__)
|
||||
} // namespace __cxxabiv1
|
||||
|
||||
@ -831,6 +831,10 @@ bool __pointer_to_member_type_info::can_catch_nested(
|
||||
#pragma clang diagnostic ignored "-Wmissing-field-initializers"
|
||||
#endif
|
||||
|
||||
#pragma GCC diagnostic push
|
||||
// __dynamic_cast is called by the compiler, so there is no prototype
|
||||
#pragma GCC diagnostic ignored "-Wmissing-prototypes"
|
||||
|
||||
// __dynamic_cast
|
||||
|
||||
// static_ptr: pointer to an object of type static_type; nonnull, and since the
|
||||
@ -953,6 +957,8 @@ __dynamic_cast(const void *static_ptr, const __class_type_info *static_type,
|
||||
return const_cast<void*>(dst_ptr);
|
||||
}
|
||||
|
||||
#pragma GCC diagnostic pop
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
@ -125,8 +125,11 @@ _Unwind_VRS_Pop(_Unwind_Context *context, _Unwind_VRS_RegClass regclass,
|
||||
uint32_t discriminator,
|
||||
_Unwind_VRS_DataRepresentation representation);
|
||||
|
||||
extern _Unwind_Reason_Code __gnu_unwind_frame(_Unwind_Exception *,
|
||||
_Unwind_Context *);
|
||||
|
||||
#if defined(_LIBUNWIND_UNWIND_LEVEL1_EXTERNAL_LINKAGE)
|
||||
#define _LIBUNWIND_EXPORT_UNWIND_LEVEL1 extern
|
||||
#define _LIBUNWIND_EXPORT_UNWIND_LEVEL1 extern __inline__
|
||||
#else
|
||||
#define _LIBUNWIND_EXPORT_UNWIND_LEVEL1 static __inline__
|
||||
#endif
|
||||
|
||||
@ -200,7 +200,6 @@ unwind_phase1(unw_context_t *uc, unw_cursor_t *cursor, _Unwind_Exception *except
|
||||
}
|
||||
return _URC_NO_REASON;
|
||||
}
|
||||
extern int __unw_step_stage2(unw_cursor_t *);
|
||||
|
||||
#if defined(_LIBUNWIND_USE_GCS)
|
||||
// Enable the GCS target feature to permit gcspop instructions to be used.
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
// This file is only used for AIX.
|
||||
#if defined(_AIX)
|
||||
|
||||
#include "AddressSpace.hpp"
|
||||
#include "config.h"
|
||||
#include "libunwind_ext.h"
|
||||
#include <sys/debug.h>
|
||||
|
||||
@ -26,6 +26,7 @@ extern "C" {
|
||||
extern int __unw_getcontext(unw_context_t *);
|
||||
extern int __unw_init_local(unw_cursor_t *, unw_context_t *);
|
||||
extern int __unw_step(unw_cursor_t *);
|
||||
extern int __unw_step_stage2(unw_cursor_t *);
|
||||
extern int __unw_get_reg(unw_cursor_t *, unw_regnum_t, unw_word_t *);
|
||||
extern int __unw_get_fpreg(unw_cursor_t *, unw_regnum_t, unw_fpreg_t *);
|
||||
extern int __unw_set_reg(unw_cursor_t *, unw_regnum_t, unw_word_t);
|
||||
|
||||
@ -26,6 +26,7 @@ function(cxx_add_warning_flags target enable_werror enable_pedantic)
|
||||
-Wzero-length-array
|
||||
-Wdeprecated-redundant-constexpr-static-def
|
||||
-Wno-nullability-completeness
|
||||
-Wmissing-prototypes
|
||||
)
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang")
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user