Projects
home:yy:branches:Mega-LLVM:24.03
crash
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 11
View file
_service:tar_scm:crash.spec
Changed
@@ -1,6 +1,6 @@ Name: crash Version: 8.0.4 -Release: 4 +Release: 3 Summary: Linux kernel crash utility. License: GPLv3 URL: https://crash-utility.github.io @@ -11,7 +11,6 @@ Patch1: 0001-add-SDEI-stack-resolution.patch Patch2: 0002-crash-8.0.2-sw.patch Patch3: 0003-crash-8.0.4-add-support-for-loongarch64.patch -Patch4: 0004-gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch BuildRequires: ncurses-devel zlib-devel lzo-devel snappy-devel texinfo libzstd-devel BuildRequires: gcc gcc-c++ bison m4 @@ -51,7 +50,6 @@ %ifarch loongarch64 %patch3 -p1 %endif -%patch4 -p4 %build cp %{SOURCE1} . @@ -86,9 +84,6 @@ %{_mandir}/man8/crash.8* %changelog -* Sat Jul 27 2024 yanying <201250106@smail.nju.edu.cn> - 8.0.4-4 -- Backport gdbsupport ignore Wenum-constexpr-conversion in enum - * Tue May 28 2024 shaojiansong <shaojiansong@kylinos.cn> - 8.0.4-3 - Fix lack of loongarch64 and sw_64 patch files in src.rpm package which is build from any platform.
View file
_service:tar_scm:0004-gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch
Deleted
@@ -1,194 +0,0 @@ -From b5a7874ba9d6d189a695ceac306326d50adb4e67 Mon Sep 17 00:00:00 2001 -From: yanyir <goodonya.yy@gmail.com> -Date: Tue, 30 Jul 2024 22:04:15 +0800 -Subject: PATCH add - gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch - ---- - configure.c | 2 +- - ...e-Wenum-constexpr-conversion-in-enum.patch | 160 ++++++++++++++++++ - 2 files changed, 161 insertions(+), 1 deletion(-) - create mode 100644 gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch - -diff --git a/configure.c b/configure.c -index 08b52be..9cbe901 100644 ---- a/configure.c -+++ b/configure.c -@@ -261,7 +261,7 @@ struct supported_gdb_version { - "10.2", - "GDB_FILES=${GDB_10.2_FILES}", - "GDB_OFILES=${GDB_10.2_OFILES}", -- "GDB_PATCH_FILES=gdb-10.2.patch", -+ "GDB_PATCH_FILES=gdb-10.2.patch gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch", - "GDB_FLAGS=-DGDB_10_2", - "GPLv3" - }, -diff --git a/gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch b/gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch -new file mode 100644 -index 0000000..537c179 ---- /dev/null -+++ b/gdbsupport-ignore-Wenum-constexpr-conversion-in-enum.patch -@@ -0,0 +1,160 @@ -+From 8cbde735e40551a694d4ee5cfd4d525d3d77ff7e Mon Sep 17 00:00:00 2001 -+From: Simon Marchi <simon.marchi@efficios.com> -+Date: Thu, 23 Feb 2023 12:35:40 -0500 -+Subject: PATCH gdbsupport: ignore -Wenum-constexpr-conversion in -+ enum-flags.h -+ -+When building with clang 16, we get: -+ -+ CXX gdb.o -+ In file included from /home/smarchi/src/binutils-gdb/gdb/gdb.c:19: -+ In file included from /home/smarchi/src/binutils-gdb/gdb/defs.h:65: -+ /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/enum-flags.h:95:52: error: integer value -1 is outside the valid range of values 0, 15 for this enumeration type -Wenum-constexpr-conversion -+ integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type -+ ^ -+ -+The error message does not make it clear in the context of which enum -+flag this fails (i.e. what is T in this context), but it doesn't really -+matter, we have similar warning/errors for many of them, if we let the -+build go through. -+ -+clang is right that the value -1 is invalid for the enum type we cast -1 -+to. However, we do need this expression in order to select an integer -+type with the appropriate signedness. That is, with the same signedness -+as the underlying type of the enum. -+ -+I first wondered if that was really needed, if we couldn't use -+std::underlying_type for that. It turns out that the comment just above -+says: -+ -+ /* Note that std::underlying_type<enum_type> is not what we want here, -+ since that returns unsigned int even when the enum decays to signed -+ int. */ -+ -+I was surprised, because std::is_signed<std::underlying_type<enum_type>> -+returns the right thing. So I tried replacing all this with -+std::underlying_type, see if that would work. Doing so causes some -+build failures in unittests/enum-flags-selftests.c: -+ -+ CXX unittests/enum-flags-selftests.o -+ /home/smarchi/src/binutils-gdb/gdb/unittests/enum-flags-selftests.c:254:1: error: static assertion failed due to requirement 'gdb::is_same<selftests::enum_flags_tests::check_valid_expr254::archetype<enum_flags<s -+ elftests::enum_flags_tests::RE>, selftests::enum_flags_tests::RE, enum_flags<selftests::enum_flags_tests::RE2>, selftests::enum_flags_tests::RE2, enum_flags<selftests::enum_flags_tests::URE>, selftests::enum_fla -+ gs_tests::URE, int>, selftests::enum_flags_tests::check_valid_expr254::archetype<enum_flags<selftests::enum_flags_tests::RE>, selftests::enum_flags_tests::RE, enum_flags<selftests::enum_flags_tests::RE2>, selfte -+ sts::enum_flags_tests::RE2, enum_flags<selftests::enum_flags_tests::URE>, selftests::enum_flags_tests::URE, unsigned int>>::value == true': -+ CHECK_VALID (true, int, true ? EF () : EF2 ()) -+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ /home/smarchi/src/binutils-gdb/gdb/unittests/enum-flags-selftests.c:91:3: note: expanded from macro 'CHECK_VALID' -+ CHECK_VALID_EXPR_6 (EF, RE, EF2, RE2, UEF, URE, VALID, EXPR_TYPE, EXPR) -+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/valid-expr.h:105:3: note: expanded from macro 'CHECK_VALID_EXPR_6' -+ CHECK_VALID_EXPR_INT (ESC_PARENS (typename T1, typename T2, \ -+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ /home/smarchi/src/binutils-gdb/gdb/../gdbsupport/valid-expr.h:66:3: note: expanded from macro 'CHECK_VALID_EXPR_INT' -+ static_assert (gdb::is_detected_exact<archetype<TYPES, EXPR_TYPE>, \ -+ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -+ -+This is a bit hard to decode, but basically enumerations have the -+following funny property that they decay into a signed int, even if -+their implicit underlying type is unsigned. This code: -+ -+ enum A {}; -+ enum B {}; -+ -+ int main() { -+ std::cout << std::is_signed<std::underlying_type<A>::type>::value -+ << std::endl; -+ std::cout << std::is_signed<std::underlying_type<B>::type>::value -+ << std::endl; -+ auto result = true ? A() : B(); -+ std::cout << std::is_signed<decltype(result)>::value << std::endl; -+ } -+ -+produces: -+ -+ 0 -+ 0 -+ 1 -+ -+So, the "CHECK_VALID" above checks that this property works for enum flags the -+same way as it would if you were using their underlying enum types. And -+somehow, changing integer_for_size to use std::underlying_type breaks that. -+ -+Since the current code does what we want, and I don't see any way of doing it -+differently, ignore -Wenum-constexpr-conversion around it. -+ -+Change-Id: Ibc82ae7bbdb812102ae3f1dd099fc859dc6f3cc2 -+--- -+ gdbsupport/enum-flags.h | 3 +++ -+ include/diagnostics.h | 34 ++++++++++++++++++++++++++++++++++ -+ 2 files changed, 37 insertions(+) -+ -+diff --git a/gdbsupport/enum-flags.h b/gdbsupport/enum-flags.h -+index 9066ea6bd32..8926a779e83 100644 -+--- a/gdbsupport/enum-flags.h -++++ b/gdbsupport/enum-flags.h -+@@ -81,9 +81,12 @@ template<> struct integer_for_size<8, 1> { typedef int64_t type; }; -+ template<typename T> -+ struct enum_underlying_type -+ { -++ DIAGNOSTIC_PUSH -++ DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION -+ typedef typename -+ integer_for_size<sizeof (T), static_cast<bool>(T (-1) < T (0))>::type -+ type; -++ DIAGNOSTIC_POP -+ }; -+ -+ template <typename E> -+diff --git a/include/diagnostics.h b/include/diagnostics.h -+index 0f0a33c1a1e..c3d3ab9852c 100644 -+--- a/include/diagnostics.h -++++ b/include/diagnostics.h -+@@ -61,6 +61,24 @@ -+ # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL \ -+ DIAGNOSTIC_IGNORE ("-Wformat-nonliteral") -+ -++# if __has_warning ("-Wuser-defined-warnings") -++# define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS \ -++ DIAGNOSTIC_IGNORE ("-Wuser-defined-warnings") -++# endif -++ -++# if __has_warning ("-Wunused-but-set-variable") -++# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE \ -++ DIAGNOSTIC_IGNORE ("-Wunused-but-set-variable") -++# endif -++ -++# define DIAGNOSTIC_ERROR_SWITCH \ -++ DIAGNOSTIC_ERROR ("-Wswitch") -++ -++# if __has_warning ("-Wenum-constexpr-conversion") -++# define DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION \ -++ DIAGNOSTIC_IGNORE ("-Wenum-constexpr-conversion") -++# endif -++ -+ #elif defined (__GNUC__) /* GCC */ -+ -+ # if __GNUC__ >= 7 -+@@ -100,4 +118,20 @@ -+ # define DIAGNOSTIC_IGNORE_FORMAT_NONLITERAL -+ #endif -+ -++#ifndef DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS -++# define DIAGNOSTIC_IGNORE_USER_DEFINED_WARNINGS -++#endif -++ -++#ifndef DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE -++# define DIAGNOSTIC_IGNORE_UNUSED_BUT_SET_VARIABLE -++#endif -++ -++#ifndef DIAGNOSTIC_ERROR_SWITCH -++# define DIAGNOSTIC_ERROR_SWITCH -++#endif -++ -++#ifndef DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION -++# define DIAGNOSTIC_IGNORE_ENUM_CONSTEXPR_CONVERSION -++#endif -++ -+ #endif /* DIAGNOSTICS_H */ -+-- -+2.41.0.windows.1 -+ --- -2.41.0.windows.1 -
View file
_service
Changed
@@ -2,7 +2,7 @@ <service name="tar_scm"> <param name="scm">git</param> <param name="url">git@gitee.com:yanyir/crash.git</param> - <param name="revision">openEuler-24.03-LTS-yy</param> + <param name="revision">openEuler-24.03-LTS-yy1</param> <param name="exclude">*</param> <param name="extract">*</param> </service>
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2