From d043fd1f1e9aad826f295cb6a7e5e09cf87e8b230ed565b6680c4a616f17a875 Mon Sep 17 00:00:00 2001 From: Dirk Stoecker Date: Tue, 15 Mar 2022 15:46:06 +0000 Subject: [PATCH] Accepting request 961861 from home:bmwiedemann:branches:games Add fix-i586-build.patch to fix build on i586 OBS-URL: https://build.opensuse.org/request/show/961861 OBS-URL: https://build.opensuse.org/package/show/games/0ad?expand=0&rev=118 --- 0ad.changes | 5 +++++ 0ad.spec | 5 ++++- fix-i586-build.patch | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 fix-i586-build.patch diff --git a/0ad.changes b/0ad.changes index 9934df9..c0272c3 100644 --- a/0ad.changes +++ b/0ad.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Sun Mar 13 11:57:58 UTC 2022 - Bernhard Wiedemann + +- Add fix-i586-build.patch to fix build on i586 + ------------------------------------------------------------------- Fri Mar 11 10:35:08 UTC 2022 - Dominique Leuenberger diff --git a/0ad.spec b/0ad.spec index 6d67e06..a371b64 100644 --- a/0ad.spec +++ b/0ad.spec @@ -22,7 +22,6 @@ %else %bcond_with nvtt %endif -ExcludeArch: %{ix86} # We can use the system mozjs on Tumbleweed and Leap 15.4. %if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400 %bcond_without system_mozjs @@ -47,6 +46,7 @@ Patch1: no-version-check.patch Patch2: PrepareZoneForGC.patch # PATCH-FIX-UPSTREAM -- Don't define M_PIf if glibc already provides it Patch3: glibc-2.35.patch +Patch4: fix-i586-build.patch BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: libXcursor-devel @@ -101,6 +101,9 @@ flexible game engine. %patch1 -p1 %patch2 -p1 %endif +%ifarch %{ix86} +%patch4 -p1 +%endif %build export CFLAGS="%{optflags}" diff --git a/fix-i586-build.patch b/fix-i586-build.patch new file mode 100644 index 0000000..39db30a --- /dev/null +++ b/fix-i586-build.patch @@ -0,0 +1,40 @@ +Date: 2022-03-13 +Author: Bernhard M. Wiedemann + +fix/workaround i586 build +https://bugzilla.opensuse.org/show_bug.cgi?id=1197065 + +It was segfaulting in premake5 because of a problem with gcc11 and the premake5 source +(gdb) bt +#0 0x5666a68b in ?? () +#1 0x565713e5 in luaL_requiref () +#2 0x5658e67f in luaL_openlibs () +#3 0x5656edc7 in main () + + +diff --git a/build/premake/premake5/contrib/lua/src/lapi.c b/build/premake/premake5/contrib/lua/src/lapi.c +index 02b7fab..cd4e176 100644 +--- a/build/premake/premake5/contrib/lua/src/lapi.c ++++ b/build/premake/premake5/contrib/lua/src/lapi.c +@@ -204,7 +204,7 @@ static void reverse (lua_State *L, StkId from, StkId to) { + ** Let x = AB, where A is a prefix of length 'n'. Then, + ** rotate x n == BA. But BA == (A^r . B^r)^r. + */ +-LUA_API void lua_rotate (lua_State *L, int idx, int n) { ++LUA_API __attribute__((noipa)) void lua_rotate (lua_State *L, int idx, int n) { + StkId p, t, m; + lua_lock(L); + t = L->top - 1; /* end of stack segment being rotated */ +diff --git a/build/premake/premake5/contrib/lua/src/lua.h b/build/premake/premake5/contrib/lua/src/lua.h +index c236e36..7d4aebb 100644 +--- a/build/premake/premake5/contrib/lua/src/lua.h ++++ b/build/premake/premake5/contrib/lua/src/lua.h +@@ -159,7 +159,7 @@ LUA_API int (lua_absindex) (lua_State *L, int idx); + LUA_API int (lua_gettop) (lua_State *L); + LUA_API void (lua_settop) (lua_State *L, int idx); + LUA_API void (lua_pushvalue) (lua_State *L, int idx); +-LUA_API void (lua_rotate) (lua_State *L, int idx, int n); ++LUA_API __attribute__((noipa)) void (lua_rotate) (lua_State *L, int idx, int n); + LUA_API void (lua_copy) (lua_State *L, int fromidx, int toidx); + LUA_API int (lua_checkstack) (lua_State *L, int n); +